Nathan, if you want to take a boost::numeric::ublas::vector instead of std::vector, you can use my library (mds-utils, the link is at the end of this e-mail), which already provides the proper converters.
Bye, Michele 2010/5/25 Jim Bosch <tallji...@gmail.com>: > On 05/24/2010 03:00 PM, Nathan Cournia wrote: >> >> Basically, the desired behavior is to have a C++ function which >> accepts a vector in C++; accept a tuple/list when in Python. >> >> I'm not sure if the FAQ is up-to-date. Is this still not possible in >> boost.python? How do people generally get the behavior I outlined >> above? >> >> > > In general, you'll have to write your own custom wrapper that takes a > boost::python::object argument, and wrap that, to get this behavior: > > > void py_foo(boost::python::object const & py_array) { > std::vector<int> array; > // <copy py_array into array> > foo(array); > // <copy array back into py_array> > } > > boost::python::def("foo", &py_foo); > > > The copies are unavoidable if your C++ function takes a container, rather > than a templated iterator range, simply because your Python object doesn't > actually contain a std::vector. If you can work with an iterator range, > check out my from_python_iterator class, part of the Python extensions in > the boost sandbox: > > https://svn.boost.org/trac/boost/browser/sandbox/python_extensions/boost/python/from_python/iterator.hpp > > Along with the to-python iterator found in the main Boost.Python > distribution, it should also help in the case where you have to make copies. > > HTH > > Jim Bosch > > > _______________________________________________ > Cplusplus-sig mailing list > Cplusplus-sig@python.org > http://mail.python.org/mailman/listinfo/cplusplus-sig > -- Michele De Stefano http://www.linkedin.com/in/micdestefano http://code.google.com/p/mds-utils http://xoomer.virgilio.it/michele_de_stefano _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig