bienstman1.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright David Abrahams 2004. Distributed under the Boost
  2. // Software License, Version 1.0. (See accompanying
  3. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  4. #include <boost/python/module.hpp>
  5. #include <boost/python/def.hpp>
  6. #include <boost/python/class.hpp>
  7. #include <boost/python/reference_existing_object.hpp>
  8. #include <boost/python/return_value_policy.hpp>
  9. struct A {};
  10. struct V
  11. {
  12. virtual ~V() {}; // silence compiler warningsa
  13. virtual void f() = 0;
  14. const A* inside() {return &a;}
  15. A a;
  16. };
  17. const A* outside(const V& v) {return &v.a;}
  18. BOOST_PYTHON_MODULE(bienstman1_ext)
  19. {
  20. using namespace boost::python;
  21. using boost::shared_ptr;
  22. using boost::python::return_value_policy;
  23. using boost::python::reference_existing_object;
  24. class_<A>("A");
  25. class_<V, boost::noncopyable>("V", no_init)
  26. .def("inside", &V::inside,
  27. return_value_policy<reference_existing_object>())
  28. .def("outside", outside,
  29. return_value_policy<reference_existing_object>())
  30. ;
  31. }