1 #ifndef SimTK_SimTKCOMMON_CLONE_PTR_H_     2 #define SimTK_SimTKCOMMON_CLONE_PTR_H_    57     explicit ClonePtr(T** obj) : p(*obj) { *obj=0; }
    63     explicit ClonePtr(
const T* obj) : p(obj?obj->clone():0) { }
    68     explicit ClonePtr(
const T& obj) : p(&obj?obj.clone():0) { }
    79     {   
reset(c.p?c.p->clone():0); 
return *
this; }
    84     {   
reset(&t ? t.clone()  :0); 
return *
this; }
    89     {   
reset(tp); 
return *
this; }
    99         if (p == other.p) 
return true; 
   112         if (p == other.p)  
return false;    
   113         if (
empty())       
return true;     
   114         if (other.
empty()) 
return false;    
   142     operator const T&() 
const { 
return getRef(); }
   149     operator bool()
 const { 
return !
empty(); }
   163                     "An attempt was made to dereference a null pointer."); 
   171                     "An attempt was made to dereference a null pointer."); 
   188     void     reset(T* tp)     { 
if (tp!=p) {
delete p; p=tp;} }
   195         if (*tpp!=p) {
delete p; p=*tpp;} 
   218 template <
class T> 
inline void   225 #endif // SimTK_SimTKCOMMON_CLONE_PTR_H_ T * operator&()
This "address of" operator returns a writable pointer to the contained object (or null if none)...
Definition: ClonePtr.h:137
 
ClonePtr & operator=(T *tp)
This form of assignment replaces the currently-held object by the given source object and takes over ...
Definition: ClonePtr.h:88
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
ClonePtr()
Default constructor creates an empty object. 
Definition: ClonePtr.h:51
 
ClonePtr(const T *obj)
Given a pointer to a read-only object, create a new heap-allocated copy of that object via its clone(...
Definition: ClonePtr.h:63
 
T * release()
Extract the object from this container, leaving the container empty and transferring ownership to the...
Definition: ClonePtr.h:183
 
bool operator==(const ClonePtr &other) const 
Compare the contained objects for equality using the contained objects' operator==() operator...
Definition: ClonePtr.h:98
 
bool operator!=(const ClonePtr &other) const 
Compare the contained objects for inequality using operator==(). 
Definition: ClonePtr.h:104
 
const T * getPtr() const 
Return a const pointer to the contained object if any, or null. 
Definition: ClonePtr.h:156
 
T & updRef()
Return a writable reference to the contained object. 
Definition: ClonePtr.h:161
 
ClonePtr(T *obj)
Given a pointer to a writable heap-allocated object, take over ownership of that object. 
Definition: ClonePtr.h:54
 
ClonePtr(const T &obj)
Given a read-only reference to an object, create a new heap-allocated copy of that object via its clo...
Definition: ClonePtr.h:68
 
void reset(T *tp)
Replace the contents of this container with the supplied heap-allocated object, taking over ownership...
Definition: ClonePtr.h:188
 
T element_type
Definition: ClonePtr.h:46
 
const T * operator&() const 
This "address of" operator returns a const pointer to the contained object (or null if none)...
Definition: ClonePtr.h:134
 
Wrap a pointer to an abstract base class in a way that makes it behave like a concrete class...
Definition: ClonePtr.h:44
 
#define SimTK_ERRCHK(cond, whereChecked, msg)                                          
Definition: ExceptionMacros.h:324
 
T & operator*()
This "dereference" operator returns a writable reference to the contained object. ...
Definition: ClonePtr.h:130
 
const T & operator*() const 
This "dereference" operator returns a const reference to the contained object. 
Definition: ClonePtr.h:127
 
~ClonePtr()
Destructor deletes the referenced object. 
Definition: ClonePtr.h:92
 
const T & getRef() const 
Return a const reference to the contained object. 
Definition: ClonePtr.h:169
 
ClonePtr & operator=(const ClonePtr &c)
Copy assignment replaces the currently-held object by a heap-allocated copy of the object held in the...
Definition: ClonePtr.h:78
 
ClonePtr(const ClonePtr &c)
Copy constructor is deep; the new ClonePtr object contains a new copy of the object in the source...
Definition: ClonePtr.h:72
 
ClonePtr & operator=(const T &t)
This form of assignment replaces the currently-held object by a heap-allocated copy of the source obj...
Definition: ClonePtr.h:83
 
bool operator<(const ClonePtr &other) const 
Provide an ordering for use in sorted containers using the contained objects' operator<(). 
Definition: ClonePtr.h:111
 
T * operator->()
Dereference a writable pointer to the contained object. 
Definition: ClonePtr.h:123
 
void swap(ClonePtr &other)
Swap the contents of this ClonePtr with another one, with ownership changing hands but no copying per...
Definition: ClonePtr.h:200
 
T * pointer
Definition: ClonePtr.h:47
 
void clear()
Make this container empty, deleting the currently contained object if there is one. 
Definition: ClonePtr.h:179
 
bool empty() const 
Return true if this container is empty. 
Definition: ClonePtr.h:176
 
T * updPtr()
Return a writable pointer to the contained object if any, or null. 
Definition: ClonePtr.h:153
 
T & reference
Definition: ClonePtr.h:48
 
ClonePtr(T **obj)
Given a pointer to a writable heap-allocated object, take over ownership of that object and set the o...
Definition: ClonePtr.h:57
 
void reset(T **tpp)
Replace the contents of this container with the supplied heap-allocated object, taking over ownership...
Definition: ClonePtr.h:194
 
void swap(SimTK::ClonePtr< T > &p1, SimTK::ClonePtr< T > &p2)
This is a specialization of the STL std::swap() algorithm which uses the cheap built-in swap() member...
Definition: ClonePtr.h:219
 
const T * operator->() const 
Dereference a const pointer to the contained object. 
Definition: ClonePtr.h:120