vtkInstantiator.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00068 #ifndef __vtkInstantiator_h
00069 #define __vtkInstantiator_h
00070
00071 #include "vtkObject.h"
00072
00073
00074
00075 #include "vtkDebugLeaksManager.h"
00076
00077 class vtkInstantiatorInitialize;
00078 class vtkInstantiatorHashTable;
00079
00080 class VTK_COMMON_EXPORT vtkInstantiator : public vtkObject
00081 {
00082 public:
00083 static vtkInstantiator* New();
00084 vtkTypeRevisionMacro(vtkInstantiator,vtkObject);
00085 void PrintSelf(ostream& os, vtkIndent indent);
00086
00089 static vtkObject* CreateInstance(const char* className);
00090
00091
00092 typedef vtkObject* (*CreateFunction)();
00093
00095
00099 static void RegisterInstantiator(const char* className,
00100 CreateFunction createFunction);
00102
00104
00107 static void UnRegisterInstantiator(const char* className,
00108 CreateFunction createFunction);
00109
00111
00112 protected:
00113 vtkInstantiator();
00114 ~vtkInstantiator();
00115
00116
00117 static vtkInstantiatorHashTable* CreatorTable;
00118
00119 static void ClassInitialize();
00120 static void ClassFinalize();
00121
00122
00123 friend class vtkInstantiatorInitialize;
00124
00125
00126 private:
00127 vtkInstantiator(const vtkInstantiator&);
00128 void operator=(const vtkInstantiator&);
00129 };
00130
00131
00132
00133
00134 class VTK_COMMON_EXPORT vtkInstantiatorInitialize
00135 {
00136 public:
00137 vtkInstantiatorInitialize();
00138 ~vtkInstantiatorInitialize();
00139 private:
00140 static unsigned int Count;
00141 };
00142
00143
00144
00145
00146 static vtkInstantiatorInitialize vtkInstantiatorInitializer;
00147
00148
00149 #endif