
On 2009-10-20, OvermindDL1
Ooo, impressively simple. That should be added to the docs (FAQ at least?).
I've put up an improved version at the bottom of: http://wiki.python.org/moin/boost.python/PointersAndSmartPointers Hopefully, the next person to come along will have an easier time of it. Randolph
On Mon, Oct 19, 2009 at 10:46 PM, Randolph Fritz
wrote: It's surprisingly simple, it turns out.
First, you have to tag the OSG smart pointer type, as follows: ------------------- #ifndef REF_PTR_TRAIT_ #define REF_PTR_TRAIT_
#include
#include namespace boost { namespace python { template <class T> struct pointee< osg::ref_ptr<T> > { typedef T type; }; }}
#endif -------------------
Then, in a BOOST_PYTHON_MODULE, you can write:
class_
("Node", init<>()) ; You can of course add as many of the Node class's methods as desired.
Randolph
On 2009-10-14, OvermindDL1
wrote: On Tue, Oct 13, 2009 at 7:34 PM, Randolph Fritz
wrote: What is wrong with the following code? I suspect I'm doing something silly, and I suspect the answer is obvious.
#include
#include #include
#include using namespace osg; typedef ref_ptr<Node> NodePtr;
using namespace boost::python;
BOOST_PYTHON_MODULE(NodePtr) { class_
("NodePtr") ; } Boost.Python knows Boost and TR1 smart pointers, not any others. If you are using any others (ref_ptr in this case I gather) then you need to make Boost.Python aware of it, I am not sure how, reading through the code might reveal how.