Need help with C extension module
Robert Kern
rkern at ucsd.edu
Wed Sep 7 20:05:50 EDT 2005
chris wrote:
> Any tips on what the pyrex should look like for my example?
# Untested and off the top of my head; please read the Pyrex
# documentation and correct my mistakes before using any of this!
# Notably, I'm pretty sure the __init__ and __dealloc__ bits are
# slightly wrong.
cdef extern from "Python.h":
void *PyMem_Malloc(unsigned int size)
void PyMem_Free(void *buf)
ctypedef struct In:
int x
char *s
# ...
ctypedef struct Out:
int y
char *s
# ...
cdef Out *func(Int *x, Out *y)
cdef class Output:
cdef Out *output
def __init__(self):
self.output = <Out*>PyMem_Malloc(sizeof(Out))
def __dealloc__(self):
PyMem_Free(self.output)
property y:
def __get__(self):
return self.output.y
# ...
cdef class Input:
cdef In *input
def __init__(self):
self.input = <In*>PyMem_Malloc(sizeof(In))
def __dealloc__(self):
PyMem_Free(self.input)
property x:
def __get__(self):
return self.input.x
def __set__(self, value):
self.input.x = value
# ...
def func(self):
output = Output()
func(self.input, output.output)
return output
--
Robert Kern
rkern at ucsd.edu
"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
More information about the Python-list
mailing list