|
Boost Users : |
Subject: Re: [Boost-users] Boost.Python: wrapping OpenSceneGraph smart pointers, again
From: Randolph Fritz (rfritz333_at_[hidden])
Date: 2009-10-20 17:54:20
On 2009-10-20, OvermindDL1 <overminddl1_at_[hidden]> wrote:
>
> 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 <rfritz333_at_[hidden]> 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 <boost/python.hpp>
>> #include <osg/ref_ptr>
>>
>> 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, ref_ptr<Node> >("Node", init<>())
>> ;
>>
>> You can of course add as many of the Node class's methods as desired.
>>
>> Randolph
>>
>> On 2009-10-14, OvermindDL1 <overminddl1_at_[hidden]> wrote:
>>> On Tue, Oct 13, 2009 at 7:34 PM, Randolph Fritz <rfritz333_at_[hidden]> wrote:
>>>> What is wrong with the following code? I suspect I'm doing something
>>>> silly, and I suspect the answer is obvious.
>>>>
>>>> #include <osg/Node>
>>>> #include <osg/ref_ptr>
>>>>
>>>> #include <boost/python.hpp>
>>>> #include <boost/python/pointee.hpp>
>>>>
>>>> using namespace osg;
>>>> typedef ref_ptr<Node> NodePtr;
>>>>
>>>> using namespace boost::python;
>>>>
>>>> BOOST_PYTHON_MODULE(NodePtr) {
>>>> class_<NodePtr, pointee<NodePtr> >("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.
>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net