Richard Shaw wrote: > Hello, > > Forgive me if this is a stupid question, I've been looking around all > the Cython documentation and I can't find out if this is possible. > > What I would like to do is generally is wrap a C function that takes a > double array, and be able to pass in a numpy array, I was wondering if > it's possible to do this using the buffer interface? I understand I > could do it using this method (http://wiki.cython.org/WrappingNumpy), > but the buffer interface seems much neater.
Questions like this should be posted to the Cython list (otherwise us Cython developers might easily ignore it, we do not follow everything that goes on in numpy-discussion). > Specifically, I have a C function that I would like to wrap with signature: > > #### cfile.h > double do_something(double * array, int len); > > I was hoping with the buffer interface, I could do something like this: > > #### pyfile.pyx > import numpy > cimport numpy > > cdef extern from "cfile.h" > double do_something(double * array, int len) > > cdef do_something_python(numpy.ndarray[numpy.float64, ndim = 1] numarr): numpy.float64_t, currently at least. > cdef double x > cdef double * data > cdef int l > > data = ... # Not sure what to do here > l = numarr.shape[0] Yes, I understand this. I definitely plan to make this easier in a coming Cython release, i.e. something like cimport cython ... data = cython.buffer.bufptr(array) I just haven't got there yet. For now, there's an ugly hack you can do (untested though): your_header.h: #define GET_BUFPTR_HACK(x) __pyx_bstruct_#x.buf yourfile.pyx: cdef extern from "your_header.h": void* GET_BUFPTR_HACK(x) ... data = GET_BUFPTR_HACK(buf) (The reason this is so horribly ugly is the "#x" in the macro, meaning this depends very much of the particular mangling scheme used. This will likely break in a future version of Cython, but then cython.buffer.butptr should be available.) -- Dag Sverre _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion