00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __mitkObject_h
00012 #define __mitkObject_h
00013
00014 #include "mitkGlobal.h"
00015
00016 class mitkList;
00017 class mitkObserver;
00018
00040 class MITK_COMMON_API mitkObject
00041 {
00042 public:
00048 virtual const char *GetClassname() const {return "mitkObject";}
00049
00056 static int IsTypeOf(const char *name);
00057
00064 virtual int IsA(const char *name);
00065
00071 static mitkObject *SafeDownCast(mitkObject *o);
00072
00076 virtual void DebugOn();
00077
00081 virtual void DebugOff();
00082
00087 unsigned char GetDebug();
00088
00094 void SetDebug(unsigned char debugFlag);
00095
00099 static void BreakOnError();
00100
00105 void Print(ostream& os);
00106
00111 virtual void PrintSelf(ostream& os);
00112
00117 void AddObserver(mitkObserver *observer);
00118
00123 void RemoveObserver(mitkObserver *observer);
00124
00128 void RemoveAllObservers();
00129
00134 void AddReference();
00135
00140 void RemoveReference();
00141
00147 int GetReferenceCount() {return m_ReferenceCount;}
00148
00158 void Delete();
00159
00160 protected:
00161 mitkObject();
00162 virtual ~mitkObject();
00163
00164 void _updateObservers();
00165
00166 int m_Debug;
00167 int m_ReferenceCount;
00168
00169 mitkList *m_Observers;
00170
00171 private:
00172
00173 friend ostream& operator << (ostream& os, mitkObject& o);
00174 mitkObject(const mitkObject&);
00175 void operator = (const mitkObject&);
00176 };
00177
00178
00179
00180
00181
00182
00183 #endif
00184
00185