From http://www.boost.org/doc/libs/1_37_0/libs/python/doc/v2/overloads.html
Few methods and functions have parameters by default.
To send this information to boost::python, you need to call theses instructions :
BOOST_PYTHON_FUNCTION_OVERLOADS( overloadsname , functionname , arg_minimum, arg_maximum ) BOOST_PYTHON_FUNCTION_OVERLOADS( overloadsname , classname::staticmethodname , arg_minimum, arg_maximum )
Pour les fonctions globales et pour les méthodes statiques des classes.
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS( overloadsname , classname::methodname, arg_minimum, arg_maximum )
Pour les méthodes des classes.
Example :
#include <boost/python/module.hpp> #include <boost/python/def.hpp> #include <boost/python/args.hpp> #include <boost/python/tuple.hpp> #include <boost/python/class.hpp> #include <boost/python/overloads.hpp> #include <boost/python/return_internal_reference.hpp>
using namespace boost::python;
tuple f(int x = 1, double y = 4.25, char const* z = "wow") {
- return make_tuple(x, y, z);
}
BOOST_PYTHON_FUNCTION_OVERLOADS(f_overloads, f, 0, 3)
class X {
X( const int& _loc) {
- localval=_loc;
- return x+localval;
- return m+x;
};
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(X_returnsame_overloads, X::returnsame, 0, 1) BOOST_PYTHON_FUNCTION_OVERLOADS(X_returnsum_overloads, X::returnsum, 1, 2)
BOOST_PYTHON_MODULE(args_ext) {
- def("f", f,
- f_overloads(
- args("x", "y", "z"), "This is f's docstring"
class_<X>("X", init<int>())
def("returnsame", &X::returnsame,
- X_returnsame_overloads(
- args("x"), "returnsame's docstring"
- X_returnsame_overloads(
def("returnsum", &X::returnsum,
- X_returnsum_overloads( args("x","m"), "returnsum's docstring"
- )
- staticmethod("returnsum") ;
- f_overloads(
}