CARVIEW |
Select Language
HTTP/2 200
date: Fri, 18 Jul 2025 11:54:29 GMT
server: Apache/2.4.41 (Ubuntu)
vary: Cookie,User-Agent,Accept-Encoding
set-cookie: MOIN_SESSION_443_ROOT_moin=75aa78842db2f8ec7885fda71637800aa15723ef; Expires=Fri, 18-Jul-2025 12:54:00 GMT; Max-Age=3600; Secure; Path=/
content-encoding: gzip
content-type: text/html; charset=utf-8
x-clacks-overhead: GNU Terry Pratchett
strict-transport-security: max-age=315360000; includeSubDomains; preload
boost.python/FunctionOverloading - Python Wiki
From https://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 )
For global functions and for static methods.
BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS( overloadsname , classname::methodname, arg_minimum, arg_maximum )
For class methods.
Sample :
#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; } int returnsame(int x=5) { return x+localval; } static int returnsum(int m,int x=10) { return m+x; } int localval; }; 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" ) ) .def("returnsum", &X::returnsum, X_returnsum_overloads( args("x","m"), "returnsum's docstring" ) ) .staticmethod("returnsum") ; }
boost.python/FunctionOverloading (last edited 2009-12-01 16:39:52 by tomato)
Unable to edit the page? See the FrontPage for instructions.