[C++-sig] Boost Python: C++ struct with a function pointer
Jim Bosch
talljimbo at gmail.com
Tue Mar 2 21:03:26 CET 2010
On Tue, 2010-03-02 at 16:39 +0530, puneet goel wrote:
> Greetings
>
> I am boost.python newbie. I tried searching the web for a solution but
> could not find one.
> I am trying to generate Python Bindings for a C++ API. The API has
> some data structures with a set function pointers as its members.
>
> struct foo {
> public:
> int a, b;
> char *str;
>
> int (*func1) ();
> int (*func2) ();
> };
>
> I am wondering if it is possible to bind this struct to Python. Let me
> know how this can be done.
>
If you just need your Python interface to support calling those function
pointers, not adding new functions in Python, it's relatively easy. In
particular, boost::python::make_function takes a C++ function pointer
and returns a callable Python, so you can do something like this:
namespace bp = boost::python;
bp::object foo_get_func1(foo & self) {
return bp::make_function(self.func1);
}
bp::class_<foo>("foo")
.add_property("func1", foo_get_func1)
;
I haven't tested that snippet, so it may need some tweaks. But
hopefully it will get you started.
Jim Bosch
More information about the Cplusplus-sig
mailing list