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)30BOOST_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