17 #include <itkObject.h>
30 #define mitkClassMacro(className, SuperClassName) \
31 typedef className Self; \
32 typedef SuperClassName Superclass; \
33 typedef itk::SmartPointer<Self> Pointer; \
34 typedef itk::SmartPointer<const Self> ConstPointer; \
35 static const char *GetStaticNameOfClass() { return #className; } \
36 virtual std::vector<std::string> GetClassHierarchy() const override { return mitk::GetClassHierarchy<Self>(); } \
37 itkTypeMacro(className, SuperClassName);
39 #define mitkClassMacroItkParent(className, SuperClassName) \
40 typedef className Self; \
41 typedef SuperClassName Superclass; \
42 typedef itk::SmartPointer<Self> Pointer; \
43 typedef itk::SmartPointer<const Self> ConstPointer; \
44 static const char *GetStaticNameOfClass() { return #className; } \
45 virtual std::vector<std::string> GetClassHierarchy() const { return mitk::GetClassHierarchy<Self>(); } \
46 itkTypeMacro(className, SuperClassName);
51 #define mitkClassMacroNoParent(className) \
52 typedef className Self; \
53 typedef itk::SmartPointer<Self> Pointer; \
54 typedef itk::SmartPointer<const Self> ConstPointer; \
55 static const char *GetStaticNameOfClass() { return #className; } \
56 virtual std::vector<std::string> GetClassHierarchy() const { return mitk::GetClassHierarchy<Self>(); } \
57 itkTypeMacroNoParent(className)
62 #define mitkNewMacro1Param(classname, type) \
64 static Pointer New(type _arg) \
67 Pointer smartPtr = new classname(_arg); \
68 smartPtr->UnRegister(); \
75 #define mitkNewMacro2Param(classname, typea, typeb) \
77 static Pointer New(typea _arga, typeb _argb) \
80 Pointer smartPtr = new classname(_arga, _argb); \
81 smartPtr->UnRegister(); \
88 #define mitkNewMacro3Param(classname, typea, typeb, typec) \
90 static Pointer New(typea _arga, typeb _argb, typec _argc) \
93 Pointer smartPtr = new classname(_arga, _argb, _argc); \
94 smartPtr->UnRegister(); \
101 #define mitkNewMacro4Param(classname, typea, typeb, typec, typed) \
103 static Pointer New(typea _arga, typeb _argb, typec _argc, typed _argd) \
106 Pointer smartPtr = new classname(_arga, _argb, _argc, _argd); \
107 smartPtr->UnRegister(); \
114 #define mitkNewMacro5Param(classname, typea, typeb, typec, typed, typee) \
116 static Pointer New(typea _arga, typeb _argb, typec _argc, typed _argd, typee _arge) \
119 Pointer smartPtr = new classname(_arga, _argb, _argc, _argd, _arge); \
120 smartPtr->UnRegister(); \
127 #define mitkNewMacro6Param(classname, typea, typeb, typec, typed, typee, typef) \
129 static Pointer New(typea _arga, typeb _argb, typec _argc, typed _argd, typee _arge, typef _argf) \
132 Pointer smartPtr = new classname(_arga, _argb, _argc, _argd, _arge, _argf); \
133 smartPtr->UnRegister(); \
139 #define mitkGetObjectMacroConst(name, type) \
140 virtual type *Get##name() const \
142 itkDebugMacro("returning " #name " address " << this->m_##name); \
143 return this->m_##name.GetPointer(); \
148 #define mitkCloneMacro(classname) \
149 virtual itk::LightObject::Pointer InternalClone() const override \
152 Pointer smartPtr = new classname(*this); \
153 smartPtr->UnRegister(); \
154 return smartPtr.GetPointer(); \
169 #define mitkOverrideSetStringMacro(name) \
170 void Set##name(const char *_arg) override \
172 if (_arg && (_arg == this->m_##name)) \
178 this->m_##name = _arg; \
182 this->m_##name = ""; \
186 void Set##name(const std::string &_arg) { this->Set##name(_arg.c_str()); } \
187 ITK_MACROEND_NOOP_STATEMENT
189 #define mitkOverrideGetStringMacro(name) \
190 const char *Get##name() const override { return this->m_##name.c_str(); } \
191 ITK_MACROEND_NOOP_STATEMENT
193 #define mitkOverrideSetConstObjectMacro(name, type) \
194 void Set##name(const type *_arg) override \
196 itkDebugMacro("setting " << #name " to " << _arg); \
197 if (this->m_##name != _arg) \
199 this->m_##name = _arg; \
203 ITK_MACROEND_NOOP_STATEMENT
205 #define mitkOverrideGetConstObjectMacro(name, type) \
206 const type *Get##name() const override { return this->m_##name.GetPointer(); } \
207 ITK_MACROEND_NOOP_STATEMENT
213 #if defined(__clang__) || defined(__GNUC__)
214 #define MITK_EXPORT __attribute__((visibility("default")))
215 #define MITK_IMPORT __attribute__((visibility("default")))
216 #define MITK_LOCAL __attribute__((visibility("hidden")))
218 #define MITK_EXPORT __declspec(dllexport)
219 #define MITK_IMPORT __declspec(dllimport)
unsigned int MapperSlotId