13 #ifndef mitkSerializerMacros_h
14 #define mitkSerializerMacros_h
16 #include <itkObjectFactoryBase.h>
17 #include <itkVersion.h>
19 #define MITK_REGISTER_SERIALIZER(classname) \
26 class classname##Factory : public ::itk::ObjectFactoryBase \
31 typedef classname##Factory Self; \
32 typedef itk::ObjectFactoryBase Superclass; \
33 typedef itk::SmartPointer<Self> Pointer; \
34 typedef itk::SmartPointer<const Self> ConstPointer; \
37 virtual const char *GetITKSourceVersion() const override { return ITK_SOURCE_VERSION; } \
38 virtual const char *GetDescription() const override { return "Generated factory for " #classname; } \
40 itkFactorylessNewMacro(Self); \
43 itkTypeMacro(classname##Factory, itkObjectFactoryBase); \
46 classname##Factory() \
48 itk::ObjectFactoryBase::RegisterOverride(#classname, \
50 "Generated factory for " #classname, \
52 itk::CreateObjectFunction<classname>::New()); \
55 ~classname##Factory() {} \
57 classname##Factory(const Self &);
\
58 void operator=(const Self &); \
62 class classname##RegistrationMethod \
65 classname##RegistrationMethod() \
67 m_Factory = classname##Factory::New(); \
68 itk::ObjectFactoryBase::RegisterFactory(m_Factory); \
71 ~classname##RegistrationMethod() { itk::ObjectFactoryBase::UnRegisterFactory(m_Factory); } \
73 classname##Factory::Pointer m_Factory; \
78 static mitk::classname##RegistrationMethod somestaticinitializer_##classname;