Differences between revisions 4 and 5
Revision 4 as of 2002-12-28 01:54:23
Size: 921
Editor: MikeRovner
Comment:
Revision 5 as of 2003-01-03 23:50:48
Size: 1108
Editor: MikeRovner
Comment: return_by_value
Deletions are marked like this. Additions are marked like this.
Line 38: Line 38:

=== return_by_value ===
/ResultConverterGenerator which can be used to wrap C++ functions returning any reference or value type.
The return value is copied into a new Python object.

CallPolicy allows ["boost.python"] to deal with raw references and pointers. Different policies specifies different strategies of managing object ownership.

TableOfContents

with_custodian_and_ward

ties lifetimes of the arguments

with_custodian_and_ward_postcall

ties lifetimes of the arguments and results

return_internal_reference

ties lifetime of one argument to that of result keep the owning object alive as long as the owned objects are also alive.

return_value_policy<T>

with T one of:

reference_existing_object

naïve (dangerous) approach

copy_non_const_reference

copy_const_reference

Boost.Python v1 approach

manage_new_object

Adopt a pointer and hold the instance

Use case:

T* factory() { return new T(); }

class_<T>("T");

def("Tfactory", factory, return_value_policy<manage_new_object>() );

return_by_value

/ResultConverterGenerator which can be used to wrap C++ functions returning any reference or value type. The return value is copied into a new Python object.

boost.python/CallPolicy (last edited 2008-11-15 14:01:02 by localhost)

Unable to edit the page? See the FrontPage for instructions.