A base class for reference counted objects. More...
#include <object.h>
Public Member Functions | |
bool | isCopied (void) |
Test if the object has copied references. | |
bool | isRetained (void) |
Test if the object has been referenced (retained) by anyone yet. | |
unsigned | copied (void) |
Return the number of active references (retentions) to our object. | |
void | retain (void) |
Increase reference count when retained. | |
void | release (void) |
Decrease reference count when released. | |
Protected Member Functions | |
CountedObject () | |
Construct a counted object, mark initially as unreferenced. | |
CountedObject (const Object &ref) | |
Construct a copy of a counted object. | |
virtual void | dealloc (void) |
Dealloc object no longer referenced. |
A base class for reference counted objects.
Reference counted objects keep track of how many objects refer to them and fall out of scope when they are no longer being referred to. This can be used to achieve automatic heap management when used in conjunction with smart pointers.
Definition at line 90 of file object.h.
ucc::CountedObject::CountedObject | ( | const Object & | ref | ) | [protected] |
Construct a copy of a counted object.
Our instance is not a reference to the original object but a duplicate, so we do not retain the original and we do reset our count to mark as initially unreferenced.
unsigned ucc::CountedObject::copied | ( | void | ) | [inline] |
virtual void ucc::CountedObject::dealloc | ( | void | ) | [protected, virtual] |
Dealloc object no longer referenced.
The dealloc routine would commonly be used for a self delete to return the object back to a heap when it is no longer referenced.
Reimplemented in ucc::PagerObject.
bool ucc::CountedObject::isCopied | ( | void | ) | [inline] |
bool ucc::CountedObject::isRetained | ( | void | ) | [inline] |
void ucc::CountedObject::release | ( | void | ) | [virtual] |
Decrease reference count when released.
If no longer retained, then the object is dealloc'd.
Reimplemented from ucc::Object.
Reimplemented in ucc::PagerObject.