Go to the documentation of this file.
40 #ifndef vtkObjectFactory_h
41 #define vtkObjectFactory_h
101 const char* className);
107 const char* className,
108 const char* subclassName);
149 const char* className,
150 const char* subclassName);
152 const char* subclassName);
158 virtual int HasOverride(
const char* className,
const char* subclassName);
178 const char* overrideClassName,
181 CreateFunction createFunction);
209 void GrowOverrideArray();
215 static void RegisterDefaults();
217 static void LoadDynamicFactories();
219 static void LoadLibrariesInPath(
const char*);
227 char* LibraryVTKVersion;
228 char* LibraryCompilerUsed;
238 #define VTK_CREATE_CREATE_FUNCTION(classname) \
239 static vtkObject* vtkObjectFactoryCreate##classname() \
240 { return classname::New(); }
244 #define VTK_FACTORY_INTERFACE_EXPORT VTKCOMMONCORE_EXPORT
251 #define VTK_FACTORY_INTERFACE_IMPLEMENT(factoryName) \
253 VTK_FACTORY_INTERFACE_EXPORT \
254 const char* vtkGetFactoryCompilerUsed() \
256 return VTK_CXX_COMPILER; \
259 VTK_FACTORY_INTERFACE_EXPORT \
260 const char* vtkGetFactoryVersion() \
262 return VTK_SOURCE_VERSION; \
265 VTK_FACTORY_INTERFACE_EXPORT \
266 vtkObjectFactory* vtkLoad() \
268 return factoryName ::New(); \
272 #define VTK_OBJECT_FACTORY_NEW_BODY(thisClass) \
273 vtkObject* ret = vtkObjectFactory::CreateInstance(#thisClass); \
276 return static_cast<thisClass*>(ret); \
278 return new thisClass;
283 #define VTK_ABSTRACT_OBJECT_FACTORY_NEW_BODY(thisClass) \
284 vtkObject* ret = vtkObjectFactory::CreateInstance(#thisClass); \
287 return static_cast<thisClass*>(ret); \
289 vtkGenericWarningMacro("Error: no override found for '" #thisClass "'."); \
293 #if defined(VTK_ALL_NEW_OBJECT_FACTORY)
294 # define VTK_STANDARD_NEW_BODY(thisClass) \
295 VTK_OBJECT_FACTORY_NEW_BODY(thisClass)
296 #elif defined(VTK_DEBUG_LEAKS)
297 # define VTK_STANDARD_NEW_BODY(thisClass) \
298 thisClass *result = new thisClass; \
299 vtkObjectFactory::ConstructInstance(result->GetClassName()); \
302 # define VTK_STANDARD_NEW_BODY(thisClass) \
303 return new thisClass;
307 #define vtkStandardNewMacro(thisClass) \
308 thisClass* thisClass::New() \
310 VTK_STANDARD_NEW_BODY(thisClass) \
314 #define vtkObjectFactoryNewMacro(thisClass) \
315 thisClass* thisClass::New() \
317 VTK_OBJECT_FACTORY_NEW_BODY(thisClass) \
323 #define vtkAbstractObjectFactoryNewMacro(thisClass) \
324 thisClass* thisClass::New() \
326 VTK_ABSTRACT_OBJECT_FACTORY_NEW_BODY(thisClass) \
virtual vtkObject * CreateObject(const char *vtkclassname)
#define VTKCOMMONCORE_EXPORT
static void CreateAllInstance(const char *vtkclassname, vtkCollection *retList)
static void RegisterFactory(vtkObjectFactory *)
virtual int GetEnableFlag(int index)
virtual const char * GetOverrideDescription(int index)
static void GetOverrideInformation(const char *name, vtkOverrideInformationCollection *)
virtual int HasOverride(const char *className)
#define vtkTypeMacro(thisClass, superclass)
abstract base class for most VTK objects
virtual void Disable(const char *className)
static void SetAllEnableFlags(int flag, const char *className)
virtual const char * GetClassOverrideName(int index)
virtual int GetNumberOfOverrides()
static void UnRegisterFactory(vtkObjectFactory *)
void RegisterOverride(const char *classOverride, const char *overrideClassName, const char *description, int enableFlag, CreateFunction createFunction)
char ** OverrideClassNames
virtual int GetEnableFlag(const char *className, const char *subclassName)
static void SetAllEnableFlags(int flag, const char *className, const char *subclassName)
static vtkObject * CreateInstance(const char *vtkclassname)
GLuint const GLchar * name
create and manipulate unsorted lists of objects
abstract base class for vtkObjectFactories
static int HasOverrideAny(const char *className)
static vtkObjectFactoryCollection * GetRegisteredFactories()
a simple class to control print indentation
static void UnRegisterAllFactories()
virtual int HasOverride(const char *className, const char *subclassName)
static void ConstructInstance(const char *vtkclassname)
vtkGetStringMacro(ExtensionsString)
maintain a list of object factories
OverrideInformation * OverrideArray
virtual void PrintSelf(ostream &os, vtkIndent indent)
virtual const char * GetDescription()=0
virtual const char * GetClassOverrideWithName(int index)
virtual void SetEnableFlag(int flag, const char *className, const char *subclassName)
virtual const char * GetVTKSourceVersion()=0