[C++-sig] automatic conversion of tuple to vector

Michele De Stefano micdestefano at gmail.com
Tue May 25 09:06:35 CEST 2010


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 <talljimbo at 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 at 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


More information about the Cplusplus-sig mailing list