mirror of
https://github.com/boostorg/python.git
synced 2026-01-19 04:22:16 +00:00
This commit was manufactured by cvs2svn to create branch 'RC_1_34_0'.
[SVN r35366]
This commit is contained in:
42
test/operators_wrapper.cpp
Normal file
42
test/operators_wrapper.cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
#include "boost/python.hpp"
|
||||
#include <memory>
|
||||
|
||||
struct vector
|
||||
{
|
||||
virtual ~vector() {}
|
||||
|
||||
vector operator+( const vector& x ) const
|
||||
{ return vector(); }
|
||||
|
||||
vector& operator+=( const vector& x )
|
||||
{ return *this; }
|
||||
|
||||
vector operator-() const
|
||||
{ return *this; }
|
||||
};
|
||||
|
||||
struct dvector : vector
|
||||
{};
|
||||
|
||||
using namespace boost::python;
|
||||
|
||||
struct vector_wrapper
|
||||
: vector, wrapper< vector >
|
||||
{
|
||||
vector_wrapper(vector const&) {}
|
||||
vector_wrapper() {}
|
||||
};
|
||||
|
||||
BOOST_PYTHON_MODULE( operators_wrapper_ext )
|
||||
{
|
||||
class_< vector_wrapper >( "vector" )
|
||||
.def( self + self )
|
||||
.def( self += self )
|
||||
.def( -self )
|
||||
;
|
||||
|
||||
scope().attr("v") = vector();
|
||||
std::auto_ptr<vector> dp(new dvector);
|
||||
register_ptr_to_python< std::auto_ptr<vector> >();
|
||||
scope().attr("d") = dp;
|
||||
}
|
||||
11
test/operators_wrapper.py
Normal file
11
test/operators_wrapper.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from operators_wrapper_ext import *
|
||||
|
||||
class D2(vector): pass
|
||||
d2 = D2()
|
||||
|
||||
for lhs in (v,d,d2):
|
||||
-lhs
|
||||
for rhs in (v,d,d2):
|
||||
lhs + rhs
|
||||
lhs += rhs
|
||||
|
||||
Reference in New Issue
Block a user