<div>On Tue, Sep 6, 2011 at 12:34 PM, Jonathan Morra <span dir="ltr"><<a href="mailto:jonmorra@gmail.com">jonmorra@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
This could make sense, I'm going to try and change all my method signatures to pass around const references to vtkSmartPointers where appropriate. Do you know what happens to the reference count upon returning a vtkSmartPointer?</blockquote>
</div><br></div><div><br></div><div>In VTK, smart pointers should only be used to store references, not to pass them. VTK methods should take regular pointers as arguments.</div><div><br></div><div>The general rules are:</div>
<div><br></div><div>1) Refcounts are not automatically incremented when objects are returned, i.e. when an object is returned to you, then you are just "borrowing" it. If you need to own it for a while, then store it in a smart pointer.</div>
<div><br></div><div>2) Refcounts are not automatically incremented when objects are passed to a method. If a method needs to own the object for a while, it should store it in a smart pointer. All methods in the VTK libraries that need to own the objects that are passed to them will increment the refcount of those objects, either by storing it in a smart pointer or by calling Register() on it.</div>
<div><br></div><div>There are a few very rare exceptions to rule #1, such as the NewInstance() method.</div><div><br></div><div> - David</div>