[Cython] Sending pointers as arguments between functions
Robert Bradshaw
robertwb at math.washington.edu
Tue Jan 20 21:39:08 CET 2009
On Jan 20, 2009, at 12:35 PM, Ilmar Wilbers wrote:
> Hi,
>
> Would it be possible to send a pointer from one function to
> another? For
> instance if I have the following function:
> def array2vector(a):
> cdef float *p = <DTYPE_t*>a.data
> cdef float *v = vector(1, a.shape[0])
> for i in range(a.shape[0]):
> v[i+1] = a[i]
> return <object>p
>
> is it then possible to grab this pointer in another function:
> cdef float *p = <float*>array2vector(a)
>
> at all? If so, how, because trying the above gives me the error
> Casting temporary Python object to non-numeric non-Python type
Yes, you either have to make it a cdef function (where the arguments
and return type can be declared to be float*) or wrap it in another
object (such as a numpy array).
- Robert
More information about the Cython-dev
mailing list