00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00069 #ifndef __vtkObject_h
00070 #define __vtkObject_h
00071
00072 #include "vtkIndent.h"
00073 #include "vtkTimeStamp.h"
00074 #include "vtkSetGet.h"
00075
00076 class vtkSubjectHelper;
00077 class vtkCommand;
00078
00079 class VTK_EXPORT vtkObject
00080 {
00081 public:
00084 virtual const char *GetClassName() {return "vtkObject";};
00085
00089 static int IsTypeOf(const char *name);
00090
00094 virtual int IsA(const char *name);
00095
00100 static vtkObject *SafeDownCast(vtkObject *o);
00101
00105 virtual void Delete();
00106
00109 static vtkObject *New()
00110 {return new vtkObject;}
00111
00112 #ifdef _WIN32
00113
00114 void* operator new( size_t tSize, const char *, int);
00115 void* operator new( size_t tSize );
00116 void operator delete( void* p );
00117 #endif
00118
00120 virtual void DebugOn();
00121
00123 virtual void DebugOff();
00124
00126 unsigned char GetDebug();
00127
00129 void SetDebug(unsigned char debugFlag);
00130
00133 static void BreakOnError();
00134
00139 virtual void Modified();
00140
00142 virtual unsigned long GetMTime();
00143
00146 void Print(ostream& os);
00147
00152 virtual void PrintSelf(ostream& os, vtkIndent indent);
00153 virtual void PrintHeader(ostream& os, vtkIndent indent);
00154 virtual void PrintTrailer(ostream& os, vtkIndent indent);
00155
00158 static void SetGlobalWarningDisplay(int val);
00159 static void GlobalWarningDisplayOn(){vtkObject::SetGlobalWarningDisplay(1);};
00160 static void GlobalWarningDisplayOff()
00161 {vtkObject::SetGlobalWarningDisplay(0);};
00162 static int GetGlobalWarningDisplay();
00163
00165 void Register(vtkObject* o);
00166
00170 virtual void UnRegister(vtkObject* o);
00171
00173 int GetReferenceCount()
00174 {return this->ReferenceCount;}
00175
00177 void SetReferenceCount(int);
00178
00184 unsigned long AddObserver(unsigned long event, vtkCommand *);
00185 unsigned long AddObserver(const char *event, vtkCommand *);
00186 vtkCommand *GetCommand(unsigned long tag);
00187 void InvokeEvent(unsigned long event, void *callData);
00188 void InvokeEvent(const char *event, void *callData);
00189
00190 void RemoveObserver(unsigned long tag);
00191 int HasObserver(unsigned long event);
00192 int HasObserver(const char *event);
00193
00194 protected:
00195 vtkObject();
00196 virtual ~vtkObject();
00197 vtkObject(const vtkObject&) {};
00198 void operator=(const vtkObject&) {};
00199
00200 unsigned char Debug;
00201 vtkTimeStamp MTime;
00202 int ReferenceCount;
00203 vtkSubjectHelper *SubjectHelper;
00204
00205 private:
00206
00207 friend VTK_EXPORT ostream& operator<<(ostream& os, vtkObject& o);
00208
00209 };
00210
00211 inline void vtkObject::Modified()
00212 {
00213 this->MTime.Modified();
00214 }
00215
00216 #endif
00217