28#ifndef itkObjectFactoryBase_h
29#define itkObjectFactoryBase_h
89 static std::list<LightObject::Pointer>
102 static std::list<std::string>
123#if !defined(ITK_LEGACY_REMOVE)
128 static constexpr InsertionPositionEnum INSERT_AT_POSITION = InsertionPositionEnum::INSERT_AT_POSITION;
152 size_t position = 0);
164 static std::list<ObjectFactoryBase *>
195 virtual std::list<std::string>
199 virtual std::list<std::string>
203 virtual std::list<std::string>
207 virtual std::list<bool>
212 SetEnableFlag(
bool flag,
const char * className,
const char * subclassName);
230 template <
typename TFactory>
234 struct FactoryRegistration
238 [[maybe_unused]]
static const FactoryRegistration staticFactoryRegistration = [] {
240 return FactoryRegistration{};
255 const char * subclass,
256 const char * description,
269 virtual std::list<LightObject::Pointer>
278 class ObjectFactoryBasePrivate;
Define API for object creation callback functions.
Control indentation during Print() invocation.
SmartPointer< Self > Pointer
virtual void SetEnableFlag(bool flag, const char *className, const char *subclassName)
virtual std::list< std::string > GetClassOverrideDescriptions()
unsigned long m_LibraryDate
static void UnRegisterAllFactories()
static void StrictVersionCheckingOn()
static void UnRegisterFactory(ObjectFactoryBase *)
static std::list< std::string > GetAutoloadPaths()
std::string m_LibraryPath
virtual const char * GetITKSourceVersion() const =0
~ObjectFactoryBase() override
const char * GetLibraryPath()
void PrintSelf(std::ostream &os, Indent indent) const override
static LightObject::Pointer CreateInstance(const char *itkclassname)
void RegisterOverride(const char *classOverride, const char *subclass, const char *description, bool enableFlag, CreateObjectFunctionBase *createFunction)
static void RegisterFactoryInternal(ObjectFactoryBase *)
virtual std::list< std::string > GetClassOverrideNames()
virtual void Disable(const char *className)
virtual LightObject::Pointer CreateObject(const char *itkclassname)
virtual std::list< LightObject::Pointer > CreateAllObject(const char *itkclassname)
static ObjectFactoryBasePrivate * m_PimplGlobals
virtual std::list< bool > GetEnableFlags()
static void DeleteNonInternalFactory(ObjectFactoryBase *)
static bool GetStrictVersionChecking()
SmartPointer< const Self > ConstPointer
static bool RegisterFactory(ObjectFactoryBase *, InsertionPositionEnum where=InsertionPositionEnum::INSERT_AT_BACK, vcl_size_t position=0)
const std::unique_ptr< OverrideMap > m_OverrideMap
static void LoadDynamicFactories()
virtual const char * GetDescription() const =0
static void SynchronizeObjectFactoryBase(void *objectFactoryBasePrivate)
ObjectFactoryEnums::InsertionPosition InsertionPositionEnum
SmartPointer< Self > Pointer
static void StrictVersionCheckingOff()
static void RegisterInternalFactoryOnce()
static std::list< ObjectFactoryBase * > GetRegisteredFactories()
virtual bool GetEnableFlag(const char *className, const char *subclassName)
static void SetAutoloadPaths(const std::list< std::string > &paths)
virtual std::list< std::string > GetClassOverrideWithNames()
static void SetStrictVersionChecking(bool)
static std::list< LightObject::Pointer > CreateAllInstance(const char *itkclassname)
itkGetGlobalDeclarationMacro(ObjectFactoryBasePrivate, PimplGlobals)
static void LoadLibrariesInPath(const char *)
Implements transparent reference counting.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....