Hello all,
I have recently started using cython for a project that I am working on.
First, understand that I am relatively new to python, let alone cython which
I started to delve into today. Anyway... for this project, I need to
dynamically allocate memory for a 2D array (a la malloc(...)).
Unfortunately, I have become confused with what might be a scope issue,
however I am unsure. I will start with a quick example of my problem:
********************************************** Code
*****************************************************
# gain access to malloc, free, etc
cdef extern from "stdlib.h":
ctypedef unsigned long size_t
void free(void *ptr)
void *malloc(size_t size)
void *realloc(void *ptr, size_t size)
size_t strlen(char *s)
char *strcpy(char *dest, char *src)
cdef struct Point:
int x
int y
cdef struct CalBox:
Point *upperLeft
Point *upperRight
Point *lowerRight
Point *lowerLeft
cdef CalBox **calMat
def initMatrix(numRows = 6, numCols = 8):
calMat = <CalBox**>malloc(numCols*sizeof(CalBox*))
for i in range(numCols):
calMat[i] = <CalBox*>malloc(numRows*sizeof(CalBox))
****************************************************************************************************************
As you can see, I define calMat outside of any function such that its scope
is not limited: any function in the module *should* be able to access its
contents. When I attempt compile the example, however, I get an error
stating: "Cannot convert 'CalBox *' to Python object"
This, to me, would seem to imply that the function is not "seeing" calMat
and thus is trying to create a new python object. Furthermore, this only
seems to happen with pointers; defining C-style integers or python objects
in the main body of the module seem to be perfectly accessable. I have done
quite a bit of searching and tweaking, but nothing has worked.
I expect it is a something simple that i have overlooked, however if anyone
could help, I would greatly appreciate it... In the meantime I guess Ill
have to keep the matrix at a predefined size.
Thanks,
Andy
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev