A reference counted object. Whenever using multiple inheritance you should inherit this class virtually.
| RefObject ()
| RefObject |
The constructor initializes the reference counter to 1! Use deref() to destruct the object when safe
| ~RefObject ()
| ~RefObject |
[virtual]
Destructor.
| bool alive ()
| alive |
[const virtual]
Check if the object is still referenced and safe to access. Note that you should not trust this result unless the object is locked by other means.
Returns: True if the object is referenced and safe to access
Reimplemented from GenObject.
| bool ref ()
| ref |
Increments the reference counter if not already zero
Returns: True if the object was successfully referenced and is safe to access
| bool deref ()
| deref |
Decrements the reference counter, destroys the object if it reaches zero
// Deref this object, return quickly if the object was deleted if (deref()) return; |
Returns: True if the object may have been deleted, false if it still exists and is safe to access
| inline int refcount ()
| refcount |
[const]
Get the current value of the reference counter
Returns: The value of the reference counter
| void destruct ()
| destruct |
[virtual]
Refcounted objects should just have the counter decremented. That will destroy them only when the refcount reaches zero.
Reimplemented from GenObject.
| inline Mutex& refMutex ()
| refMutex |
Retrieve the mutex that protects ref() and deref() for this object
Returns: Reference to the mutex used for counter operations
| void zeroRefs ()
| zeroRefs |
[protected virtual]
This method is called when the reference count reaches zero after unlocking the mutex if the call to zeroRefsTest() returned true. The default behaviour is to delete the object.
| bool zeroRefsTest ()
| zeroRefsTest |
[protected virtual]
This method is called when the reference count reaches zero just before calling zeroRefs() with the non-recursive mutex still locked. Extra care must be taken to prevent deadlocks, normally the code should only change some variables and return. The default implementation just returns true.
Returns: True to call zeroRefs() after releasing the mutex
| bool refInternal ()
| refInternal |
[protected]
Increments the reference counter if not already zero without locking the mutex. The caller must make sure to hold the refMutex() locked.
Returns: True if the object was successfully referenced
| bool resurrect ()
| resurrect |
[protected]
Bring the object back alive by setting the reference counter to one. Note that it works only if the counter was zero previously
Returns: True if the object was resurrected - its name may be Lazarus ;-)
| void destroyed ()
| destroyed |
[protected virtual]
Pre-destruction notification, called just before the object is deleted. Unlike in the destructor it is safe to call virtual methods here. Reimplementing this method allows to perform any object cleanups.
| Generated by: paulc on bussard on Tue Apr 12 17:15:21 2011, using kdoc 2.0a54. |