On Mon, Feb 1, 2010 at 5:22 PM, Charles Solar <charlesso...@gmail.com> wrote: > I have a method that takes a boost function object as so > > bool createTimer( boost::int64_t interval, boost::function< bool() > > function, bool recurring = false ) > > that I would like to call in python. I tried exporting the class in Py++ > but it did not look like it does anything special with that argument.
Py++ generates the wrong code in this situation. It definitely could do better job. > > which btw there is an error here in Py++, ::boost::function< bool ()() > > should be ::boost::function< bool () > Hmm. This is how gccxml reports the class name. I will take a look on this bug. > that code also fails in python with the same error. > > I have seen the page here > http://wiki.python.org/moin/boost.python/HowTo#boost.functionobjects about > boost function objects but I do not think that is exactly what I am looking > for. > > If there an easy way to get python to work with this function definition? > Or am I trying to do something stupid? No, I would call this a "challenge". The following is just an untested idea: 1. create the following class: class callback_wrapper_t{ callback_wrapper_t( boost::python::object callable ){ store it in the class} bool operator()( bool ){ call the function } } 2. create a wrapper bool createTimerWrapper( boost::int64_t interval, boost::python::object function, bool recurring = false ){ createTimer( interval, boost::function<bool>( callback_wrapper_t( function ) ), recurring ) } 3. Register the createTimerWrapper I think this could work. May be there is a better way. If you have a lot of functions like this and the idea works, I can help you to generate it with Py++. -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig