chris wrote: > This is my first attempt at undertaking a C extension module. I want > to wrap an existing C library so I can call the functions from Python. > There are only two functions I'm interested in calling. I did mess > with Pyrex a bit and Swig, to no avail, so I turned to doing it by > hand. Using the example in Programming Python, I did get the easier of > the two functions working--only takes a string parameter. I'm stuck > now on the other function and not sure how to wrap it, because it > involves some structs. Here's a simplified version of the C: > > struct In > { > int x; > char* s; > ... (only primitive data types) > }; > > struct Out > { > int y; > char* s; > ... (only primitive data types) > }; > > Out* func(In* x, Out* y); > > So the function takes pointers to the two structs, and fills out the > output struct and also returns the pointer to it. I would envision the > Python looking like > > in = In() > in.y = 1 > in.s = "abc" > ... > > out = func(in) > > maybe? Just no idea how to deal with the structs in the C extension > module code.
It's *not* a straightforward task. You have to define an extension type. See http://docs.python.org/ext/defining-new-types.html However, Pyrex really does make defining extension types much, much easier. I highly suggest trying to debug your Pyrex code before learning all of the boilerplate necessary to create extension types in pure C. -- Robert Kern [EMAIL PROTECTED] "In the fields of hell where the grass grows high Are the graves of dreams allowed to die." -- Richard Harter -- http://mail.python.org/mailman/listinfo/python-list