From: Daniel R. <dr...@gm...> - 2007-10-14 22:18:27
|
I didn't get any response to my previous query, so I'll clarify it. I would like to have reference counted objects that work across C++ and Python both for objects which are purely C++ objects and Python objects which inherit from C++ base classes. This seems relatively easily to implement in SWIG by: - Purely C++ objects or python objects extending C++ objects which don't have virtual functions are just treated like they currently are-- their reference count is incremented if there is a python reference to them and decremented if there is no python reference. If the python proxy object goes away before the C++ object, it is fine. The C++ object can't go away without all python references being destroyed. - With Python objects which inherit from C++ objects with virtual functions work swig has to keep the python proxy object alive until the C++ object is destroyed. This can be done by SWIG keeping a reference to the python object until the C++ object is destroyed. Then the C++ director can use the call to the virtual C++ destructor (which needs to be there on the C++ side anyway) to remove the reference to the python object so that it too goes away. While it is straight forward, I don't see any way to easily turn on or provide this functionality for a large array of classes. I am quite new to SWIG so I might be missing something. Any suggestions or alternatives? Thanks. |