MeVisLab Toolbox Reference
mlITKFixedTypesFilterSupport.h
Go to the documentation of this file.
1 /*************************************************************************************
2 **
3 ** Copyright 2007, MeVis Medical Solutions AG
4 **
5 ** The user may use this file in accordance with the license agreement provided with
6 ** the Software or, alternatively, in accordance with the terms contained in a
7 ** written agreement between the user and MeVis Medical Solutions AG.
8 **
9 ** For further information use the contact form at https://www.mevislab.de/contact
10 **
11 **************************************************************************************/
12 
13 #pragma once
14 
16 #include "mlInitSystemITKSupport.h"
17 
18 // Include most ML specific things.
19 #include "mlModuleIncludes.h"
20 #include "mlITKNonScalarSupport.h"
21 
22 //------------------------------------------------------------------------------------
26 //------------------------------------------------------------------------------------
27 #define _ML_IMPLEMENT_FIXED_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
28  case _WRAPPER_ML_INPUT_TYPE_TYPE: DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, _WRAPPER_ML_INPUT_TYPE, _WRAPPER_ITK_INPUT_TYPE, USER_CODE, CLASS_NAME, DIM); break; \
29 
30 
31 //------------------------------------------------------------------------------------
34 //------------------------------------------------------------------------------------
35 #define _ML_IMPLEMENT_FLOAT_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
36  case MLfloatType : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLfloat, MLfloat, USER_CODE, CLASS_NAME, DIM); break; \
37 
38 
39 //------------------------------------------------------------------------------------
42 //------------------------------------------------------------------------------------
43 #define _ML_IMPLEMENT_DOUBLE_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
44  case MLdoubleType: DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM); break; \
45 
46 
47 //------------------------------------------------------------------------------------
50 //------------------------------------------------------------------------------------
51 #define _ML_IMPLEMENT_FLOATS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
52  _ML_IMPLEMENT_FLOAT_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
53  _ML_IMPLEMENT_DOUBLE_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
54 
55 
56 //------------------------------------------------------------------------------------
59 //------------------------------------------------------------------------------------
60 #define _ML_IMPLEMENT_INTS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
61  case MLint8Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint8 , MLint8 , USER_CODE, CLASS_NAME, DIM); break; \
62  case MLuint8Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLuint8 , MLuint8 , USER_CODE, CLASS_NAME, DIM); break; \
63  case MLint16Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint16 , MLint16 , USER_CODE, CLASS_NAME, DIM); break; \
64  case MLuint16Type: DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLuint16, MLuint16, USER_CODE, CLASS_NAME, DIM); break; \
65  case MLint32Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint32 , MLint32 , USER_CODE, CLASS_NAME, DIM); break; \
66  case MLuint32Type: DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLuint32, MLuint32, USER_CODE, CLASS_NAME, DIM); break; \
67 
68 
69 //------------------------------------------------------------------------------------
72 //------------------------------------------------------------------------------------
73 #define _ML_IMPLEMENT_SIGNED_INTS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
74  case MLint8Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint8 , MLint8 , USER_CODE, CLASS_NAME, DIM); break; \
75  case MLint16Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint16 , MLint16 , USER_CODE, CLASS_NAME, DIM); break; \
76  case MLint32Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint32 , MLint32 , USER_CODE, CLASS_NAME, DIM); break; \
77 
78 
79 //------------------------------------------------------------------------------------
82 //------------------------------------------------------------------------------------
83 #define _ML_IMPLEMENT_SIGNED_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
84  case MLint8Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint8 , MLint8 , USER_CODE, CLASS_NAME, DIM); break; \
85  case MLint16Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint16 , MLint16 , USER_CODE, CLASS_NAME, DIM); break; \
86  case MLint32Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint32 , MLint32 , USER_CODE, CLASS_NAME, DIM); break; \
87  _ML_IMPLEMENT_FLOATS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
88 
89 
90 //------------------------------------------------------------------------------------
93 //------------------------------------------------------------------------------------
94 #define _ML_IMPLEMENT_SIGNED_ANY_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
95  _ML_IMPLEMENT_SIGNED_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
96 
97 
98 //------------------------------------------------------------------------------------
101 //------------------------------------------------------------------------------------
102 #define _ML_IMPLEMENT_ANY_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
103  _ML_IMPLEMENT_INTS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
104  _ML_IMPLEMENT_FLOATS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
105 
106 
107 //------------------------------------------------------------------------------------
111 //------------------------------------------------------------------------------------
112 #define _ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
113  switch(DATATYPE_ENUM){ \
114  _ML_FIXED_IMPL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
115  default: { ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Fixed type case not executed(_ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS)."); break; } \
116  } \
117 
118 
119 //------------------------------------------------------------------------------------
121 //------------------------------------------------------------------------------------
122 #define _ML_IMPLEMENT_TO_FIXED_ITK_2D_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM) \
123  _ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, _ML_INSTANTIATE_2D_CODE)
124 
125 //------------------------------------------------------------------------------------
127 //------------------------------------------------------------------------------------
128 #define _ML_IMPLEMENT_TO_FIXED_ITK_3D_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM) \
129  _ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, _ML_INSTANTIATE_3D_CODE)
130 
131 //------------------------------------------------------------------------------------
133 //------------------------------------------------------------------------------------
134 #define _ML_IMPLEMENT_TO_FIXED_ITK_2D3D_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM) \
135  _ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, _ML_INSTANTIATE_2D3D_CODE)
136 
137 //------------------------------------------------------------------------------------
139 //------------------------------------------------------------------------------------
140 #define _ML_IMPLEMENT_TO_FIXED_ITK_6D_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM) \
141  _ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, _ML_INSTANTIATE_6D_CODE)
142 
143 
144 //--------------------------------------------------------------------------------
148 //--------------------------------------------------------------------------------
149 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_0_2D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
150  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
151  _ML_ITK_DETERMINE_IN_REGION_0, \
152  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_0, \
153  _ML_IMPLEMENT_TO_FIXED_ITK_2D_CASES, \
154  _ML_ITK_DETERMINE_OUT_REGION_0)
155 
156 //--------------------------------------------------------------------------------
160 //--------------------------------------------------------------------------------
161 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_1_2D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
162  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
163  _ML_ITK_DETERMINE_IN_REGION_N, \
164  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_1, \
165  _ML_IMPLEMENT_TO_FIXED_ITK_2D_CASES, \
166  _ML_ITK_DETERMINE_OUT_REGION_N)
167 
168 //--------------------------------------------------------------------------------
172 //--------------------------------------------------------------------------------
173 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_2_2D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
174  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
175  _ML_ITK_DETERMINE_IN_REGION_N, \
176  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_2, \
177  _ML_IMPLEMENT_TO_FIXED_ITK_2D_CASES, \
178  _ML_ITK_DETERMINE_OUT_REGION_N)
179 
180 //--------------------------------------------------------------------------------
184 //--------------------------------------------------------------------------------
185 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_3_2D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
186  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
187  _ML_ITK_DETERMINE_IN_REGION_N, \
188  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_3, \
189  _ML_IMPLEMENT_TO_FIXED_ITK_2D_CASES, \
190  _ML_ITK_DETERMINE_OUT_REGION_N)
191 
192 
193 
194 
195 //--------------------------------------------------------------------------------
199 //--------------------------------------------------------------------------------
200 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_0_3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
201  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
202  _ML_ITK_DETERMINE_IN_REGION_0, \
203  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_0, \
204  _ML_IMPLEMENT_TO_FIXED_ITK_3D_CASES, \
205  _ML_ITK_DETERMINE_OUT_REGION_0)
206 
207 //--------------------------------------------------------------------------------
211 //--------------------------------------------------------------------------------
212 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_1_3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
213  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
214  _ML_ITK_DETERMINE_IN_REGION_N, \
215  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_1, \
216  _ML_IMPLEMENT_TO_FIXED_ITK_3D_CASES, \
217  _ML_ITK_DETERMINE_OUT_REGION_N)
218 
219 //--------------------------------------------------------------------------------
223 //--------------------------------------------------------------------------------
224 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_2_3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
225  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
226  _ML_ITK_DETERMINE_IN_REGION_N, \
227  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_2, \
228  _ML_IMPLEMENT_TO_FIXED_ITK_3D_CASES, \
229  _ML_ITK_DETERMINE_OUT_REGION_N)
230 
231 //--------------------------------------------------------------------------------
235 //--------------------------------------------------------------------------------
236 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_3_3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
237  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
238  _ML_ITK_DETERMINE_IN_REGION_N, \
239  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_3, \
240  _ML_IMPLEMENT_TO_FIXED_ITK_3D_CASES, \
241  _ML_ITK_DETERMINE_OUT_REGION_N)
242 
243 
244 
245 
246 //--------------------------------------------------------------------------------
250 //--------------------------------------------------------------------------------
251 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_0_2D3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
252  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
253  _ML_ITK_DETERMINE_IN_REGION_0, \
254  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_0, \
255  _ML_IMPLEMENT_TO_FIXED_ITK_2D3D_CASES, \
256  _ML_ITK_DETERMINE_OUT_REGION_0)
257 
258 //--------------------------------------------------------------------------------
262 //--------------------------------------------------------------------------------
263 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_1_2D3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
264  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
265  _ML_ITK_DETERMINE_IN_REGION_N, \
266  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_1, \
267  _ML_IMPLEMENT_TO_FIXED_ITK_2D3D_CASES, \
268  _ML_ITK_DETERMINE_OUT_REGION_N)
269 
270 //--------------------------------------------------------------------------------
274 //--------------------------------------------------------------------------------
275 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_2_2D3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
276  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
277  _ML_ITK_DETERMINE_IN_REGION_N, \
278  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_2, \
279  _ML_IMPLEMENT_TO_FIXED_ITK_2D3D_CASES, \
280  _ML_ITK_DETERMINE_OUT_REGION_N)
281 
282 //--------------------------------------------------------------------------------
286 //--------------------------------------------------------------------------------
287 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_3_2D3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
288  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
289  _ML_ITK_DETERMINE_IN_REGION_N, \
290  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_3, \
291  _ML_IMPLEMENT_TO_FIXED_ITK_2D3D_CASES, \
292  _ML_ITK_DETERMINE_OUT_REGION_N)
293 
294 
295 
296 
297 //--------------------------------------------------------------------------------
300 //--------------------------------------------------------------------------------
301 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_0_6D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
302  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
303  _ML_ITK_DETERMINE_IN_REGION_N, \
304  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_0, \
305  _ML_IMPLEMENT_TO_FIXED_ITK_6D_CASES, \
306  _ML_ITK_DETERMINE_OUT_REGION_N)
307 
308 //--------------------------------------------------------------------------------
311 //--------------------------------------------------------------------------------
312 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_1_6D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
313  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
314  _ML_ITK_DETERMINE_IN_REGION_N, \
315  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_1, \
316  _ML_IMPLEMENT_TO_FIXED_ITK_6D_CASES, \
317  _ML_ITK_DETERMINE_OUT_REGION_N)
318 
319 //--------------------------------------------------------------------------------
322 //--------------------------------------------------------------------------------
323 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_2_6D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
324  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
325  _ML_ITK_DETERMINE_IN_REGION_N, \
326  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_2, \
327  _ML_IMPLEMENT_TO_FIXED_ITK_6D_CASES, \
328  _ML_ITK_DETERMINE_OUT_REGION_N)
329 
330 //--------------------------------------------------------------------------------
333 //--------------------------------------------------------------------------------
334 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_3_6D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
335  _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE, \
336  _ML_ITK_DETERMINE_IN_REGION_N, \
337  ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_3, \
338  _ML_IMPLEMENT_TO_FIXED_ITK_6D_CASES, \
339  _ML_ITK_DETERMINE_OUT_REGION_N)
340