41 #ifndef vtkObjectFactory_h 
   42 #define vtkObjectFactory_h 
   45 #include "vtkCommonCoreModule.h"  
   67   static vtkObject* CreateInstance(
const char* vtkclassname,
 
   68                                    bool isAbstract = 
false);
 
   76   VTK_LEGACY(
static void ConstructInstance(
const char* vtkclassname));
 
   84   static void CreateAllInstance(
const char* vtkclassname,
 
  102   static void UnRegisterAllFactories();
 
  114   static int HasOverrideAny(
const char* className);
 
  120   static void GetOverrideInformation(
const char* 
name,
 
  128                                 const char* className);
 
  134                                 const char* className,
 
  135                                 const char* subclassName);
 
  153   virtual const char* GetVTKSourceVersion() = 0;
 
  158   virtual const char* GetDescription() = 0;
 
  163   virtual int GetNumberOfOverrides();
 
  168   virtual const char* GetClassOverrideName(
int index);
 
  174   virtual const char* GetClassOverrideWithName(
int index);
 
  185   virtual const char* GetOverrideDescription(
int index);
 
  193                              const char* className,
 
  194                              const char* subclassName);
 
  195   virtual vtkTypeBool GetEnableFlag(
const char* className,
 
  196                                 const char* subclassName);
 
  202   virtual int HasOverride(
const char* className);
 
  206   virtual int HasOverride(
const char* className, 
const char* subclassName);
 
  213   virtual void Disable(
const char* className);
 
  229   void RegisterOverride(
const char* classOverride,
 
  230                         const char* overrideClassName,
 
  233                         CreateFunction createFunction);
 
  240   virtual vtkObject* CreateObject(
const char* vtkclassname );
 
  259   void GrowOverrideArray();
 
  269   static void RegisterDefaults();
 
  273   static void LoadDynamicFactories();
 
  277   static void LoadLibrariesInPath( 
const char*);
 
  285   char* LibraryVTKVersion;
 
  286   char* LibraryCompilerUsed;
 
  297   vtkObjectFactoryRegistryCleanup();
 
  298   ~vtkObjectFactoryRegistryCleanup();
 
  301   vtkObjectFactoryRegistryCleanup(
const vtkObjectFactoryRegistryCleanup& other) VTK_DELETE_FUNCTION;
 
  302   vtkObjectFactoryRegistryCleanup& operator=(
const vtkObjectFactoryRegistryCleanup& rhs) VTK_DELETE_FUNCTION;
 
  310 #define VTK_CREATE_CREATE_FUNCTION(classname) \ 
  311 static vtkObject* vtkObjectFactoryCreate##classname() \ 
  312 { return classname::New(); } 
  316 #define VTK_FACTORY_INTERFACE_EXPORT VTKCOMMONCORE_EXPORT 
  323 #define VTK_FACTORY_INTERFACE_IMPLEMENT(factoryName)  \ 
  325 VTK_FACTORY_INTERFACE_EXPORT                    \ 
  326 const char* vtkGetFactoryCompilerUsed()         \ 
  328   return VTK_CXX_COMPILER;                      \ 
  331 VTK_FACTORY_INTERFACE_EXPORT                    \ 
  332 const char* vtkGetFactoryVersion()              \ 
  334   return VTK_SOURCE_VERSION;                    \ 
  337 VTK_FACTORY_INTERFACE_EXPORT                    \ 
  338 vtkObjectFactory* vtkLoad()                     \ 
  340   return factoryName ::New();                   \ 
  344 #define VTK_OBJECT_FACTORY_NEW_BODY(thisClass) \ 
  345   vtkObject* ret = vtkObjectFactory::CreateInstance(#thisClass, false); \ 
  348     return static_cast<thisClass*>(ret); \ 
  350   thisClass *result = new thisClass; \ 
  351   result->InitializeObjectBase(); \ 
  357 #define VTK_ABSTRACT_OBJECT_FACTORY_NEW_BODY(thisClass) \ 
  358   vtkObject* ret = vtkObjectFactory::CreateInstance(#thisClass, true); \ 
  361     return static_cast<thisClass*>(ret); \ 
  363   vtkGenericWarningMacro("Error: no override found for '" #thisClass "'."); \ 
  367 #if defined(VTK_ALL_NEW_OBJECT_FACTORY) 
  368 # define VTK_STANDARD_NEW_BODY(thisClass) \ 
  369   VTK_OBJECT_FACTORY_NEW_BODY(thisClass) 
  371 # define VTK_STANDARD_NEW_BODY(thisClass) \ 
  372   thisClass *result = new thisClass; \ 
  373   result->InitializeObjectBase(); \ 
  378 #define vtkStandardNewMacro(thisClass) \ 
  379   thisClass* thisClass::New() \ 
  381   VTK_STANDARD_NEW_BODY(thisClass) \ 
  385 #define vtkObjectFactoryNewMacro(thisClass) \ 
  386   thisClass* thisClass::New() \ 
  388   VTK_OBJECT_FACTORY_NEW_BODY(thisClass) \ 
  394 #define vtkAbstractObjectFactoryNewMacro(thisClass) \ 
  395   thisClass* thisClass::New() \ 
  397   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
 
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions. 
 
maintain a list of object factories 
 
char ** OverrideClassNames
 
create and manipulate unsorted lists of objects 
 
abstract base class for vtkObjectFactories