MeVisLabToolboxReference
FMEwork/ITK/Sources/ITK/MLITK/ITKSupport/mlITKFixedTypesFilterSupport.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //----------------------------------------------------------------------------------
00008 
00013 //----------------------------------------------------------------------------------
00014 #ifndef __mlITKFixedTypesFilterSupport_H
00015 #define __mlITKFixedTypesFilterSupport_H
00016 
00018 #include "mlInitSystemITKSupport.h"
00019 
00020 // Include most ML specific things.
00021 #ifndef __mlModuleIncludes_H
00022 #include "mlModuleIncludes.h"
00023 #endif
00024 
00025 #ifndef __mlITKNonScalarSupport_H
00026 #include "mlITKNonScalarSupport.h"
00027 #endif
00028 
00029 //------------------------------------------------------------------------------------
00033 //------------------------------------------------------------------------------------
00034 #define _ML_IMPLEMENT_FIXED_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00035     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; \
00036 
00037 
00038 //------------------------------------------------------------------------------------
00041 //------------------------------------------------------------------------------------
00042 #define _ML_IMPLEMENT_FLOAT_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                \
00043     case MLfloatType : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLfloat,  MLfloat,  USER_CODE, CLASS_NAME, DIM); break; \
00044 
00045 
00046 //------------------------------------------------------------------------------------
00049 //------------------------------------------------------------------------------------
00050 #define _ML_IMPLEMENT_DOUBLE_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)               \
00051     case MLdoubleType: DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM); break; \
00052 
00053 
00054 //------------------------------------------------------------------------------------
00057 //------------------------------------------------------------------------------------
00058 #define _ML_IMPLEMENT_FLOATS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                \
00059     _ML_IMPLEMENT_FLOAT_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                     \
00060     _ML_IMPLEMENT_DOUBLE_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                    \
00061 
00062 
00063 //------------------------------------------------------------------------------------
00066 //------------------------------------------------------------------------------------
00067 #define _ML_IMPLEMENT_INTS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                 \
00068     case MLint8Type  : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint8  , MLint8  , USER_CODE, CLASS_NAME, DIM); break; \
00069     case MLuint8Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLuint8 , MLuint8 , USER_CODE, CLASS_NAME, DIM); break; \
00070     case MLint16Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint16 , MLint16 , USER_CODE, CLASS_NAME, DIM); break; \
00071     case MLuint16Type: DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLuint16, MLuint16, USER_CODE, CLASS_NAME, DIM); break; \
00072     case MLint32Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint32 , MLint32 , USER_CODE, CLASS_NAME, DIM); break; \
00073     case MLuint32Type: DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLuint32, MLuint32, USER_CODE, CLASS_NAME, DIM); break; \
00074 
00075 
00076 //------------------------------------------------------------------------------------
00079 //------------------------------------------------------------------------------------
00080 #define _ML_IMPLEMENT_SIGNED_INTS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)          \
00081     case MLint8Type  : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint8  , MLint8  , USER_CODE, CLASS_NAME, DIM); break; \
00082     case MLint16Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint16 , MLint16 , USER_CODE, CLASS_NAME, DIM); break; \
00083     case MLint32Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint32 , MLint32 , USER_CODE, CLASS_NAME, DIM); break; \
00084 
00085 
00086 //------------------------------------------------------------------------------------
00089 //------------------------------------------------------------------------------------
00090 #define _ML_IMPLEMENT_SIGNED_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)               \
00091     case MLint8Type  : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint8  , MLint8  , USER_CODE, CLASS_NAME, DIM); break; \
00092     case MLint16Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint16 , MLint16 , USER_CODE, CLASS_NAME, DIM); break; \
00093     case MLint32Type : DIM_INST(_WRAPPER_ML_OUTPUT_TYPE, _WRAPPER_ITK_OUTPUT_TYPE, MLint32 , MLint32 , USER_CODE, CLASS_NAME, DIM); break; \
00094     _ML_IMPLEMENT_FLOATS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                   \
00095 
00096 
00097 //------------------------------------------------------------------------------------
00100 //------------------------------------------------------------------------------------
00101 #define _ML_IMPLEMENT_SIGNED_ANY_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)           \
00102    _ML_IMPLEMENT_SIGNED_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                    \
00103 
00104 
00105 //------------------------------------------------------------------------------------
00108 //------------------------------------------------------------------------------------
00109 #define _ML_IMPLEMENT_ANY_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)  \
00110     _ML_IMPLEMENT_INTS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)     \
00111     _ML_IMPLEMENT_FLOATS_TO_FIXED_WRAPPER_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)   \
00112 
00113 
00114 //------------------------------------------------------------------------------------
00118 //------------------------------------------------------------------------------------
00119 #define _ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00120   switch(DATATYPE_ENUM){                                                                                            \
00121     _ML_FIXED_IMPL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                          \
00122     default: { ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Fixed type case not executed(_ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS)."); break; }             \
00123   }                                                                                                                 \
00124 
00125 
00126 //------------------------------------------------------------------------------------
00128 //------------------------------------------------------------------------------------
00129 #define _ML_IMPLEMENT_TO_FIXED_ITK_2D_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM)   \
00130   _ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, _ML_INSTANTIATE_2D_CODE)
00131 
00132 //------------------------------------------------------------------------------------
00134 //------------------------------------------------------------------------------------
00135 #define _ML_IMPLEMENT_TO_FIXED_ITK_3D_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM)   \
00136   _ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, _ML_INSTANTIATE_3D_CODE)
00137 
00138 //------------------------------------------------------------------------------------
00140 //------------------------------------------------------------------------------------
00141 #define _ML_IMPLEMENT_TO_FIXED_ITK_2D3D_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM)   \
00142   _ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, _ML_INSTANTIATE_2D3D_CODE)
00143 
00144 //------------------------------------------------------------------------------------
00146 //------------------------------------------------------------------------------------
00147 #define _ML_IMPLEMENT_TO_FIXED_ITK_6D_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM)   \
00148   _ML_IMPLEMENT_TO_FIXED_ITK_CASES_ALL_DIMS(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, _ML_INSTANTIATE_6D_CODE)
00149 
00150 
00151 //--------------------------------------------------------------------------------
00155 //--------------------------------------------------------------------------------
00156 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_0_2D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00157   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00158                   _ML_ITK_DETERMINE_IN_REGION_0,                                    \
00159                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_0,                                \
00160                   _ML_IMPLEMENT_TO_FIXED_ITK_2D_CASES,                              \
00161                   _ML_ITK_DETERMINE_OUT_REGION_0)
00162 
00163 //--------------------------------------------------------------------------------
00167 //--------------------------------------------------------------------------------
00168 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_1_2D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00169   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00170                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00171                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_1,                                \
00172                   _ML_IMPLEMENT_TO_FIXED_ITK_2D_CASES,                              \
00173                   _ML_ITK_DETERMINE_OUT_REGION_N)
00174 
00175 //--------------------------------------------------------------------------------
00179 //--------------------------------------------------------------------------------
00180 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_2_2D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00181   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00182                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00183                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_2,                                \
00184                   _ML_IMPLEMENT_TO_FIXED_ITK_2D_CASES,                              \
00185                   _ML_ITK_DETERMINE_OUT_REGION_N)
00186 
00187 //--------------------------------------------------------------------------------
00191 //--------------------------------------------------------------------------------
00192 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_3_2D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00193   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00194                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00195                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_3,                                \
00196                   _ML_IMPLEMENT_TO_FIXED_ITK_2D_CASES,                              \
00197                   _ML_ITK_DETERMINE_OUT_REGION_N)
00198 
00199 
00200 
00201 
00202 //--------------------------------------------------------------------------------
00206 //--------------------------------------------------------------------------------
00207 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_0_3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00208   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00209                   _ML_ITK_DETERMINE_IN_REGION_0,                                    \
00210                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_0,                                \
00211                   _ML_IMPLEMENT_TO_FIXED_ITK_3D_CASES,                              \
00212                   _ML_ITK_DETERMINE_OUT_REGION_0)
00213 
00214 //--------------------------------------------------------------------------------
00218 //--------------------------------------------------------------------------------
00219 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_1_3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00220   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00221                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00222                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_1,                                \
00223                   _ML_IMPLEMENT_TO_FIXED_ITK_3D_CASES,                              \
00224                   _ML_ITK_DETERMINE_OUT_REGION_N)
00225 
00226 //--------------------------------------------------------------------------------
00230 //--------------------------------------------------------------------------------
00231 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_2_3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00232   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00233                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00234                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_2,                                \
00235                   _ML_IMPLEMENT_TO_FIXED_ITK_3D_CASES,                              \
00236                   _ML_ITK_DETERMINE_OUT_REGION_N)
00237 
00238 //--------------------------------------------------------------------------------
00242 //--------------------------------------------------------------------------------
00243 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_3_3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00244   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00245                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00246                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_3,                                \
00247                   _ML_IMPLEMENT_TO_FIXED_ITK_3D_CASES,                              \
00248                   _ML_ITK_DETERMINE_OUT_REGION_N)
00249 
00250 
00251 
00252 
00253 //--------------------------------------------------------------------------------
00257 //--------------------------------------------------------------------------------
00258 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_0_2D3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
00259   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00260                   _ML_ITK_DETERMINE_IN_REGION_0,                                    \
00261                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_0,                                \
00262                   _ML_IMPLEMENT_TO_FIXED_ITK_2D3D_CASES,                            \
00263                   _ML_ITK_DETERMINE_OUT_REGION_0)
00264 
00265 //--------------------------------------------------------------------------------
00269 //--------------------------------------------------------------------------------
00270 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_1_2D3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
00271   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00272                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00273                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_1,                                \
00274                   _ML_IMPLEMENT_TO_FIXED_ITK_2D3D_CASES,                            \
00275                   _ML_ITK_DETERMINE_OUT_REGION_N)
00276 
00277 //--------------------------------------------------------------------------------
00281 //--------------------------------------------------------------------------------
00282 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_2_2D3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
00283   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00284                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00285                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_2,                                \
00286                   _ML_IMPLEMENT_TO_FIXED_ITK_2D3D_CASES,                            \
00287                   _ML_ITK_DETERMINE_OUT_REGION_N)
00288 
00289 //--------------------------------------------------------------------------------
00293 //--------------------------------------------------------------------------------
00294 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_3_2D3D(PROJECT_PREFIX, CLASSNAME, NAMESPACE) \
00295   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00296                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00297                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_3,                                \
00298                   _ML_IMPLEMENT_TO_FIXED_ITK_2D3D_CASES,                            \
00299                   _ML_ITK_DETERMINE_OUT_REGION_N)
00300 
00301 
00302 
00303 
00304 //--------------------------------------------------------------------------------
00307 //--------------------------------------------------------------------------------
00308 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_0_6D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00309   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00310                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00311                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_0,                                \
00312                   _ML_IMPLEMENT_TO_FIXED_ITK_6D_CASES,                              \
00313                   _ML_ITK_DETERMINE_OUT_REGION_N)
00314 
00315 //--------------------------------------------------------------------------------
00318 //--------------------------------------------------------------------------------
00319 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_1_6D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00320   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00321                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00322                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_1,                                \
00323                   _ML_IMPLEMENT_TO_FIXED_ITK_6D_CASES,                              \
00324                   _ML_ITK_DETERMINE_OUT_REGION_N)
00325 
00326 //--------------------------------------------------------------------------------
00329 //--------------------------------------------------------------------------------
00330 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_2_6D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00331   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00332                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00333                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_2,                                \
00334                   _ML_IMPLEMENT_TO_FIXED_ITK_6D_CASES,                              \
00335                   _ML_ITK_DETERMINE_OUT_REGION_N)
00336 
00337 //--------------------------------------------------------------------------------
00340 //--------------------------------------------------------------------------------
00341 #define ML_ITK_TO_FIXED_FILTER_WRAPPER_3_6D(PROJECT_PREFIX, CLASSNAME, NAMESPACE)   \
00342   _ML_ITK_WRAPPER(PROJECT_PREFIX, CLASSNAME, NAMESPACE,                             \
00343                   _ML_ITK_DETERMINE_IN_REGION_N,                                    \
00344                   ML_ITK_DEFAULT_WRAPPER_TYPEDEFS_3,                                \
00345                   _ML_IMPLEMENT_TO_FIXED_ITK_6D_CASES,                              \
00346                   _ML_ITK_DETERMINE_OUT_REGION_N)
00347 
00348 
00349 #endif // __mlITKFixedTypesFilterSupport_H
00350