#include <AutoPtr.h>
Inheritance diagram for AutoPtr:
Public Member Functions | |
AutoPtr (T *t) | |
void | registerReferer (void *pR) |
int | hasReferer () const |
T * | origObject () |
Static Public Member Functions | |
static bool | destroy (AutoPtr< T > *pA, void *pR) |
Protected Member Functions | |
void | _unregister (void *pR) |
~AutoPtr () | |
Protected Attributes | |
T * | _pObject |
original object | |
std::set< void * > | _ref |
set of referencing objects | |
Static Protected Attributes | |
static std::set< AutoPtr< T > * > | _repos |
global static set of AutoPtr instances |
Protocol:
INSTANTIATE_AUTOPTR_STATIC_MEMBERS(ObjType); // only once in code ObjType * obj; AutoPtr<ObjType> * a = new AutoPtr<ObjType>(obj); // create new autopointer // // method, which allows the referer to use the autopointed // object securely: // Referer::acceptObject(AutoPtr<ObjType> * a) { a->registerReferer(this); } // // method, which securely deletes the autopointed object when it's not // used anymore by the referer: // Referer::deleteObject(AutoPtr<ObjType> * a) { AutoPtr<ObjType>::destroy(a, this); }
Definition at line 42 of file AutoPtr.h.
|
|
|
|
|
Definition at line 49 of file AutoPtr.h. Referenced by AutoPtr< Mesh >::destroy(), and AutoArray< Vertex3 >::destroy(). |
|
Destructor of original object. The object is realy destroied only if it has no reference to it.
|
|
Returns number of referers registered to this autopointer
Definition at line 100 of file AutoPtr.h. Referenced by AutoPtr< Mesh >::destroy(), and AutoArray< Vertex3 >::destroy(). |
|
Returns the original object stored in this autopointer
Definition at line 107 of file AutoPtr.h. Referenced by Surface::_duplicate_attributes(), LightSource::LightSource(), SceneGraphObject::setSharedDiffuseBRDF(), SceneGraphObject::setSharedEmittance(), SceneGraphObject::setSharedGeometry(), SceneGraphObject::setSharedSpecularBRDF(), SceneGraphObject::setSharedTexture(), SceneGraphObject::setSharedTransformation(), and Surface::Surface(). |
|
Registers new object that uses the object in this autopointer.
Definition at line 93 of file AutoPtr.h. Referenced by Surface::_duplicate_attributes(), SceneGraphObject::appendSharedAttribute(), SceneGraphObject::appendSharedMaterial(), RhinoParser::RhinoParser(), Shape::setEnergyState(), SceneGraphObject::setSharedDiffuseBRDF(), SceneGraphObject::setSharedEmittance(), SceneGraphObject::setSharedGeometry(), SceneGraphObject::setSharedSpecularBRDF(), SceneGraphObject::setSharedTexture(), SceneGraphObject::setSharedTransformation(), and Surface::Surface(). |
|
original object
|
|
set of referencing objects
|
|
global static set of AutoPtr instances
Reimplemented in AutoArray, AutoArray< Vector2 >, AutoArray< Vector3 >, AutoArray< Vertex2 >, and AutoArray< Vertex3 >. |