Keeps track of the reference count of an object even if it is destroyed. More...
#include <mitkReferenceCountWatcher.h>
Public Types | |
typedef itk::SimpleMemberCommand < ReferenceCountWatcher > | CommandType |
Public Member Functions | |
mitkClassMacro (ReferenceCountWatcher, itk::Object) | |
ReferenceCountWatcher (itk::Object *o, const char *comment="") | |
Constructor requiring object to be watched and allowing an optional comment. | |
~ReferenceCountWatcher () | |
Destructor: remove observer. | |
int | GetReferenceCount () const |
Return the reference count of the watched object or 0 if it has been destroyed. | |
virtual const char * | GetComment () const |
Return the optional string comment. | |
Protected Member Functions | |
void | DeleteObserver () |
Callback called on itk::DeleteEvent() of wathched object. | |
Protected Attributes | |
itk::Object * | m_Object |
Object to be watched. | |
std::string | m_Comment |
Optional comment, e.g. for debugging output. | |
bool | m_Deleted |
If true, m_Object is no longer valid and the returned reference count will be 0. | |
CommandType::Pointer | m_DeleteCommand |
itk::Command to get a notification when the object is deleted. | |
unsigned long | m_ObserverTag |
Keeps track of the reference count of an object even if it is destroyed.
Example usage:
//## SomeFilter* filter = GetSomeFilter(); //## ReferenceCountWatcher::Pointer filterWatcher; //## filterWatcher = new ReferenceCountWatcher(filter, "name of filter"); //## filterWatcher->GetReferenceCount(); //##
Definition at line 35 of file mitkReferenceCountWatcher.h.
typedef itk::SimpleMemberCommand<ReferenceCountWatcher> mitk::ReferenceCountWatcher::CommandType |
Definition at line 38 of file mitkReferenceCountWatcher.h.
mitk::ReferenceCountWatcher::ReferenceCountWatcher | ( | itk::Object * | o, |
const char * | comment = "" |
||
) | [inline] |
Constructor requiring object to be watched and allowing an optional comment.
Definition at line 65 of file mitkReferenceCountWatcher.h.
References DeleteObserver(), m_DeleteCommand, m_Object, and m_ObserverTag.
: m_Object(o), m_Comment(comment), m_Deleted(false), m_ObserverTag(0) { m_DeleteCommand = CommandType::New(); m_DeleteCommand->SetCallbackFunction(this, &ReferenceCountWatcher::DeleteObserver); if(m_Object!=NULL) m_ObserverTag = m_Object->AddObserver(itk::DeleteEvent(), m_DeleteCommand); m_ReferenceCountLock.Lock(); m_ReferenceCount = 0; m_ReferenceCountLock.Unlock(); }
mitk::ReferenceCountWatcher::~ReferenceCountWatcher | ( | ) | [inline] |
Destructor: remove observer.
Definition at line 77 of file mitkReferenceCountWatcher.h.
References m_Deleted, m_Object, and m_ObserverTag.
{ if((m_Deleted == false) && (m_Object != NULL)) { m_Object->RemoveObserver(m_ObserverTag); } }
void mitk::ReferenceCountWatcher::DeleteObserver | ( | ) | [inline, protected] |
Callback called on itk::DeleteEvent() of wathched object.
Definition at line 100 of file mitkReferenceCountWatcher.h.
References m_Deleted.
Referenced by ReferenceCountWatcher().
{ m_Deleted = true; }
virtual const char* mitk::ReferenceCountWatcher::GetComment | ( | ) | const [virtual] |
Return the optional string comment.
int mitk::ReferenceCountWatcher::GetReferenceCount | ( | ) | const [inline] |
mitk::ReferenceCountWatcher::mitkClassMacro | ( | ReferenceCountWatcher | , |
itk::Object | |||
) |
std::string mitk::ReferenceCountWatcher::m_Comment [protected] |
Optional comment, e.g. for debugging output.
Definition at line 49 of file mitkReferenceCountWatcher.h.
CommandType::Pointer mitk::ReferenceCountWatcher::m_DeleteCommand [protected] |
itk::Command to get a notification when the object is deleted.
Definition at line 59 of file mitkReferenceCountWatcher.h.
Referenced by ReferenceCountWatcher().
bool mitk::ReferenceCountWatcher::m_Deleted [protected] |
If true, m_Object is no longer valid and the returned reference count will be 0.
Definition at line 54 of file mitkReferenceCountWatcher.h.
Referenced by DeleteObserver(), GetReferenceCount(), and ~ReferenceCountWatcher().
itk::Object* mitk::ReferenceCountWatcher::m_Object [protected] |
Object to be watched.
Definition at line 45 of file mitkReferenceCountWatcher.h.
Referenced by GetReferenceCount(), ReferenceCountWatcher(), and ~ReferenceCountWatcher().
unsigned long mitk::ReferenceCountWatcher::m_ObserverTag [protected] |
Definition at line 104 of file mitkReferenceCountWatcher.h.
Referenced by ReferenceCountWatcher(), and ~ReferenceCountWatcher().