28 #ifndef itkFEMFactoryBase_h
29 #define itkFEMFactoryBase_h
32 #include "ITKFEMExport.h"
52 virtual const char * GetITKSourceVersion(
void) const ITK_OVERRIDE;
54 virtual const
char * GetDescription(
void) const ITK_OVERRIDE;
60 itkFactorylessNewMacro(
Self);
63 static
void RegisterDefaultTypes();
66 static FEMFactoryBase * GetFactory()
68 if( m_Factory == ITK_NULLPTR )
70 m_CreationLock.Lock();
74 if( m_Factory == ITK_NULLPTR )
80 std::ostringstream message;
81 message <<
"itk::ERROR: " <<
"FEMFactoryBase"
82 <<
" instance not created";
89 m_CreationLock.Unlock();
90 m_Factory->RegisterDefaultTypes();
97 const char* overrideClassName,
98 const char* description,
102 this->RegisterOverride( classOverride, overrideClassName, description, enableFlag, createFunction );
111 void operator=(
const Self &);
Critical section locking class that can be allocated on the stack.
Light weight base class for most itk classes.
SmartPointer< Self > Pointer
ObjectFactoryBase Superclass
ObjectType * GetPointer() const
Create instances of classes using an object factory.
static FEMFactoryBase * m_Factory
SmartPointer< const Self > ConstPointer
Standard exception handling object.
Define API for object creation callback functions.
static SimpleFastMutexLock m_CreationLock
Create instances of FEM Objects. This includes Elements, Loads, and Materials.
static bool RegisterFactory(ObjectFactoryBase *, InsertionPositionType where=INSERT_AT_BACK, vcl_size_t position=0)
void RegisterType(const char *classOverride, const char *overrideClassName, const char *description, bool enableFlag, CreateObjectFunctionBase *createFunction)