13 #ifndef mitkSerializerMacros_h
14 #define mitkSerializerMacros_h
28 #include <itkObjectFactoryBase.h>
29 #include <itkVersion.h>
51 #define MITK_REGISTER_SERIALIZER(classname) \
58 class classname##Factory : public ::itk::ObjectFactoryBase \
63 typedef classname##Factory Self; \
64 typedef itk::ObjectFactoryBase Superclass; \
65 typedef itk::SmartPointer<Self> Pointer; \
66 typedef itk::SmartPointer<const Self> ConstPointer; \
69 virtual const char *GetITKSourceVersion() const override { return ITK_SOURCE_VERSION; } \
70 virtual const char *GetDescription() const override { return "Generated factory for " #classname; } \
72 itkFactorylessNewMacro(Self); \
75 itkTypeMacro(classname##Factory, itkObjectFactoryBase); \
78 classname##Factory() \
80 itk::ObjectFactoryBase::RegisterOverride(#classname, \
82 "Generated factory for " #classname, \
84 itk::CreateObjectFunction<classname>::New()); \
87 ~classname##Factory() {} \
89 classname##Factory(const Self &);
\
90 void operator=(const Self &); \
94 class classname##RegistrationMethod \
97 classname##RegistrationMethod() \
99 m_Factory = classname##Factory::New(); \
100 itk::ObjectFactoryBase::RegisterFactory(m_Factory); \
103 ~classname##RegistrationMethod() { itk::ObjectFactoryBase::UnRegisterFactory(m_Factory); } \
105 classname##Factory::Pointer m_Factory; \
110 static mitk::classname##RegistrationMethod somestaticinitializer_##classname;