2008/3/20, Joris De Ridder <[EMAIL PROTECTED]>:
>
>
> > 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 :
struct MyClass
{
MyClass(float* data, int dim, ...)
:container(data, dim)
void method()
{
// Modify container
}
private:
MyContainer container;
};
If the MyContainer class wraps the data array without copying it, if in
Python, you wrap it like :
class MyClass:
def __init__(self, data):
self._inst = #use a C bridge to create a new MyClass from data
def method(self):
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
segmentation faults).
> 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.
>
OK ;)
Matthieu
--
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
_______________________________________________
Numpy-discussion mailing list
[email protected]
http://projects.scipy.org/mailman/listinfo/numpy-discussion