[Pyrex] Passing struct between C function
Nicolas Pernetty
nicopernetty at yahoo.fr
Tue Nov 8 01:30:31 CET 2005
Even in my dreams, I wouldn't have thought that the solution would be so
easy and elegant !
Thanks so much,
*********** REPLY SEPARATOR ***********
On Sat, 05 Nov 2005 09:09:10 -0800, "Lenard Lindstrom"
<len-l at telus.net> wrote :
> The OO solution is to build an extension type around the structure
> and call foo_A and foo_B from methods.
>
> cdef class C:
> cdef some_big_struct s
>
> def __new__(self, a, b, c):
> foo_A(&self.s, a, b, c)
>
> def do_foo_B(self, d, e, f):
> foo_B(&self.s, d, e, f)
>
> Now all memory management is done by Pyrex and Python.
>
> Lenard Lindstrom
> <len-l at telus.net>
>
> On 5 Nov 2005 at 15:21, Nicolas Pernetty wrote:
>
> > Hello,
> >
> > I would like to use some C functions within Python by using Pyrex
> > but I don't know how to overcome one major difficulty.
> >
> > I have 2 C-functions foo_A and foo_B.
> >
> > foo_A read some conf/data files and put all data in one major and
> > overcomplicated structure (which contain other structures and so on)
> >
> > foo_B get this famous structure and other parameters to compute some
> > outputs.
> >
> > Basically you only have to call foo_A once (to initialize the
> > structure) and after you can call foo_B as many times you want.
> >
> > Now I don't know how to make pyrex wrappers to use foo_A and foo_B
> > because of the structure.
> >
> > One solution I'm think about is to malloc'ed some area in memory to
> > contain the structure and only send to foo_B the pointer to this
> > memory (and after use a cast to convert) but I also don't know how
> > to use pointer with Pyrex (I mean passing one pointer to one Pyrex
> > function to another).
> >
> > Does someone has made something like this ? If yes I would really
> > like an example...
> >
>
>
> _______________________________________________
> Pyrex mailing list
> Pyrex at lists.copyleft.no
> http://lists.copyleft.no/mailman/listinfo/pyrex
More information about the Pyrex
mailing list