• Mark Olesen's avatar
    ENH: cleanup autoPtr class (issue #639) · 660f3e54
    Mark Olesen authored
    Improve alignment of its behaviour with std::unique_ptr
      - element_type typedef
      - release() method - identical to ptr() method
      - get() method to get the pointer without checking and without releasing it.
      - operator*() for dereferencing
    Method name changes
      - renamed rawPtr() to get()
      - renamed rawRef() to ref(), removed unused const version.
    Removed methods/operators
      - assignment from a raw pointer was deleted (was rarely used).
        Can be convenient, but uncontrolled and potentially unsafe.
        Do allow assignment from a literal nullptr though, since this
        can never leak (and also corresponds to the unique_ptr API).
    Additional methods
      - clone() method: forwards to the clone() method of the underlying
        data object with argument forwarding.
      - reset(autoPtr&&) as an alternative to operator=(autoPtr&&)
    STYLE: avoid implicit conversion from autoPtr to object type in many places
    - existing implementation has the following:
         operator const T&() const { return operator*(); }
      which means that the following code works:
           autoPtr<mapPolyMesh> map = ...;
           updateMesh(*map);    // OK: explicit dereferencing
           updateMesh(map());   // OK: explicit dereferencing
           updateMesh(map);     // OK: implicit dereferencing
      for clarity it may preferable to avoid the implicit dereferencing
    - prefer operator* to operator() when deferenced a return value
      so it is clearer that a pointer is involve and not a function call
      etc    Eg,   return *meshPtr_;  vs.  return meshPtr_();
turbulentDFSEMInletFvPatchVectorField.C 29.8 KB