28 #ifndef itkObjectFactoryBase_h
29 #define itkObjectFactoryBase_h
82 CreateInstance(
const char * itkclassname);
88 static std::list<LightObject::Pointer>
89 CreateAllInstance(
const char * itkclassname);
107 #if !defined(ITK_LEGACY_REMOVE)
112 static constexpr
InsertionPositionEnum INSERT_AT_POSITION = InsertionPositionEnum::INSERT_AT_POSITION;
136 size_t position = 0);
145 UnRegisterAllFactories();
149 static std::list<ObjectFactoryBase *>
150 GetRegisteredFactories();
158 GetITKSourceVersion()
const = 0;
166 SetStrictVersionChecking(
bool);
168 StrictVersionCheckingOn();
170 StrictVersionCheckingOff();
172 GetStrictVersionChecking();
177 GetDescription()
const = 0;
180 virtual std::list<std::string>
181 GetClassOverrideNames();
184 virtual std::list<std::string>
185 GetClassOverrideWithNames();
188 virtual std::list<std::string>
189 GetClassOverrideDescriptions();
192 virtual std::list<bool>
197 SetEnableFlag(
bool flag,
const char * className,
const char * subclassName);
201 GetEnableFlag(
const char * className,
const char * subclassName);
207 Disable(
const char * className);
215 template <
typename TFactory>
219 struct FactoryRegistration
223 [[maybe_unused]]
static const FactoryRegistration staticFactoryRegistration = [] {
225 return FactoryRegistration{};
235 PrintSelf(std::ostream & os,
Indent indent)
const override;
239 RegisterOverride(
const char * classOverride,
240 const char * subclass,
241 const char * description,
249 CreateObject(
const char * itkclassname);
254 virtual std::list<LightObject::Pointer>
255 CreateAllObject(
const char * itkclassname);
263 class ObjectFactoryBasePrivate;
268 SynchronizeObjectFactoryBase(
void * objectFactoryBasePrivate);
276 LoadDynamicFactories();
280 LoadLibrariesInPath(
const char *);
287 void * m_LibraryHandle{};
288 unsigned long m_LibraryDate{};
289 std::string m_LibraryPath{};