...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
manage_new_object
manage_new_object
synopsismanage_new_object
metafunctionsmanage_new_object
manage_new_object
is a model of ResultConverterGenerator
which can be used to wrap C++ functions which return a pointer to an
object allocated with a new-expression, and expect the caller to
take responsibility for deleting that object.
manage_new_object
synopsisnamespace boost { namespace python { struct manage_new_object { template <class T> struct apply; }; }}
manage_new_object
metafunctionstemplate <class T> struct apply
In C++:
#include <boost/python/module.hpp> #include <boost/python/class.hpp> #include <boost/python/manage_new_object.hpp> #include <boost/python/return_value_policy.hpp> struct Foo { Foo(int x) : x(x){} int get_x() { return x; } int x; }; Foo* make_foo(int x) { return new Foo(x); } // Wrapper code using namespace boost::python; BOOST_PYTHON_MODULE(my_module) { def("make_foo", make_foo, return_value_policy<manage_new_object>()) class_<Foo>("Foo") .def("get_x", &Foo::get_x) ; }In Python:
>>> from my_module import * >>> f = make_foo(3) # create a Foo object >>> f.get_x() 3
Revised 13 November, 2002
© Copyright Dave Abrahams 2002.