Are you sure you understand the basic concept that ref_ptr together with osg::Referenced implements? You might want to read http://andesengineering.com/OSG_ProducerArticles/RefPointers/RefPointers.html...

The return value is the instance being pointed to by the ref_ptr instance. When you call release() it decrements the instances it's pointing at and returns it. Method unref_nodelete() is a method of osg::Referenced (of which osg::Node is a subclass) and, while it decrements the reference count of the instance it will not delete it when the reference count reaches zero.

Paul

Vincent Bourdier wrote:

Hi

I'm not sure to understand what release() do...

    T* release() { T* tmp=_ptr; if (_ptr) _ptr->unref_nodelete();
    _ptr=0; return tmp; }


what does unref_nodelete() do ?
what does it return really ?

Thanks
Vincent.


2008/5/23 Paul Melis <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>:

    Vincent Bourdier wrote:

        Hi Robert

        I've a ref_ptr to put to NULL, but I can't do a simple
        my_refptr = NULL;
        I need to set it in a function.

        In argument of my function, I get a ref_ptr, and in the
        function, I put this ref_ptr to NULL;
        I do not return anything.


    Perhaps ref_ptr::release()?

    Paul


        but at the end (going out of the function), my original
        ref_ptr hasn't been modified...

        I don't know if it is more understandable, but it's not easy
        to explain...

        Thanks for help.
        Vincent.

        2008/5/23 Robert Osfield <[EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>
        <mailto:[EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>>>:


           Hi Vincent,

           I don't know if anyone else can make sense of what you are
        trying to
           do, based on your email, but I'm just lost.  I kinda doubt
        the problem
           is really about ref_ptr<>, but something related to the
        overall code
           that you have written, but since I can't really spot what
        you intend
           or what might be going on I certainly can't help.

           Robert.

           On Fri, May 23, 2008 at 9:02 AM, Vincent Bourdier
           <[EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>
        <mailto:[EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>>>

           wrote:
           > Hi all,
           >
           > I'm making some function to modify graph after some
        operation,
           and so I need
           > to call some simple actions in functions.
           >
           > The problem is about ref_ptr :
           >
           > I need to do this :
           >
           > osg::ref_ptr<osg::Group> mygroup;
           > [..]
           > mygroup = NULL;
           > [...]
           >
           > To do that in a function, I use someting like :
           > addonstack(mygroup, NULL); //prototype is :
           > addonstack(osg::ref_ptr<osg::Group> caller, osg::Node* arg1);
           >
           > which did this :
           > osg::ref_ptr<osg::Node> nd =
        dynamic_cast<osg::Node*>(caller.get());
           >         if(nd.get()){
           >                 nd =arg1;
           >
           > But, the problem is that it doesn't change anything... I
        need,
           without
           > making some modifications in the addonstack prototype, a
        way to
           put the
           > ref_ptr to NULL .
           >
           > Any idea ?
           > Thanks.
           >
           > Regards,
           >     Vincent.
           >
           > _______________________________________________
           > osg-users mailing list
           > [email protected]
        <mailto:[email protected]>
           <mailto:[email protected]
        <mailto:[email protected]>>

           >
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
           >
           >
           _______________________________________________
           osg-users mailing list
           [email protected]
        <mailto:[email protected]>
           <mailto:[email protected]
        <mailto:[email protected]>>

http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


        ------------------------------------------------------------------------

        _______________________________________________
        osg-users mailing list
        [email protected]
        <mailto:[email protected]>
        
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

    _______________________________________________
    osg-users mailing list
    [email protected]
    <mailto:[email protected]>
    http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


------------------------------------------------------------------------

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to