[Numpy-discussion] C++ class encapsulating ctypes-numpy array?
Thu Mar 20 09:39:20 CDT 2008
2008/3/20, Joris De Ridder <Joris.DeRidder@ster.kuleuven.be>:
> > You can use ctypes if and ony if the C++ object is only used in one
> > function call. You can't for instance create a C++ container with
> > ctypes, then in Python call some method and then delete the
> > container, because ctypes will destroy the data after the C++
> > container was built. This is the only drawback of ctypes.
> I'm not sure I understand. Could you perhaps give a pointer for
> additional info, or an example?
Suppose you have a C++ class :
MyClass(float* data, int dim, ...)
// Modify container
If the MyContainer class wraps the data array without copying it, if in
Python, you wrap it like :
def __init__(self, data):
self._inst = #use a C bridge to create a new MyClass from data
wrapMethod(self._inst) #wrapper around method from MyClass
after you create a new Python MyClass, your actual data inside the C++ class
will be freed and thus you have reads or writes errors (and thus can lead to
> When it comes to strides, you have to divide them by the size of
> > your data : the stride is counted in bytes and not in short/float/...
> Yep, I did this on the Python side. Thanks for the remark, though.
French PhD student
Website : http://matthieu-brucher.developpez.com/
Blogs : http://matt.eifelle.com and http://blog.developpez.com/?blog=92
LinkedIn : http://www.linkedin.com/in/matthieubrucher
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Numpy-discussion