From d66b79f468a3e18008ca798310747eaf0faa8d37 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 21 Aug 2002 00:04:06 +0000 Subject: [PATCH] added defaults test from v2-dev branch [SVN r15017] --- test/defaults.cpp | 111 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 test/defaults.cpp diff --git a/test/defaults.cpp b/test/defaults.cpp new file mode 100644 index 00000000..9e8170b5 --- /dev/null +++ b/test/defaults.cpp @@ -0,0 +1,111 @@ +// Copyright David Abrahams 2002. Permission to copy, use, +// modify, sell and distribute this software is granted provided this +// copyright notice appears in all copies. This software is provided +// "as is" without express or implied warranty, and with no claim as +// to its suitability for any purpose. +#include +#include +#include + +#if defined(_AIX) && defined(__EDG_VERSION__) && __EDG_VERSION__ < 245 +# include // works around a KCC intermediate code generation bug +#endif + +using namespace boost::python; +using namespace std; + +/////////////////////////////////////////////////////////////////////////////// +object +bar(int a, char b, std::string c, double d) +{ + list abcd; + abcd.append(a); + abcd.append(b); + abcd.append(c); + abcd.append(d); + return "int(%s); char(%s); string(%s); double(%s); " % tuple(abcd); +} + +object +bar(int a, char b, std::string c) +{ + list abcd; + abcd.append(a); + abcd.append(b); + abcd.append(c); + abcd.append(0.0); + return "int(%s); char(%s); string(%s); double(%s); " % tuple(abcd); +} + +object +bar(int a, char b) +{ + list abcd; + abcd.append(a); + abcd.append(b); + abcd.append("default"); + abcd.append(0.0); + return "int(%s); char(%s); string(%s); double(%s); " % tuple(abcd); +} + +object +bar(int a) +{ + list abcd; + abcd.append(a); + abcd.append('D'); + abcd.append("default"); + abcd.append(0.0); + return "int(%s); char(%s); string(%s); double(%s); " % tuple(abcd); +} + +BOOST_PYTHON_FUNCTION_GENERATOR(bar_stubs, bar, 1, 4) + +/////////////////////////////////////////////////////////////////////////////// +object +foo(int a, char b = 'D', std::string c = "default", double d = 0.0) +{ + list abcd; + abcd.append(a); + abcd.append(b); + abcd.append(c); + abcd.append(d); + return "int(%s); char(%s); string(%s); double(%s); " % tuple(abcd); +} + +BOOST_PYTHON_FUNCTION_GENERATOR(foo_stubs, foo, 1, 4) + +/////////////////////////////////////////////////////////////////////////////// + +struct X { + + object + bar(int a, char b = 'D', std::string c = "default", double d = 0.0) const + { + list abcd; + abcd.append(a); + abcd.append(b); + abcd.append(c); + abcd.append(d); + return "int(%s); char(%s); string(%s); double(%s); " % tuple(abcd); + } +}; + +BOOST_PYTHON_MEM_FUN_GENERATOR(X_bar_stubs, bar, 1, 4) + +/////////////////////////////////////////////////////////////////////////////// + +BOOST_PYTHON_MODULE_INIT(defaults_ext) +{ + module m("defaults_ext"); + m.def("foo", foo, foo_stubs()); + m.def("bar", signature(), bar_stubs()); + + class_ xc("X"); + m.add(xc); + + xc.def_init(); + xc.def("bar", X::bar, X_bar_stubs()); +} + +#include "module_tail.cpp"