123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- // 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"
|