[C++-sig] Conversion between boost::tuple and a python tuple
Ralf W. Grosse-Kunstleve
rwgk at yahoo.com
Thu Jan 27 00:48:00 CET 2005
--- Colin Irwin <colin_irwin at hotmail.com> wrote:
> void foo( boost::tuple<int, int, int> int_tuple );
> ...
>
> All help would be much appreciated. The BPL is perfect for what I would
> like to do, however, I feel I'm lacking a bit of understanding.
You have the right ideas. The problem is there is not "the one best" answer.
If you have only one function like foo, write a "thin wrapper," i.e. a
standalone function similar to:
void
foo_wrapper(ExampleClass& self, boost::python::tuple int_tuple)
{
// assert len(int_tuple) == 3
// loop over elements of the tuple
// use boost::python::extract<int>, copy value to boost_int_tuple
self.foo(boost_int_tuple);
}
...
class_<ExampleClass>(...)
.def("foo", foo_wrapper)
;
Note that the standalone C++ function is wrapped as a Python member function.
If you have many functions with int_tuple arguments you want to think about
writing a custom converter. This is an advanced subject, but we can walk you
through. In any case, try the thin wrapper first. You can use it as a starting
point for a custom converter.
Cheers,
Ralf
__________________________________
Do you Yahoo!?
Yahoo! Mail - You care about security. So do we.
http://promotions.yahoo.com/new_mail
More information about the Cplusplus-sig
mailing list