38 #ifndef vtkObjectFactory_h 39 #define vtkObjectFactory_h 41 #include "vtkCommonCoreModule.h" 66 static vtkObject* CreateInstance(
const char* vtkclassname,
bool isAbstract =
false);
74 static void CreateAllInstance(
const char* vtkclassname,
vtkCollection* retList);
91 static void UnRegisterAllFactories();
103 static int HasOverrideAny(
const char* className);
115 static void SetAllEnableFlags(
vtkTypeBool flag,
const char* className);
120 static void SetAllEnableFlags(
vtkTypeBool flag,
const char* className,
const char* subclassName);
138 virtual const char* GetVTKSourceVersion() = 0;
143 virtual const char* GetDescription() = 0;
148 virtual int GetNumberOfOverrides();
153 virtual const char* GetClassOverrideName(
int index);
159 virtual const char* GetClassOverrideWithName(
int index);
170 virtual const char* GetOverrideDescription(
int index);
177 virtual void SetEnableFlag(
vtkTypeBool flag,
const char* className,
const char* subclassName);
178 virtual vtkTypeBool GetEnableFlag(
const char* className,
const char* subclassName);
184 virtual int HasOverride(
const char* className);
188 virtual int HasOverride(
const char* className,
const char* subclassName);
195 virtual void Disable(
const char* className);
201 vtkGetStringMacro(LibraryPath);
210 void RegisterOverride(
const char* classOverride,
const char* overrideClassName,
211 const char*
description,
int enableFlag, CreateFunction createFunction);
218 virtual vtkObject* CreateObject(
const char* vtkclassname);
237 void GrowOverrideArray();
247 static void RegisterDefaults();
251 static void LoadDynamicFactories();
255 static void LoadLibrariesInPath(
const std::string&);
263 char* LibraryVTKVersion;
264 char* LibraryCompilerUsed;
288 #define VTK_CREATE_CREATE_FUNCTION(classname) \ 289 static vtkObject* vtkObjectFactoryCreate##classname() { return classname::New(); } 293 #define VTK_FACTORY_INTERFACE_EXPORT VTKCOMMONCORE_EXPORT 300 #define VTK_FACTORY_INTERFACE_IMPLEMENT(factoryName) \ 301 extern "C" VTK_FACTORY_INTERFACE_EXPORT const char* vtkGetFactoryCompilerUsed() \ 303 return VTK_CXX_COMPILER; \ 305 extern "C" VTK_FACTORY_INTERFACE_EXPORT const char* vtkGetFactoryVersion() \ 307 return VTK_SOURCE_VERSION; \ 309 extern "C" VTK_FACTORY_INTERFACE_EXPORT vtkObjectFactory* vtkLoad() \ 311 return factoryName ::New(); \ 315 #define VTK_OBJECT_FACTORY_NEW_BODY(thisClass) \ 316 vtkObject* ret = vtkObjectFactory::CreateInstance(#thisClass, false); \ 319 return static_cast<thisClass*>(ret); \ 321 auto result = new thisClass; \ 322 result->InitializeObjectBase(); \ 328 #define VTK_ABSTRACT_OBJECT_FACTORY_NEW_BODY(thisClass) \ 329 vtkObject* ret = vtkObjectFactory::CreateInstance(#thisClass, true); \ 332 return static_cast<thisClass*>(ret); \ 334 vtkGenericWarningMacro("Error: no override found for '" #thisClass "'."); \ 338 #if defined(VTK_ALL_NEW_OBJECT_FACTORY) 339 #define VTK_STANDARD_NEW_BODY(thisClass) VTK_OBJECT_FACTORY_NEW_BODY(thisClass) 341 #define VTK_STANDARD_NEW_BODY(thisClass) \ 342 auto result = new thisClass; \ 343 result->InitializeObjectBase(); \ 348 #define vtkStandardNewMacro(thisClass) \ 349 thisClass* thisClass::New() { VTK_STANDARD_NEW_BODY(thisClass); } 352 #define vtkObjectFactoryNewMacro(thisClass) \ 353 thisClass* thisClass::New() { VTK_OBJECT_FACTORY_NEW_BODY(thisClass); } 358 #define vtkAbstractObjectFactoryNewMacro(thisClass) \ 359 thisClass* thisClass::New() { VTK_ABSTRACT_OBJECT_FACTORY_NEW_BODY(thisClass); }
abstract base class for most VTK objects
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static vtkObjectFactoryRegistryCleanup vtkObjectFactoryRegistryCleanupInstance
a simple class to control print indentation
OverrideInformation * OverrideArray
maintain a list of object factories
char ** OverrideClassNames
create and manipulate ordered lists of objects
abstract base class for vtkObjectFactories