// // Copyright (C) 2003 Rational Discovery LLC // #include namespace python = boost::python; // ------ // // This one is relatively easy: // expose a function with a default argument // // ------ int func2(int v1,int plus=3); int func2(int v1,int plus) {return v1+plus;}; BOOST_PYTHON_FUNCTION_OVERLOADS(f2_overloads, func2, 1, 2) // ------ // // More complex: // expose a templated function with a default argument // // ------ template T func(T v1,int plus=3); template T func(T v1,int plus) { return v1+plus; } int (*f1_int)(int,int=3)=func; // gotta love that syntax! BOOST_PYTHON_FUNCTION_OVERLOADS(f1_int_overloads, f1_int, 1, 2) float (*f1_float)(float,int=3)=func; BOOST_PYTHON_FUNCTION_OVERLOADS(f1_float_overloads, f1_float, 1, 2) BOOST_PYTHON_MODULE(overloads) { python::def("f2",func2,f2_overloads(python::args("v1","plus"))); python::def("f1",f1_int,f1_int_overloads(python::args("v1","plus"))); python::def("f1",f1_float,f1_float_overloads(python::args("v1","plus"))); }