operators_wrapper.cpp 809 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "boost/python.hpp"
  2. #include <memory>
  3. struct vector
  4. {
  5. virtual ~vector() {}
  6. vector operator+( const vector& ) const
  7. { return vector(); }
  8. vector& operator+=( const vector& )
  9. { return *this; }
  10. vector operator-() const
  11. { return *this; }
  12. };
  13. struct dvector : vector
  14. {};
  15. using namespace boost::python;
  16. struct vector_wrapper
  17. : vector, wrapper< vector >
  18. {
  19. vector_wrapper(vector const&) {}
  20. vector_wrapper() {}
  21. };
  22. BOOST_PYTHON_MODULE( operators_wrapper_ext )
  23. {
  24. class_< vector_wrapper >( "vector" )
  25. .def( self + self )
  26. .def( self += self )
  27. .def( -self )
  28. ;
  29. scope().attr("v") = vector();
  30. std::auto_ptr<vector> dp(new dvector);
  31. register_ptr_to_python< std::auto_ptr<vector> >();
  32. scope().attr("d") = dp;
  33. }