On 19 Apr 2007 00:37:36 -0700, Stou Sandalski <[EMAIL PROTECTED]> wrote:
Hi, I have a python library created by wrapping the C++ library using Boost.Python, the problem is that the wrappers are not very pythonic.... so I want to add some methods that do not exist in the C+ + implementation, that would create a better Python interface. For example to initialize the data in an object in the library one must iterate through every point, setting a value for each individually. That's the way it works in C++ but in python it would be nice to instead just have one call that can receive a numpy array or a tuple. I want to add a call like: setData(array) to the python object, a call that does not exist in the C++ implementation and then in the C++ wrappers actually use setData to iterate through the array and set the values using the normal C++ method, say setValue(index, value). Something along the lines of this (initData is not in the constructor on purpose) C++ object: class Foo { public: void initData(int size) { data = new float[size]; }; // Create the data array void setValue(int index, float value) // Set given value { data[index] = value; } private: float *data; }; In python however I want to do this: obj = foo() ar = array([1,2,3,4,5], dtype=float) foo.setData(ar) Or even better: ar = array([1,2,3,4,5], dtype=float) obj = foo(ar) And have it somehow call initData() and setValue() iteration inside the C++ code of the wrapper. I've only used SWIG and don't really know much about Boost, I am not even sure how to label what I am trying to do. Can this be done with Boost, without changing the C++ library?
Take a look on next link: http://boost.org/libs/python/doc/tutorial/doc/html/python/techniques.html#python.extending_wrapped_objects_in_python Regards,
Stou -- http://mail.python.org/mailman/listinfo/python-list
-- Roman Yakovenko C++ Python language binding http://www.language-binding.net/
-- http://mail.python.org/mailman/listinfo/python-list