18 #pragma warning(disable : 4786)
19 #pragma warning(disable : 4068)
23 #include "itkObject.h"
36 #define mitkClassMacro(className, SuperClassName) \
37 typedef className Self; \
38 typedef SuperClassName Superclass; \
39 typedef itk::SmartPointer<Self> Pointer; \
40 typedef itk::SmartPointer<const Self> ConstPointer; \
41 static const char *GetStaticNameOfClass() { return #className; } \
42 virtual std::vector<std::string> GetClassHierarchy() const override { return mitk::GetClassHierarchy<Self>(); } \
43 itkTypeMacro(className, SuperClassName);
45 #define mitkClassMacroItkParent(className, SuperClassName) \
46 typedef className Self; \
47 typedef SuperClassName Superclass; \
48 typedef itk::SmartPointer<Self> Pointer; \
49 typedef itk::SmartPointer<const Self> ConstPointer; \
50 static const char *GetStaticNameOfClass() { return #className; } \
51 virtual std::vector<std::string> GetClassHierarchy() const { return mitk::GetClassHierarchy<Self>(); } \
52 itkTypeMacro(className, SuperClassName);
57 #define mitkClassMacroNoParent(className) \
58 typedef className Self; \
59 typedef itk::SmartPointer<Self> Pointer; \
60 typedef itk::SmartPointer<const Self> ConstPointer; \
61 static const char *GetStaticNameOfClass() { return #className; } \
62 virtual std::vector<std::string> GetClassHierarchy() const { return mitk::GetClassHierarchy<Self>(); } \
63 itkTypeMacroNoParent(className)
68 #define mitkNewMacro1Param(classname, type) \
70 static Pointer New(type _arg) \
73 Pointer smartPtr = new classname(_arg); \
74 smartPtr->UnRegister(); \
81 #define mitkNewMacro2Param(classname, typea, typeb) \
83 static Pointer New(typea _arga, typeb _argb) \
86 Pointer smartPtr = new classname(_arga, _argb); \
87 smartPtr->UnRegister(); \
94 #define mitkNewMacro3Param(classname, typea, typeb, typec) \
96 static Pointer New(typea _arga, typeb _argb, typec _argc) \
99 Pointer smartPtr = new classname(_arga, _argb, _argc); \
100 smartPtr->UnRegister(); \
107 #define mitkNewMacro4Param(classname, typea, typeb, typec, typed) \
109 static Pointer New(typea _arga, typeb _argb, typec _argc, typed _argd) \
112 Pointer smartPtr = new classname(_arga, _argb, _argc, _argd); \
113 smartPtr->UnRegister(); \
120 #define mitkNewMacro5Param(classname, typea, typeb, typec, typed, typee) \
122 static Pointer New(typea _arga, typeb _argb, typec _argc, typed _argd, typee _arge) \
125 Pointer smartPtr = new classname(_arga, _argb, _argc, _argd, _arge); \
126 smartPtr->UnRegister(); \
133 #define mitkNewMacro6Param(classname, typea, typeb, typec, typed, typee, typef) \
135 static Pointer New(typea _arga, typeb _argb, typec _argc, typed _argd, typee _arge, typef _argf) \
138 Pointer smartPtr = new classname(_arga, _argb, _argc, _argd, _arge, _argf); \
139 smartPtr->UnRegister(); \
145 #define mitkGetObjectMacroConst(name, type) \
146 virtual type *Get##name() const \
148 itkDebugMacro("returning " #name " address " << this->m_##name); \
149 return this->m_##name.GetPointer(); \
154 #define mitkCloneMacro(classname) \
155 virtual itk::LightObject::Pointer InternalClone() const override \
158 Pointer smartPtr = new classname(*this); \
159 smartPtr->UnRegister(); \
160 return smartPtr.GetPointer(); \
167 #ifdef MITK_NO_DEPRECATED_WARNINGS
168 #define DEPRECATED(func) func
169 #elif defined(__GNUC__)
170 #define DEPRECATED(...) __VA_ARGS__ __attribute__((deprecated))
171 #elif defined(_MSC_VER)
172 #define DEPRECATED(...) __declspec(deprecated)##__VA_ARGS__
174 #pragma message("WARNING: You need to implement DEPRECATED for your compiler!")
175 #define DEPRECATED(func) func
182 #if defined(__clang__) || defined(__GNUC__)
183 #define MITK_EXPORT __attribute__((visibility("default")))
184 #define MITK_IMPORT __attribute__((visibility("default")))
185 #define MITK_LOCAL __attribute__((visibility("hidden")))
187 #define MITK_EXPORT __declspec(dllexport)
188 #define MITK_IMPORT __declspec(dllimport)
unsigned int MapperSlotId