diff --git a/test/polymorphism2_auto_ptr.cpp b/test/polymorphism2_auto_ptr.cpp new file mode 100755 index 00000000..8cd5ef24 --- /dev/null +++ b/test/polymorphism2_auto_ptr.cpp @@ -0,0 +1,6 @@ +// Copyright David Abrahams 2005. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define HELD_BY_AUTO_PTR +#include "polymorphism2.cpp" diff --git a/test/polymorphism2_auto_ptr.py b/test/polymorphism2_auto_ptr.py new file mode 100644 index 00000000..88cf664a --- /dev/null +++ b/test/polymorphism2_auto_ptr.py @@ -0,0 +1,5 @@ +# Copyright David Abrahams 2005. Distributed under the Boost +# Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +import polymorphism2 +polymorphism2.test() diff --git a/test/wrapper_held_type.cpp b/test/wrapper_held_type.cpp new file mode 100755 index 00000000..d5afface --- /dev/null +++ b/test/wrapper_held_type.cpp @@ -0,0 +1,68 @@ +// Copyright David Abrahams 2005. Distributed under the Boost +// Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include + +#include + +struct data +{ + virtual int id() const + { + return 42; + } +}; + +std::auto_ptr create_data() +{ + return std::auto_ptr( new data ); +} + +void do_nothing( std::auto_ptr& ){} + + +namespace bp = boost::python; + +struct data_wrapper : data, bp::wrapper< data > +{ + data_wrapper(data const & arg ) + : data( arg ) + , bp::wrapper< data >() + {} + + data_wrapper() + : data() + , bp::wrapper< data >() + {} + + virtual int id() const + { + if( bp::override id = this->get_override( "id" ) ) + return bp::call(id.ptr()); // id(); + else + return data::id( ); + } + + virtual int default_id( ) const + { + return this->data::id( ); + } + +}; + +BOOST_PYTHON_MODULE(wrapper_held_type_ext) +{ + bp::class_< data_wrapper, std::auto_ptr< data > >( "data" ) + .def( "id", &data::id, &::data_wrapper::default_id ); + + bp::def( "do_nothing", &do_nothing ); + bp::def( "create_data", &create_data ); +} + +#include "module_tail.cpp" diff --git a/test/wrapper_held_type.py b/test/wrapper_held_type.py new file mode 100644 index 00000000..4b33ff73 --- /dev/null +++ b/test/wrapper_held_type.py @@ -0,0 +1,34 @@ +# Copyright David Abrahams 2005. Distributed under the Boost +# Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +''' +>>> from wrapper_held_type_ext import * +>>> d = data() +>>> print d.id() +42 +>>> do_nothing( d ) +>>> print d.id() +42 +>>> d = create_data() +>>> print d.id() +42 +>>> do_nothing( d ) +>>> print d.id() +42 +''' + +def run(args = None): + import sys + import doctest + + if args is not None: + sys.argv = args + return doctest.testmod(sys.modules.get(__name__)) + +if __name__ == '__main__': + print "running..." + import sys + status = run()[0] + if (status == 0): print "Done." + sys.exit(status) +