summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/python/test/keywords.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/python/test/keywords.cpp')
-rw-r--r--src/boost/libs/python/test/keywords.cpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/src/boost/libs/python/test/keywords.cpp b/src/boost/libs/python/test/keywords.cpp
new file mode 100644
index 000000000..39bac0627
--- /dev/null
+++ b/src/boost/libs/python/test/keywords.cpp
@@ -0,0 +1,118 @@
+// Copyright David Abrahams 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+#include <boost/python.hpp>
+#include <string>
+
+struct Foo
+{
+ Foo(
+ int a = 0
+ , double b = 0
+ , const std::string &n = std::string()
+ ) :
+ a_(a)
+ , b_(b)
+ , n_(n)
+ {}
+
+ void set(int a=0, double b=0, const std::string &n=std::string())
+ {
+ a_ = a;
+ b_ = b;
+ n_ = n;
+ }
+
+ int geta() const { return a_; }
+
+ double getb() const { return b_; }
+
+ std::string getn() const { return n_; }
+
+private:
+ int a_;
+ double b_;
+ std::string n_;
+};
+
+struct Bar
+{
+ Bar(
+ int a = 0
+ , double b = 0
+ , const std::string &n = std::string()
+ ) :
+ a_(a)
+ , b_(b)
+ , n_(n)
+ {}
+
+ void set(int a=0, double b=0, const std::string &n=std::string())
+ {
+ a_ = a;
+ b_ = b;
+ n_ = n;
+ }
+
+ void seta(int a)
+ {
+ a_ = a;
+ }
+
+ int geta() const { return a_; }
+
+ double getb() const { return b_; }
+
+ std::string getn() const { return n_; }
+
+private:
+ int a_;
+ double b_;
+ std::string n_;
+};
+
+BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(bar_set, Bar::set, 0,3)
+
+using namespace boost::python;
+BOOST_PYTHON_MODULE(keywords)
+{
+#if BOOST_WORKAROUND(__GNUC__, == 2)
+ using boost::python::arg;
+#endif
+
+ class_<Foo>(
+ "Foo"
+ , init<int, double, const std::string&>(
+ ( arg("a") = 0
+ , arg("b") = 0.0
+ , arg("n") = std::string()
+ )
+ ))
+
+ .def("set", &Foo::set, (arg("a") = 0, arg("b") = 0.0, arg("n") = std::string()) )
+
+ .def("set2", &Foo::set, (arg("a"), "b", "n") )
+
+ .def("a", &Foo::geta)
+ .def("b", &Foo::getb)
+ .def("n", &Foo::getn)
+ ;
+
+ class_<Bar>("Bar"
+ , init<optional<int, double, const std::string &> >()
+ )
+ .def("set", &Bar::set, bar_set())
+ .def("set2", &Bar::set, bar_set("set2's docstring"))
+ .def("seta", &Bar::seta, arg("a"))
+
+ .def("a", &Bar::geta)
+ .def("b", &Bar::getb)
+ .def("n", &Bar::getn)
+ ;
+
+}
+
+
+
+#include "module_tail.cpp"