[C++-sig] pyste - integration

Jason.Sibthorpe at aculab.com Jason.Sibthorpe at aculab.com
Thu Sep 11 18:36:27 CEST 2003


Hi,

Synopsis :

I want to know how/if I can integrate my code
with pyste to take advantage of its knowledge of function
arguments so they don't have to be passed to  wrap_out_arg
below.

Detail :

I have written a noddy code generator that takes

wrap_out_arg("test.h", "foo", "char *I, int *O")

(for any number of input args where 'O' indicates
that it is an output argument, and the type is simple
- the type need not be simple but if it aint then the result 
might not compile)

and generates

tuple return_args_wrapper(char * in0)
        {
        	int * out0;
        	return make_tuple(foo(in0, out0), 
        				 out0);
        }

as a wrapper for
const char *foo(char *str, int *num)
{...}

where num is an output argument.

It is based on the example supplied by Nicodemus.
http://mail.python.org/pipermail/c++-sig/2003-September/005393.html

foo_wrapper = Wrapper('foo_wrapper',
'''
tuple foo_wrapper(in_type in)
{
    out_type2 out2;
    out_type1 out1 = foo(in, out2);
    return make_tuple(out1, out2);
}
''')
foo = Function(...)
set_wrapper(foo, foo_wrapper)


=====

I found that I had to have my code in the .pyste file (I could not
import my module).  When attempting the import I got the following
error

    set_wrapper(Function(self.func, self.header),
TypeError: __init__() takes at least 5 arguments (3 given)

Which is bizarre.  If I add None, None I get a bit further.

    Wrapper(wrapper_name, code))
NameError: global name 'Wrapper' is not defined

even though I explicitly import exporterutils
from exporterutils import *

Changing the name from Wrapper to FunctionWrapper results in
  File
"/home/jason/src/boost_cvs/boost/libs/python/pyste/src/Pyste/infos.py", line
212, in set_wrap
per
    info._Attribute('wrapper', wrapper)
AttributeError: 'Function' object has no attribute '_Attribute'

At this point I give up.  I suppose my question is, is this related to
the execfile(interface, context) call in ExecuteInterface?  I assume it
is something to do with the context in which my module is imported, mmm...
I don't know enough python.

=====

I would like to integrate this code with pyste to take advantage
of its knowledge of the declaration so users of wrap_out_arg
need only specify the out args.  Is this possible?

Daniel Wallin mentions Lua 
http://mail.python.org/pipermail/c++-sig/2003-September/005394.html
Is what I am attempting going to be soon unnecessary?



Jason Sibthorpe
Software Engineer
Aculab 
Tel: +44 (0) 1908 273 869
Fax: +44 (0) 1908 273 801
Email: jason.sibthorpe at aculab.com
Website: <http://www.aculab.com>





More information about the Cplusplus-sig mailing list