[C++-sig] python::object that takes ownership of a C++ instance
Francis Moreau
francis_moreau at hotmail.com
Fri May 16 21:49:51 CEST 2008
Hi,
I would like to know if there is the equivalent of manage_new_object
return_policy but for an argument pass to Python? I have a Python class
derived from a C++ base class:
class PyEventProcessor(CppEventProcessor):
def processEvent(in_event):
# do something
And then in C++ I want to call processEvent and transferring the ownership
of the event to Python:
void CppEventProcessor_Wrapped::pyProcessEvent(const Event& in_event)
{
// This following line is working well, but I want to transfert the
ownership of the event instead of passing a reference on it.
return python::call_method<void>(m_pSelf, "processEvent",
boost::ref(in_event)):
// I tried something like this but it's not working.
Event* pNewEvent = in_event.clone();
python::object obj(&pNewEvent); // Event is a type exposed in Python
}
I would like to know what is the best way to do something like this, is it
by using a auto_ptr, or a from_python convertor, or something else? Also, I
have a few types richer than Event, and exposed to Python too, and I want to
be able to use them directly in Python, e.g.:
class PyEventProcessor(CppEventProcessor):
def processEvent(in_event):
if in_event is ConnectionEvent:
srcAddr = in_event.getSourceAddr()
Thanks,
Francis
More information about the Cplusplus-sig
mailing list