|
|
Boost.PythonHeader <boost/python/manage_new_object.hpp> |
manage_new_object
manage_new_object synopsis
manage_new_object metafunctions
manage_new_objectmanage_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 synopsis
namespace 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_INIT(my_module)
{
module("my_module")
.def("make_foo", make_foo, return_value_policy<manage_new_object>)
.add(
class_<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 14 February 2002
© Copyright Dave Abrahams 2002. All Rights Reserved.