[C++-sig] How to officially wrap a pointer into boost::python::object?
meine at informatik.uni-hamburg.de
Tue Jun 3 14:21:04 CEST 2008
Am Dienstag, 03. Juni 2008 07:07:19 schrieb Roman Yakovenko:
> > In the end, I would like to know
> > a) what is the right way(tm) for common end users,
> > b) where this is (prominently) documented, and
> > c) what is the perfectly-fine-in-all-cases way for code that should
> > eventually go into the BPL.
> std::auto_ptr< Foo > result( new Foo() );
> boost::python::object pyresult( result );
> You will have to add somewhere in your registration code next line:
> boost::python::register_ptr_to_python< std::auto_ptr< Foo > >();
OK, this is obviously the answer to a), but what about c)?
Background: I want to try to provide a patch for automatic
__copy__/__deepcopy__ support using the code I posted in the past (cf. "How
about class_<...>.enable_copy() ?" thread).
I do not want to register auto_ptr conversions for every class automatically,
or is this considered to be the right way for BPL code?
Interestingly, as I mentioned, manage_new_object eventually uses a
std::auto_ptr holder, too. Obviously, I could go the same route and use
detail::make_owning_holder, but I would still get a PyObject * which I would
need to wrap in a bp::object.
Ciao, / /
/ / ANS
More information about the Cplusplus-sig