• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "boost/python.hpp"
2 #include <memory>
3 
4 struct vector
5 {
~vectorvector6     virtual ~vector() {}
7 
operator +vector8     vector operator+( const vector& ) const
9     { return vector(); }
10 
operator +=vector11     vector& operator+=( const vector& )
12     { return *this; }
13 
operator -vector14     vector operator-() const
15     { return *this; }
16 };
17 
18 struct dvector : vector
19 {};
20 
21 using namespace boost::python;
22 
23 struct vector_wrapper
24   : vector, wrapper< vector >
25 {
vector_wrappervector_wrapper26     vector_wrapper(vector const&) {}
vector_wrappervector_wrapper27     vector_wrapper() {}
28 };
29 
BOOST_PYTHON_MODULE(operators_wrapper_ext)30 BOOST_PYTHON_MODULE( operators_wrapper_ext )
31 {
32     class_< vector_wrapper >( "vector" )
33         .def( self + self )
34         .def( self += self )
35         .def( -self )
36         ;
37 
38     scope().attr("v") = vector();
39     std::auto_ptr<vector> dp(new dvector);
40     register_ptr_to_python< std::auto_ptr<vector> >();
41     scope().attr("d") = dp;
42 }
43