MeVisLabToolboxReference
FMEwork/ITK/Sources/ITK/MLITK/ITKSupport/mlITKNonScalarSupport.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //----------------------------------------------------------------------------------
00004 
00008 //----------------------------------------------------------------------------------
00009 #ifndef __mlITKNonScalarSupport_H
00010 #define __mlITKNonScalarSupport_H
00011 
00012 #ifndef __mlITKSupport_H
00013 #include "mlITKSupport.h"
00014 #endif
00015 
00016 #include <complex>
00017 #include <itkDiffusionTensor3D.h>
00018 
00019 
00020 
00021 ML_START_NAMESPACE
00022 
00024 typedef itk::Vector<float,           2>   mlItkVector2f;
00025 typedef itk::Vector<float,           3>   mlItkVector3f;
00026 typedef itk::Vector<float,           4>   mlItkVector4f;
00027 typedef itk::Vector<float,           6>   mlItkVector6f;
00028 typedef itk::Vector<float,           8>   mlItkVector8f;
00029 typedef itk::CovariantVector<float,  2>   mlItkCVVector2f;
00030 typedef itk::CovariantVector<float,  3>   mlItkCVVector3f;
00031 typedef itk::CovariantVector<float,  4>   mlItkCVVector4f;
00032 typedef itk::CovariantVector<float,  6>   mlItkCVVector6f;
00033 typedef itk::CovariantVector<float,  8>   mlItkCVVector8f;
00035 
00037 typedef itk::Vector<double,          2>   mlItkVector2d;
00038 typedef itk::Vector<double,          3>   mlItkVector3d;
00039 typedef itk::Vector<double,          4>   mlItkVector4d;
00040 typedef itk::Vector<double,          6>   mlItkVector6d;
00041 typedef itk::Vector<double,          8>   mlItkVector8d;
00042 typedef itk::CovariantVector<double, 2>   mlItkCVVector2d;
00043 typedef itk::CovariantVector<double, 3>   mlItkCVVector3d;
00044 typedef itk::CovariantVector<double, 4>   mlItkCVVector4d;
00045 typedef itk::CovariantVector<double, 6>   mlItkCVVector6d;
00046 typedef itk::CovariantVector<double, 8>   mlItkCVVector8d;
00048 
00050 typedef std::complex<float>               mlItkComplexf;
00051 typedef std::complex<double>              mlItkComplexd;
00053 
00055 typedef std::complex<float>               Complexf;
00056 typedef std::complex<double>              Complexd;
00058 
00060 typedef itk::DiffusionTensor3D<float>      mlItkDiffusionTensor3Df;
00061 typedef itk::DiffusionTensor3D<double>     mlItkDiffusionTensor3Dd;
00062 typedef itk::SymmetricSecondRankTensor<float, 3> mlItkSymmetricSecondRankTensor3Df;
00063 typedef itk::SymmetricSecondRankTensor<double,3> mlItkSymmetricSecondRankTensor3Dd;
00065 
00066 
00067 
00070 #define _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME) \
00071   case MLuint8Type: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Dummy MLuint8Type type is not legal and is ignored."); break;
00072 
00073 //---------------------------------------------------------------------------
00074 //
00076 //
00077 //---------------------------------------------------------------------------
00079 #define _ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE)              \
00080       case MLVector2fType  :                                                                                                     \
00081           DIM_INST(Vector2f,  ML_IT_VEC_TYPE##2f,  Vector2f,  ML_IT_VEC_TYPE##2f,  USER_CODE, CLASS_NAME, DIM);                  \
00082       break;                                                                                                                     \
00083                                                                                                                                  \
00084       case MLVector3fType :                                                                                                      \
00085           DIM_INST(Vector3f,  ML_IT_VEC_TYPE##3f,  Vector3f,  ML_IT_VEC_TYPE##3f,  USER_CODE, CLASS_NAME, DIM);                  \
00086       break;                                                                                                                     \
00087                                                                                                                                  \
00088       case MLVector4fType :                                                                                                      \
00089           DIM_INST(Vector4f,  ML_IT_VEC_TYPE##4f,  Vector4f,  ML_IT_VEC_TYPE##4f,  USER_CODE, CLASS_NAME, DIM);                  \
00090       break;                                                                                                                     \
00091                                                                                                                                  \
00092       case MLVector6fType :                                                                                                      \
00093           DIM_INST(Vector6f,  ML_IT_VEC_TYPE##6f,  Vector6f,  ML_IT_VEC_TYPE##6f,  USER_CODE, CLASS_NAME, DIM);                  \
00094       break;                                                                                                                     \
00095                                                                                                                                  \
00096       case MLVector8fType :                                                                                                      \
00097           DIM_INST(Vector8f,  ML_IT_VEC_TYPE##8f,  Vector8f,  ML_IT_VEC_TYPE##8f,  USER_CODE, CLASS_NAME, DIM);                  \
00098       break;                                                                                                                     \
00099 
00100 
00101 #define _ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE)              \
00102       case MLVector2dType :                                                                                                      \
00103           DIM_INST(Vector2d,  ML_IT_VEC_TYPE##2d,  Vector2d,  ML_IT_VEC_TYPE##2d,  USER_CODE, CLASS_NAME, DIM);                  \
00104       break;                                                                                                                     \
00105                                                                                                                                  \
00106       case MLVector3dType :                                                                                                      \
00107           DIM_INST(Vector3d,  ML_IT_VEC_TYPE##3d,  Vector3d,  ML_IT_VEC_TYPE##3d,  USER_CODE, CLASS_NAME, DIM);                  \
00108       break;                                                                                                                     \
00109                                                                                                                                  \
00110       case MLVector4dType :                                                                                                      \
00111           DIM_INST(Vector4d,  ML_IT_VEC_TYPE##4d,  Vector4d,  ML_IT_VEC_TYPE##4d,  USER_CODE, CLASS_NAME, DIM);                  \
00112       break;                                                                                                                     \
00113                                                                                                                                  \
00114       case MLVector6dType :                                                                                                      \
00115           DIM_INST(Vector6d,  ML_IT_VEC_TYPE##6d,  Vector6d,  ML_IT_VEC_TYPE##6d,  USER_CODE, CLASS_NAME, DIM);                  \
00116       break;                                                                                                                     \
00117                                                                                                                                  \
00118       case MLVector8dType :                                                                                                      \
00119           DIM_INST(Vector8d,  ML_IT_VEC_TYPE##8d,  Vector8d,  ML_IT_VEC_TYPE##8d,  USER_CODE, CLASS_NAME, DIM);                  \
00120       break;                                                                                                                     \
00121                                                                                                                                  \
00122                                                                                                                                  \
00123 
00124 
00125 #define _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, FCASES, DCASES)                         \
00126 {                                                                                                                                \
00127   /* Check for float component of first component of output image type. */                                                       \
00128   bool isFloatType  = _addOns->getOutSubImageTypeInfos()->structInfoString[0]=='f';                                              \
00129   bool isDoubleType = _addOns->getOutSubImageTypeInfos()->structInfoString[0]=='d';                                              \
00130   if (isFloatType){                                                                                                              \
00131     switch (DATATYPE_ENUM){                                                                                                      \
00132       FCASES                                                                                                                     \
00133       default: {                                                                                                                 \
00134         ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE,                                                                     \
00135                               "Data type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES, 1).",                       \
00136                               ", DATATYPE_ENUM=", DATATYPE_ENUM);                                                                \
00137       }                                                                                                                          \
00138       break;                                                                                                                     \
00139     }                                                                                                                            \
00140   }                                                                                                                              \
00141   else if (isDoubleType){                                                                                                        \
00142     switch (DATATYPE_ENUM){                                                                                                      \
00143       DCASES                                                                                                                     \
00144       default: {                                                                                                                 \
00145         ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE,                                                                     \
00146                               "Data type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES, 2).",                       \
00147                               ", DATATYPE_ENUM=", DATATYPE_ENUM);                                                                \
00148       }                                                                                                                          \
00149       break;                                                                                                                     \
00150     }                                                                                                                            \
00151   }                                                                                                                              \
00152   else {                                                                                                                         \
00153     ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE,                                                                         \
00154                           "Input data type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES),"                         \
00155                           "because it is neither a float nor a double vector type.",                                             \
00156                           ", DATATYPE_ENUM=", DATATYPE_ENUM);                                                                    \
00157   }                                                                                                                              \
00158 }                                                                                                                                \
00159 
00160 
00161 
00162 
00163 
00164 //---------------------------------------------------------------------------
00165 //
00167 //
00168 //---------------------------------------------------------------------------
00170 #define _ML_IMPLEMENT_FVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE)                  \
00171         case MLVector2fType  :                                                                                                   \
00172           if (MLint16Type == _m_PixelType){                                                                                      \
00173             DIM_INST(MLint16, MLint16, Vector2f,   ML_IT_VEC_TYPE##2f,  USER_CODE, CLASS_NAME, DIM);                           \
00174           } else {                                                                                                               \
00175             DIM_INST(MLint32, MLint32, Vector2f,   ML_IT_VEC_TYPE##2f,  USER_CODE, CLASS_NAME, DIM);                           \
00176           }                                                                                                                      \
00177         break;                                                                                                                   \
00178                                                                                                                                  \
00179         case MLVector3fType :                                                                                                   \
00180           if (MLint16Type == _m_PixelType){                                                                                      \
00181             DIM_INST(MLint16, MLint16, Vector3f,  ML_IT_VEC_TYPE##3f,  USER_CODE, CLASS_NAME, DIM);                           \
00182           } else {                                                                                                               \
00183             DIM_INST(MLint32, MLint32, Vector3f,  ML_IT_VEC_TYPE##3f,  USER_CODE, CLASS_NAME, DIM);                           \
00184           }                                                                                                                      \
00185         break;                                                                                                                   \
00186                                                                                                                                  \
00187         case MLVector4fType :                                                                                                   \
00188           if (MLint16Type == _m_PixelType){                                                                                      \
00189             DIM_INST(MLint16, MLint16, Vector4f,  ML_IT_VEC_TYPE##4f,  USER_CODE, CLASS_NAME, DIM);                           \
00190           } else {                                                                                                               \
00191             DIM_INST(MLint32, MLint32, Vector4f,  ML_IT_VEC_TYPE##4f,  USER_CODE, CLASS_NAME, DIM);                           \
00192           }                                                                                                                      \
00193         break;                                                                                                                   \
00194                                                                                                                                  \
00195         case MLVector6fType :                                                                                                   \
00196           if (MLint16Type == _m_PixelType){                                                                                      \
00197             DIM_INST(MLint16, MLint16, Vector6f,  ML_IT_VEC_TYPE##6f,  USER_CODE, CLASS_NAME, DIM);                           \
00198           } else {                                                                                                               \
00199             DIM_INST(MLint32, MLint32, Vector6f,  ML_IT_VEC_TYPE##6f,  USER_CODE, CLASS_NAME, DIM);                           \
00200           }                                                                                                                      \
00201         break;                                                                                                                   \
00202                                                                                                                                  \
00203         case MLVector8fType :                                                                                                   \
00204           if (MLint16Type == _m_PixelType){                                                                                      \
00205             DIM_INST(MLint16, MLint16, Vector8f,  ML_IT_VEC_TYPE##8f,  USER_CODE, CLASS_NAME, DIM);                           \
00206           } else {                                                                                                               \
00207             DIM_INST(MLint32, MLint32, Vector8f,  ML_IT_VEC_TYPE##8f,  USER_CODE, CLASS_NAME, DIM);                           \
00208           }                                                                                                                      \
00209         break;                                                                                                                   \
00210 
00211 
00212 #define _ML_IMPLEMENT_DVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE)                  \
00213         case MLVector2dType :                                                                                                    \
00214           if (MLint16Type == _m_PixelType){                                                                                      \
00215             DIM_INST(MLint16, MLint16, Vector2d,  ML_IT_VEC_TYPE##2d,  USER_CODE, CLASS_NAME, DIM);                              \
00216           } else {                                                                                                               \
00217             DIM_INST(MLint32, MLint32, Vector2d,  ML_IT_VEC_TYPE##2d,  USER_CODE, CLASS_NAME, DIM);                              \
00218           }                                                                                                                      \
00219         break;                                                                                                                   \
00220                                                                                                                                  \
00221         case MLVector3dType :                                                                                                    \
00222           if (MLint16Type == _m_PixelType){                                                                                      \
00223             DIM_INST(MLint16, MLint16, Vector3d,  ML_IT_VEC_TYPE##3d,  USER_CODE, CLASS_NAME, DIM);                              \
00224           } else {                                                                                                               \
00225             DIM_INST(MLint32, MLint32, Vector3d,  ML_IT_VEC_TYPE##3d,  USER_CODE, CLASS_NAME, DIM);                              \
00226           }                                                                                                                      \
00227         break;                                                                                                                   \
00228                                                                                                                                  \
00229         case MLVector4dType :                                                                                                    \
00230           if (MLint16Type == _m_PixelType){                                                                                      \
00231             DIM_INST(MLint16, MLint16, Vector4d,  ML_IT_VEC_TYPE##4d,  USER_CODE, CLASS_NAME, DIM);                              \
00232           } else {                                                                                                               \
00233             DIM_INST(MLint32, MLint32, Vector4d,  ML_IT_VEC_TYPE##4d,  USER_CODE, CLASS_NAME, DIM);                              \
00234           }                                                                                                                      \
00235         break;                                                                                                                   \
00236                                                                                                                                  \
00237         case MLVector6dType :                                                                                                    \
00238           if (MLint16Type == _m_PixelType){                                                                                      \
00239             DIM_INST(MLint16, MLint16, Vector6d,  ML_IT_VEC_TYPE##6d,  USER_CODE, CLASS_NAME, DIM);                              \
00240           } else {                                                                                                               \
00241             DIM_INST(MLint32, MLint32, Vector6d,  ML_IT_VEC_TYPE##6d,  USER_CODE, CLASS_NAME, DIM);                              \
00242           }                                                                                                                      \
00243         break;                                                                                                                   \
00244                                                                                                                                  \
00245         case MLVector8dType :                                                                                                    \
00246           if (MLint16Type == _m_PixelType){                                                                                      \
00247             DIM_INST(MLint16, MLint16, Vector8d,  ML_IT_VEC_TYPE##8d,  USER_CODE, CLASS_NAME, DIM);                              \
00248           } else {                                                                                                               \
00249             DIM_INST(MLint32, MLint32, Vector8d,  ML_IT_VEC_TYPE##8d,  USER_CODE, CLASS_NAME, DIM);                              \
00250           }                                                                                                                      \
00251         break;                                                                                                                   \
00252 
00253 
00254 #define _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, FCASES, DCASES)                              \
00255 {                                                                                                                                \
00256   /* Check first component of input pixel type to select correct implementation for float or double vectors. */                  \
00257   bool isFloatType  = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='f';                                               \
00258   bool isDoubleType = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='d';                                               \
00259   if (isFloatType){                                                                                                              \
00260     const MLDataType fDataType = _addOns->getInputSubImageDataType();                                                            \
00261     switch (fDataType){                                                                                                          \
00262       FCASES                                                                                                                     \
00263       default: {                                                                                                                 \
00264         ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE,                                                                     \
00265                               "Input type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_INT_CASES, 1).",                           \
00266                               ", fDataType=", fDataType, ", _m_PixelType=", _m_PixelType);                                       \
00267       }                                                                                                                          \
00268       break;                                                                                                                     \
00269     };                                                                                                                           \
00270   }                                                                                                                              \
00271   else if (isDoubleType){                                                                                                        \
00272     const MLDataType dDataType = _addOns->getInputSubImageDataType();                                                            \
00273     switch (dDataType){                                                                                                          \
00274       DCASES                                                                                                                     \
00275       default: {                                                                                                                 \
00276         ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE,                                                                     \
00277                               "Input type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_INT_CASES, 2).",                           \
00278                                ", dDataType=", dDataType, ", _m_PixelType=", _m_PixelType);                                      \
00279       }                                                                                                                          \
00280     };                                                                                                                           \
00281   }                                                                                                                              \
00282   else{                                                                                                                          \
00283     ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE,                                                                         \
00284                           "Input type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_INT_CASES), because it is neither "            \
00285                           "a float nor a double vector type)", " _m_PixelType=", _m_PixelType);                                  \
00286   }                                                                                                                              \
00287 }                                                                                                                                \
00288 
00289 
00290 
00291 
00292 
00293 //---------------------------------------------------------------------------
00294 //
00296 //
00297 //---------------------------------------------------------------------------
00299 #define _ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE)                 \
00300         case MLVector2fType  :                                                                                                   \
00301             DIM_INST(MLfloat, MLfloat, Vector2f,   ML_IT_VEC_TYPE##2f,  USER_CODE, CLASS_NAME, DIM);                             \
00302         break;                                                                                                                   \
00303                                                                                                                                  \
00304         case MLVector3fType :                                                                                                    \
00305             DIM_INST(MLfloat, MLfloat, Vector3f,  ML_IT_VEC_TYPE##3f,  USER_CODE, CLASS_NAME, DIM);                              \
00306         break;                                                                                                                   \
00307                                                                                                                                  \
00308         case MLVector4fType :                                                                                                    \
00309             DIM_INST(MLfloat, MLfloat, Vector4f,  ML_IT_VEC_TYPE##4f,  USER_CODE, CLASS_NAME, DIM);                              \
00310         break;                                                                                                                   \
00311                                                                                                                                  \
00312         case MLVector6fType :                                                                                                    \
00313             DIM_INST(MLfloat, MLfloat, Vector6f,  ML_IT_VEC_TYPE##6f,  USER_CODE, CLASS_NAME, DIM);                              \
00314         break;                                                                                                                   \
00315                                                                                                                                  \
00316         case MLVector8fType :                                                                                                    \
00317             DIM_INST(MLfloat, MLfloat, Vector8f,  ML_IT_VEC_TYPE##8f,  USER_CODE, CLASS_NAME, DIM);                              \
00318         break;                                                                                                                   \
00319 
00320 
00321 #define _ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE)                 \
00322         case MLVector2dType :                                                                                                    \
00323             DIM_INST(MLdouble, MLdouble, Vector2d,  ML_IT_VEC_TYPE##2d,  USER_CODE, CLASS_NAME, DIM);                            \
00324         break;                                                                                                                   \
00325                                                                                                                                  \
00326         case MLVector3dType :                                                                                                    \
00327             DIM_INST(MLdouble, MLdouble, Vector3d,  ML_IT_VEC_TYPE##3d,  USER_CODE, CLASS_NAME, DIM);                            \
00328         break;                                                                                                                   \
00329                                                                                                                                  \
00330         case MLVector4dType :                                                                                                    \
00331             DIM_INST(MLdouble, MLdouble, Vector4d,  ML_IT_VEC_TYPE##4d,  USER_CODE, CLASS_NAME, DIM);                            \
00332         break;                                                                                                                   \
00333                                                                                                                                  \
00334         case MLVector6dType :                                                                                                    \
00335             DIM_INST(MLdouble, MLdouble, Vector6d,  ML_IT_VEC_TYPE##6d,  USER_CODE, CLASS_NAME, DIM);                            \
00336         break;                                                                                                                   \
00337                                                                                                                                  \
00338         case MLVector8dType :                                                                                                    \
00339             DIM_INST(MLdouble, MLdouble, Vector8d,  ML_IT_VEC_TYPE##8d,  USER_CODE, CLASS_NAME, DIM);                            \
00340         break;                                                                                                                   \
00341 
00342 
00343 #define _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, FCASES, DCASES)                             \
00344 {                                                                                                                                \
00345   switch (_m_PixelType){                                                                                                         \
00346     case MLfloatType : {                                                                                                         \
00347       const MLDataType fDataType = _addOns->getInputSubImageDataType();                                                          \
00348       switch (fDataType){                                                                                                        \
00349         FCASES                                                                                                                   \
00350         default: {                                                                                                               \
00351           ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE,                                                                   \
00352                                 "Input type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES, 1).",                        \
00353                                  ", fDataType=", fDataType, ", _m_PixelType=", _m_PixelType);\
00354         }                                                                                                                        \
00355         break;                                                                                                                   \
00356       };                                                                                                                         \
00357     };                                                                                                                           \
00358     break;                                                                                                                       \
00359                                                                                                                                  \
00360     case MLdoubleType : {                                                                                                        \
00361       const MLDataType dDataType = _addOns->getInputSubImageDataType();                                                          \
00362       switch (dDataType){                                                                                                        \
00363         DCASES                                                                                                                   \
00364         default: {                                                                                                               \
00365           ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE,                                                                   \
00366                                 "Input type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES, 2).",                        \
00367                                  ", dDataType=", dDataType, ", _m_PixelType=", _m_PixelType);                                    \
00368         }                                                                                                                        \
00369       };                                                                                                                         \
00370     };                                                                                                                           \
00371     break;                                                                                                                       \
00372                                                                                                                                  \
00373     default: {                                                                                                                   \
00374       ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE,                                                                       \
00375                             "Output type case not executed(_ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES, 3).",                           \
00376                             ", _m_PixelType=", _m_PixelType);                                                                    \
00377     }                                                                                                                            \
00378     break;                                                                                                                       \
00379   }                                                                                                                              \
00380 }                                                                                                                                \
00381 
00382 
00383 //---------------------------------------------------------------------------
00384 //
00386 //
00387 //---------------------------------------------------------------------------
00389 #define _ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE)                 \
00390       case MLVector2fType  :                                                                                                     \
00391           DIM_INST(Vector2f,   ML_IT_VEC_TYPE##2f,  MLfloat,  MLfloat, USER_CODE, CLASS_NAME, DIM);                              \
00392       break;                                                                                                                     \
00393                                                                                                                                  \
00394       case MLVector3fType :                                                                                                      \
00395           DIM_INST(Vector3f,  ML_IT_VEC_TYPE##3f,  MLfloat,  MLfloat, USER_CODE, CLASS_NAME, DIM);                               \
00396       break;                                                                                                                     \
00397                                                                                                                                  \
00398       case MLVector4fType :                                                                                                      \
00399           DIM_INST(Vector4f,  ML_IT_VEC_TYPE##4f,  MLfloat,  MLfloat, USER_CODE, CLASS_NAME, DIM);                               \
00400       break;                                                                                                                     \
00401                                                                                                                                  \
00402       case MLVector6fType :                                                                                                      \
00403           DIM_INST(Vector6f,  ML_IT_VEC_TYPE##6f,  MLfloat,  MLfloat, USER_CODE, CLASS_NAME, DIM);                               \
00404       break;                                                                                                                     \
00405                                                                                                                                  \
00406       case MLVector8fType :                                                                                                      \
00407           DIM_INST(Vector8f,  ML_IT_VEC_TYPE##8f,  MLfloat,  MLfloat, USER_CODE, CLASS_NAME, DIM);                               \
00408       break;                                                                                                                     \
00409 
00410 
00411 #define _ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, ML_IT_VEC_TYPE)                 \
00412       case MLVector2dType :                                                                                                      \
00413           DIM_INST(Vector2d,  ML_IT_VEC_TYPE##2d,  MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM);                              \
00414       break;                                                                                                                     \
00415                                                                                                                                  \
00416       case MLVector3dType :                                                                                                      \
00417           DIM_INST(Vector3d,  ML_IT_VEC_TYPE##3d,  MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM);                              \
00418       break;                                                                                                                     \
00419                                                                                                                                  \
00420       case MLVector4dType :                                                                                                      \
00421           DIM_INST(Vector4d,  ML_IT_VEC_TYPE##4d,  MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM);                              \
00422       break;                                                                                                                     \
00423                                                                                                                                  \
00424       case MLVector6dType :                                                                                                      \
00425           DIM_INST(Vector6d,  ML_IT_VEC_TYPE##6d,  MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM);                              \
00426       break;                                                                                                                     \
00427                                                                                                                                  \
00428       case MLVector8dType :                                                                                                      \
00429           DIM_INST(Vector8d,  ML_IT_VEC_TYPE##8d,  MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM);                              \
00430       break;                                                                                                                     \
00431 
00432 
00433 #define _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM, FCASES, DCASES)                             \
00434 {                                                                                                                                \
00435   /* Check for float component of first component of output image type. */                                                       \
00436   bool isFloatType = _addOns->getOutSubImageTypeInfos()->structInfoString[0]=='f';                                               \
00437   if (isFloatType){                                                                                                              \
00438     switch (DATATYPE_ENUM){                                                                                                      \
00439       FCASES                                                                                                                     \
00440       default: {                                                                                                                 \
00441         ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Data type case not executed(_ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES, 1).", ", DATATYPE_ENUM=", DATATYPE_ENUM);  \
00442       }                                                                                                                          \
00443       break;                                                                                                                     \
00444     }                                                                                                                            \
00445   }                                                                                                                              \
00446   else{                                                                                                                          \
00447     switch (DATATYPE_ENUM){                                                                                                      \
00448       DCASES                                                                                                                     \
00449       default: {                                                                                                                 \
00450         ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Data type case not executed(_ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES, 2).", ", DATATYPE_ENUM=", DATATYPE_ENUM);  \
00451       }                                                                                                                          \
00452       break;                                                                                                                     \
00453     }                                                                                                                            \
00454   }                                                                                                                              \
00455 }                                                                                                                                \
00456 
00457 
00458 
00459 //---------------------------------------------------------------------------------------------------------------------------
00461 //---------------------------------------------------------------------------------------------------------------------------
00462 
00463 //---------------------------------------------------------------------------
00464 // Float and double vectors.
00465 //---------------------------------------------------------------------------
00466 #define ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                        \
00467        _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                  \
00468                                                 _ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector),\
00469                                                 _ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector))
00470 
00471 #define ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                          \
00472        _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                    \
00473                                            _ML_IMPLEMENT_FVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector),      \
00474                                            _ML_IMPLEMENT_DVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector))
00475 
00476 #define ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                         \
00477        _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                   \
00478                                             _ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector),    \
00479                                             _ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector))
00480 
00481 #define ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                         \
00482        _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                   \
00483                                             _ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector),    \
00484                                             _ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector))
00485 
00486 
00487 //---------------------------------------------------------------------------
00488 // Only float vectors.
00489 //---------------------------------------------------------------------------
00490 #define ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                           \
00491        _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                   \
00492                                                 _ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector), \
00493                                                 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME))
00494 
00495 #define ML_IMPLEMENT_FVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                         \
00496        _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                  \
00497                                             _ML_IMPLEMENT_FVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector),   \
00498                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME))
00499 
00500 #define ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                        \
00501        _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                 \
00502                                             _ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector),  \
00503                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME))
00504 
00505 #define ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                        \
00506        _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                 \
00507                                             _ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector),  \
00508                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME))
00509 
00510 //---------------------------------------------------------------------------
00511 // Only double vectors.
00512 //---------------------------------------------------------------------------
00513 #define ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                         \
00514        _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                 \
00515                                                 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME),                                                            \
00516                                                 _ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector))
00517 
00518 #define ML_IMPLEMENT_DVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                         \
00519        _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                  \
00520                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME),                                                            \
00521                                             _ML_IMPLEMENT_DVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector))
00522 
00523 #define ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                        \
00524        _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                 \
00525                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME),                                                            \
00526                                             _ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector))
00527 
00528 #define ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                        \
00529        _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                 \
00530                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME),                                                            \
00531                                             _ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkVector))
00532 
00533 
00534 
00535 //---------------------------------------------------------------------------------------------------------------------------
00537 //---------------------------------------------------------------------------------------------------------------------------
00538 
00539 //---------------------------------------------------------------------------
00540 // Float and double vectors.
00541 //---------------------------------------------------------------------------
00542 #define ML_IMPLEMENT_CVFDVECTOR_TO_CVFDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                      \
00543        _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                    \
00544                                                 _ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector),\
00545                                                 _ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector))
00546 
00547 #define ML_IMPLEMENT_CVFDVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                          \
00548        _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                      \
00549                                             _ML_IMPLEMENT_FVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector),     \
00550                                             _ML_IMPLEMENT_DVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector))
00551 
00552 #define ML_IMPLEMENT_CVFDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                         \
00553        _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                     \
00554                                             _ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector),    \
00555                                             _ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector))
00556 
00557 #define ML_IMPLEMENT_REAL_TO_CVFDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                         \
00558        _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                     \
00559                                             _ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector),    \
00560                                             _ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector))
00561 
00562 
00563 //---------------------------------------------------------------------------
00564 // Only float vectors.
00565 //---------------------------------------------------------------------------
00566 #define ML_IMPLEMENT_CVFVECTOR_TO_CVFVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                         \
00567        _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                     \
00568                                                 _ML_IMPLEMENT_FVECTOR_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector), \
00569                                                 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME))
00570 
00571 #define ML_IMPLEMENT_CVFVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                       \
00572        _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                  \
00573                                             _ML_IMPLEMENT_FVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector), \
00574                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME))
00575 
00576 #define ML_IMPLEMENT_CVFVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                      \
00577        _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                 \
00578                                             _ML_IMPLEMENT_FVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector),\
00579                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME))
00580 
00581 #define ML_IMPLEMENT_REAL_TO_CVFVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                      \
00582        _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                 \
00583                                             _ML_IMPLEMENT_REAL_TO_FVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector),\
00584                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME))
00585 
00586 //---------------------------------------------------------------------------
00587 // Only double vectors.
00588 //---------------------------------------------------------------------------
00589 #define ML_IMPLEMENT_CVDVECTOR_TO_CVDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                     \
00590        _ML_IMPLEMENT_FDVECTOR_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                 \
00591                                                 _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME),                                                            \
00592                                                 _ML_IMPLEMENT_DVECTOR_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector))
00593 
00594 #define ML_IMPLEMENT_CVDVECTOR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                       \
00595        _ML_IMPLEMENT_FDVECTOR_TO_INT_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                  \
00596                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME),                                                            \
00597                                             _ML_IMPLEMENT_DVECTOR_TO_INT_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector))
00598 
00599 #define ML_IMPLEMENT_CVDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                      \
00600        _ML_IMPLEMENT_FDVECTOR_TO_REAL_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                 \
00601                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME),                                                            \
00602                                             _ML_IMPLEMENT_DVECTOR_TO_REAL_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector))
00603 
00604 #define ML_IMPLEMENT_REAL_TO_CVDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)                                      \
00605        _ML_IMPLEMENT_REAL_TO_FDVECTOR_CASES(INFO_STRING, CLASS_NAME, DATATYPE_ENUM,                                                                 \
00606                                             _ML_IMPLEMENT_EMPTY_VECTOR_CASE(CLASS_NAME),                                                            \
00607                                             _ML_IMPLEMENT_REAL_TO_DVECTOR_CASES(DIM_INST, USER_CODE, DATATYPE_ENUM, CLASS_NAME, DIM, mlItkCVVector))
00608 
00609 
00610 
00611 
00612 
00613 
00614 // START REAL TO IMG DIM
00615 
00616 //----------------------------------------------------------------------------------
00618 //----------------------------------------------------------------------------------
00619 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE)  \
00620   {                                                                                                                              \
00621     switch (DIM){                                                                                                                \
00622       case 2 : USER_CODE(Vector2f, ML_ITK_VECTOR_TYPE##2f,  MLfloat, MLfloat,  2, CLASS_NAME);  break;                           \
00623       case 3 : USER_CODE(Vector3f, ML_ITK_VECTOR_TYPE##3f,  MLfloat, MLfloat,  3, CLASS_NAME);  break;                           \
00624       case 4 : USER_CODE(Vector4f, ML_ITK_VECTOR_TYPE##4f,  MLfloat, MLfloat,  4, CLASS_NAME);  break;                           \
00625       case 6 : USER_CODE(Vector6f, ML_ITK_VECTOR_TYPE##6f,  MLfloat, MLfloat,  6, CLASS_NAME);  break;                           \
00626       default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES).", ", DIM=", DIM);   break; \
00627     }                                                                                                                            \
00628   }                                                                                                                              \
00629 
00630 //----------------------------------------------------------------------------------
00632 //----------------------------------------------------------------------------------
00633 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE)  \
00634   {                                                                                                                              \
00635     switch (DIM){                                                                                                                \
00636       case 2 : USER_CODE(Vector2d, ML_ITK_VECTOR_TYPE##2d, MLdouble, MLdouble, 2, CLASS_NAME);  break;                           \
00637       case 3 : USER_CODE(Vector3d, ML_ITK_VECTOR_TYPE##3d, MLdouble, MLdouble, 3, CLASS_NAME);  break;                           \
00638       case 4 : USER_CODE(Vector4d, ML_ITK_VECTOR_TYPE##4d, MLdouble, MLdouble, 4, CLASS_NAME);  break;                           \
00639       case 6 : USER_CODE(Vector6d, ML_ITK_VECTOR_TYPE##6d, MLdouble, MLdouble, 6, CLASS_NAME);  break;                           \
00640       default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES).", ", DIM=", DIM);   break; \
00641     }                                                                                                                            \
00642   }                                                                                                                              \
00643 
00644 //--------------------------------------------------------------------------------------------
00646 //--------------------------------------------------------------------------------------------
00647 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \
00648   {                                                                                                                              \
00649     if (_addOns->getInputSubImageDataType()==MLfloatType){                                                                       \
00650       switch (DIM){                                                                                                              \
00651         case 2 : USER_CODE(Vector2f, ML_ITK_VECTOR_TYPE##2f, MLfloat,  MLfloat,  2, CLASS_NAME);  break;                         \
00652         case 3 : USER_CODE(Vector3f, ML_ITK_VECTOR_TYPE##3f, MLfloat,  MLfloat,  3, CLASS_NAME);  break;                         \
00653         case 4 : USER_CODE(Vector4f, ML_ITK_VECTOR_TYPE##4f, MLfloat,  MLfloat,  4, CLASS_NAME);  break;                         \
00654         case 6 : USER_CODE(Vector6f, ML_ITK_VECTOR_TYPE##6f, MLfloat,  MLfloat,  6, CLASS_NAME);  break;                         \
00655         default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES), 1.", ", DIM=", DIM);   break; \
00656       }                                                                                                                          \
00657     }                                                                                                                            \
00658     else{                                                                                                                        \
00659       switch (DIM){                                                                                                              \
00660         case 2 : USER_CODE(Vector2d, ML_ITK_VECTOR_TYPE##2d, MLdouble, MLdouble, 2, CLASS_NAME);  break;                         \
00661         case 3 : USER_CODE(Vector3d, ML_ITK_VECTOR_TYPE##3d, MLdouble, MLdouble, 3, CLASS_NAME);  break;                         \
00662         case 4 : USER_CODE(Vector4d, ML_ITK_VECTOR_TYPE##4d, MLdouble, MLdouble, 4, CLASS_NAME);  break;                         \
00663         case 6 : USER_CODE(Vector6d, ML_ITK_VECTOR_TYPE##6d, MLdouble, MLdouble, 6, CLASS_NAME);  break;                         \
00664         default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES, 2).", ", DIM=", DIM);   break; \
00665       }                                                                                                                          \
00666     }                                                                                                                            \
00667   }                                                                                                                              \
00668 
00669 //----------------------------------------------------------------------------------
00671 //----------------------------------------------------------------------------------
00672 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD)  \
00673   {                                                                                                                              \
00674     USER_CODE(Vector##DIM_C##f,  ML_ITK_VECTOR_TYPE##DIM_C##f, MLfloat,   MLfloat,  DIM_C, CLASS_NAME);                          \
00675   }                                                                                                                              \
00676 
00677 //----------------------------------------------------------------------------------
00679 //----------------------------------------------------------------------------------
00680 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD)  \
00681   {                                                                                                                              \
00682     USER_CODE(Vector##DIM_C##d,  ML_ITK_VECTOR_TYPE##DIM_C##d, MLdouble,  MLdouble, DIM_C, CLASS_NAME);                          \
00683   }                                                                                                                              \
00684 
00685 //--------------------------------------------------------------------------------------------
00687 //--------------------------------------------------------------------------------------------
00688 #define _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \
00689   {                                                                                                                              \
00690     if (_addOns->getInputSubImageDataType() == MLfloatType){                                                                     \
00691       USER_CODE(Vector##DIM_C##f,  ML_ITK_VECTOR_TYPE##DIM_C##f, MLfloat,   MLfloat,  DIM_C, CLASS_NAME);                        \
00692     }                                                                                                                            \
00693     else{                                                                                                                        \
00694       USER_CODE(Vector##DIM_C##d,  ML_ITK_VECTOR_TYPE##DIM_C##d, MLdouble,  MLdouble, DIM_C, CLASS_NAME);                        \
00695     }                                                                                                                            \
00696   }                                                                                                                              \
00697 
00698 
00699 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00700        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  2,  8, 16)
00701 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00702        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  3, 12, 24)
00703 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00704        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector)
00705 
00706 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00707        _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  2,  8, 16)
00708 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00709        _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  3, 12, 24)
00710 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00711        _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector)
00712 
00713 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00714        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkCVVector, 2,  8, 16)
00715 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00716        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkCVVector, 3, 12, 24)
00717 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_CVFDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00718        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkCVVector)
00719 
00720 
00722 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00723        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  2,  8, 16)
00724 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00725        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  3, 12, 24)
00726 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00727        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector)
00728 
00729 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00730        _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  2,  8, 16)
00731 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00732        _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  3, 12, 24)
00733 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00734        _ML_IMPLEMENT_REAL_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector)
00735 
00736 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00737        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkVector, 2,  8, 16)
00738 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00739        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkVector, 3, 12, 24)
00740 #define ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00741        _ML_IMPLEMENT_REAL_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkVector)
00742 
00743 
00744 // END REAL TO IMG DIM
00745 
00746 
00747 
00748 
00749 
00750 
00751 
00752 // START IMG DIM TO REAL
00753 
00754 // IMPORTANT: !!! ONLY TESTED FOR ONE CASE! Switches may still be incomplete or data types may be of invalid order etc. !!!!
00755 
00756 //----------------------------------------------------------------------------------
00758 //----------------------------------------------------------------------------------
00759 #define _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE)  \
00760   {                                                                                                                              \
00761     switch (DIM){                                                                                                                \
00762       case 2 : USER_CODE(MLfloat, MLfloat, Vector2f, ML_ITK_VECTOR_TYPE##2f,   2, CLASS_NAME);  break;                           \
00763       case 3 : USER_CODE(MLfloat, MLfloat, Vector3f, ML_ITK_VECTOR_TYPE##3f,   3, CLASS_NAME);  break;                           \
00764       case 4 : USER_CODE(MLfloat, MLfloat, Vector4f, ML_ITK_VECTOR_TYPE##4f,   4, CLASS_NAME);  break;                           \
00765       case 6 : USER_CODE(MLfloat, MLfloat, Vector6f, ML_ITK_VECTOR_TYPE##6f,   6, CLASS_NAME);  break;                           \
00766       default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES).", ", DIM=", DIM);   break; \
00767     }                                                                                                                            \
00768   }                                                                                                                              \
00769 
00770 //----------------------------------------------------------------------------------
00772 //----------------------------------------------------------------------------------
00773 #define _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE)  \
00774   {                                                                                                                              \
00775     switch (DIM){                                                                                                                \
00776       case 2 : USER_CODE(MLdouble, MLdouble, Vector2d, ML_ITK_VECTOR_TYPE##2d, 2, CLASS_NAME);  break;                           \
00777       case 3 : USER_CODE(MLdouble, MLdouble, Vector3d, ML_ITK_VECTOR_TYPE##3d, 3, CLASS_NAME);  break;                           \
00778       case 4 : USER_CODE(MLdouble, MLdouble, Vector4d, ML_ITK_VECTOR_TYPE##4d, 4, CLASS_NAME);  break;                           \
00779       case 6 : USER_CODE(MLdouble, MLdouble, Vector6d, ML_ITK_VECTOR_TYPE##6d, 6, CLASS_NAME);  break;                           \
00780       default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES).", ", DIM=", DIM);   break; \
00781     }                                                                                                                            \
00782   }                                                                                                                              \
00783 
00784 //--------------------------------------------------------------------------------------------
00786 //--------------------------------------------------------------------------------------------
00787 #define _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \
00788   {                                                                                                                              \
00789     /* Check for float point type input vector. */                                                                               \
00790     const bool isFloatType = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='f';                                        \
00791     if (isFloatType){                                                                                                            \
00792       switch (DIM){                                                                                                              \
00793         case 2 : USER_CODE(MLfloat,  MLfloat, Vector2f, ML_ITK_VECTOR_TYPE##2f,  2, CLASS_NAME);  break;                         \
00794         case 3 : USER_CODE(MLfloat,  MLfloat, Vector3f, ML_ITK_VECTOR_TYPE##3f,  3, CLASS_NAME);  break;                         \
00795         case 4 : USER_CODE(MLfloat,  MLfloat, Vector4f, ML_ITK_VECTOR_TYPE##4f,  4, CLASS_NAME);  break;                         \
00796         case 6 : USER_CODE(MLfloat,  MLfloat, Vector6f, ML_ITK_VECTOR_TYPE##6f,  6, CLASS_NAME);  break;                         \
00797         default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES, 1).", ", DIM=", DIM);   break; \
00798       }                                                                                                                          \
00799     }                                                                                                                            \
00800     else{                                                                                                                        \
00801       switch (DIM){                                                                                                              \
00802         case 2 : USER_CODE(MLdouble, MLdouble, Vector2d, ML_ITK_VECTOR_TYPE##2d, 2, CLASS_NAME);  break;                         \
00803         case 3 : USER_CODE(MLdouble, MLdouble, Vector3d, ML_ITK_VECTOR_TYPE##3d, 3, CLASS_NAME);  break;                         \
00804         case 4 : USER_CODE(MLdouble, MLdouble, Vector4d, ML_ITK_VECTOR_TYPE##4d, 4, CLASS_NAME);  break;                         \
00805         case 6 : USER_CODE(MLdouble, MLdouble, Vector6d, ML_ITK_VECTOR_TYPE##6d, 6, CLASS_NAME);  break;                         \
00806         default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES, 2).", ", DIM=", DIM);   break;                             \
00807       }                                                                                                                          \
00808     }                                                                                                                            \
00809   }                                                                                                                              \
00810 
00811 //----------------------------------------------------------------------------------
00813 //----------------------------------------------------------------------------------
00814 #define _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD)  \
00815   {                                                                                                                              \
00816     USER_CODE(MLfloat,   MLfloat, Vector##DIM_C##f,  ML_ITK_VECTOR_TYPE##DIM_C##f,  DIM_C, CLASS_NAME);                          \
00817   }                                                                                                                              \
00818 
00819 //----------------------------------------------------------------------------------
00821 //----------------------------------------------------------------------------------
00822 #define _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD)  \
00823   {                                                                                                                              \
00824     USER_CODE(MLdouble,  MLdouble, Vector##DIM_C##d,  ML_ITK_VECTOR_TYPE##DIM_C##d, DIM_C, CLASS_NAME);                          \
00825   }                                                                                                                              \
00826 
00827 //--------------------------------------------------------------------------------------------
00837 //--------------------------------------------------------------------------------------------
00838 #define _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \
00839   {                                                                                                                              \
00840     /* Check for float point type input vector. */                                                                               \
00841     const bool isFloatType = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='f';                                        \
00842     if (isFloatType){                                                                                                            \
00843       USER_CODE(Vector##DIM_C##f,  ML_ITK_VECTOR_TYPE##DIM_C##f, MLfloat,   MLfloat,  DIM_C, CLASS_NAME);                        \
00844     }                                                                                                                            \
00845     else{                                                                                                                        \
00846       USER_CODE(MLdouble,  MLdouble, Vector##DIM_C##d,  ML_ITK_VECTOR_TYPE##DIM_C##d, DIM_C, CLASS_NAME);                        \
00847     }                                                                                                                            \
00848   }                                                                                                                              \
00849 
00850 
00851 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00852        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  2,  8, 16)
00853 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00854        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  3, 12, 24)
00855 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00856        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector)
00857 
00858 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00859        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  2,  8, 16)
00860 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00861        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  3, 12, 24)
00862 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00863        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector)
00864 
00865 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00866        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkCVVector, 2,  8, 16)
00867 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00868        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkCVVector, 3, 12, 24)
00869 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00870        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkCVVector)
00871 
00872 
00874 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00875        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  2,  8, 16)
00876 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00877        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  3, 12, 24)
00878 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00879        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector)
00880 
00881 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00882        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  2,  8, 16)
00883 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00884        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  3, 12, 24)
00885 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00886        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector)
00887 
00888 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00889        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkVector, 2,  8, 16)
00890 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00891        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkVector, 3, 12, 24)
00892 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00893        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkVector)
00894 
00895 
00896 // IMPORTANT: STILL NOT TESTED!!!!
00897 
00898 // END IMG DIM TO REAL
00899 
00900 
00901 
00902 
00903 
00904 
00905 
00906 
00907 // START IMG DIM TO IMG DIM
00908 
00909 //----------------------------------------------------------------------------------
00911 //----------------------------------------------------------------------------------
00912 #define _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE)  \
00913   {                                                                                                                              \
00914     switch (DIM){                                                                                                                \
00915       case 2 : USER_CODE(Vector2f, ML_ITK_VECTOR_TYPE##2f, Vector2f, ML_ITK_VECTOR_TYPE##2f,  2, CLASS_NAME);  break;            \
00916       case 3 : USER_CODE(Vector3f, ML_ITK_VECTOR_TYPE##3f, Vector3f, ML_ITK_VECTOR_TYPE##3f,  3, CLASS_NAME);  break;            \
00917       case 4 : USER_CODE(Vector4f, ML_ITK_VECTOR_TYPE##4f, Vector4f, ML_ITK_VECTOR_TYPE##4f,  4, CLASS_NAME);  break;            \
00918       case 6 : USER_CODE(Vector6f, ML_ITK_VECTOR_TYPE##6f, Vector6f, ML_ITK_VECTOR_TYPE##6f,  6, CLASS_NAME);  break;            \
00919       default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES).", ", DIM=", DIM);   break;                               \
00920     }                                                                                                                            \
00921   }                                                                                                                              \
00922 
00923 //----------------------------------------------------------------------------------
00925 //----------------------------------------------------------------------------------
00926 #define _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE)  \
00927   {                                                                                                                              \
00928     switch (DIM){                                                                                                                \
00929       case 2 : USER_CODE(Vector2d, ML_ITK_VECTOR_TYPE##2d, Vector2d, ML_ITK_VECTOR_TYPE##2d, 2, CLASS_NAME);  break;             \
00930       case 3 : USER_CODE(Vector3d, ML_ITK_VECTOR_TYPE##3d, Vector3d, ML_ITK_VECTOR_TYPE##3d, 3, CLASS_NAME);  break;             \
00931       case 4 : USER_CODE(Vector4d, ML_ITK_VECTOR_TYPE##4d, Vector4d, ML_ITK_VECTOR_TYPE##4d, 4, CLASS_NAME);  break;             \
00932       case 6 : USER_CODE(Vector6d, ML_ITK_VECTOR_TYPE##6d, Vector6d, ML_ITK_VECTOR_TYPE##6d, 6, CLASS_NAME);  break;             \
00933       default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES).", ", DIM=", DIM);   break;                               \
00934     }                                                                                                                            \
00935   }                                                                                                                              \
00936 
00937 //--------------------------------------------------------------------------------------------
00939 //--------------------------------------------------------------------------------------------
00940 #define _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE) \
00941   {                                                                                                                              \
00942     /* Check for float component of first component of input image type. */                                                      \
00943     bool isFloatType = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='f';                                              \
00944     if (isFloatType){                                                                                                            \
00945       switch (DIM){                                                                                                              \
00946         case 2 : USER_CODE(Vector2f, ML_ITK_VECTOR_TYPE##2f, Vector2f, ML_ITK_VECTOR_TYPE##2f,  2, CLASS_NAME);  break;          \
00947         case 3 : USER_CODE(Vector3f, ML_ITK_VECTOR_TYPE##3f, Vector3f, ML_ITK_VECTOR_TYPE##3f,  3, CLASS_NAME);  break;          \
00948         case 4 : USER_CODE(Vector4f, ML_ITK_VECTOR_TYPE##4f, Vector4f, ML_ITK_VECTOR_TYPE##4f,  4, CLASS_NAME);  break;          \
00949         case 6 : USER_CODE(Vector6f, ML_ITK_VECTOR_TYPE##6f, Vector6f, ML_ITK_VECTOR_TYPE##6f,  6, CLASS_NAME);  break;          \
00950         default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES, 1).", ", DIM=", DIM);   break; \
00951       }                                                                                                                          \
00952     }                                                                                                                            \
00953     else{                                                                                                                        \
00954       switch (DIM){                                                                                                              \
00955         case 2 : USER_CODE(Vector2d, ML_ITK_VECTOR_TYPE##2d, Vector2d, ML_ITK_VECTOR_TYPE##2d, 2, CLASS_NAME);  break;           \
00956         case 3 : USER_CODE(Vector3d, ML_ITK_VECTOR_TYPE##3d, Vector3d, ML_ITK_VECTOR_TYPE##3d, 3, CLASS_NAME);  break;           \
00957         case 4 : USER_CODE(Vector4d, ML_ITK_VECTOR_TYPE##4d, Vector4d, ML_ITK_VECTOR_TYPE##4d, 4, CLASS_NAME);  break;           \
00958         case 6 : USER_CODE(Vector6d, ML_ITK_VECTOR_TYPE##6d, Vector6d, ML_ITK_VECTOR_TYPE##6d, 6, CLASS_NAME);  break;           \
00959         default: ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DIMENSION, "Dimension not supported(_ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES, 2).", ", DIM=", DIM);   break; \
00960       }                                                                                                                          \
00961     }                                                                                                                            \
00962   }                                                                                                                              \
00963 
00964 //----------------------------------------------------------------------------------
00966 //----------------------------------------------------------------------------------
00967 #define _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD)  \
00968   {                                                                                                                              \
00969     USER_CODE(Vector##DIM_C##f,  ML_ITK_VECTOR_TYPE##DIM_C##f, MLfloat,   MLfloat,  DIM_C, CLASS_NAME);                          \
00970   }                                                                                                                              \
00971 
00972 //----------------------------------------------------------------------------------
00974 //----------------------------------------------------------------------------------
00975 #define _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD)  \
00976   {                                                                                                                              \
00977     USER_CODE(Vector##DIM_C##d, ML_ITK_VECTOR_TYPE##DIM_C##d, Vector##DIM_C##d,  ML_ITK_VECTOR_TYPE##DIM_C##d, DIM_C, CLASS_NAME); \
00978   }                                                                                                                              \
00979 
00980 //--------------------------------------------------------------------------------------------
00982 //--------------------------------------------------------------------------------------------
00983 #define _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, ML_ITK_VECTOR_TYPE, DIM_C, DIM_CF, DIM_CD) \
00984   {                                                                                                                                   \
00985     /* Check for float component of first component of input image type. */                                                           \
00986     bool isFloatType = _addOns->getInSubImageTypeInfos()->structInfoString[0]=='f';                                                   \
00987     if (isFloatType){                                                                                                                 \
00988       USER_CODE(Vector##DIM_C##f, ML_ITK_VECTOR_TYPE##DIM_C##f, Vector##DIM_C##f, ML_ITK_VECTOR_TYPE##DIM_C##f, DIM_C, CLASS_NAME);   \
00989     }                                                                                                                                 \
00990     else{                                                                                                                             \
00991       USER_CODE(Vector##DIM_C##d, ML_ITK_VECTOR_TYPE##DIM_C##d, Vector##DIM_C##d, ML_ITK_VECTOR_TYPE##DIM_C##d, DIM_C, CLASS_NAME);   \
00992     }                                                                                                                                 \
00993   }                                                                                                                                   \
00994 
00995 
00996 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_IMG_DIM_CVFVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00997        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  2,  8, 16)
00998 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_IMG_DIM_CVFVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
00999        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  3, 12, 24)
01000 #define ML_IMPLEMENT_IMG_DIM_CVFVECTOR_TO_IMG_DIM_CVFVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01001        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector)
01002 
01003 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_IMG_DIM_CVDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01004        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  2,  8, 16)
01005 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_IMG_DIM_CVDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01006        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector,  3, 12, 24)
01007 #define ML_IMPLEMENT_IMG_DIM_CVDVECTOR_TO_IMG_DIM_CVDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01008        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkCVVector)
01009 
01010 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_IMG_DIM_CVFDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01011        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkCVVector, 2,  8, 16)
01012 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_IMG_DIM_CVFDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01013        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkCVVector, 3, 12, 24)
01014 #define ML_IMPLEMENT_IMG_DIM_CVFDVECTOR_TO_IMG_DIM_CVFDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01015        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkCVVector)
01016 
01017 
01019 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01020        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  2,  8, 16)
01021 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01022        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  3, 12, 24)
01023 #define ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01024        _ML_IMPLEMENT_IMG_DIM_FVECTOR_TO_IMG_DIM_FVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector)
01025 
01026 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01027        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  2,  8, 16)
01028 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01029        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector,  3, 12, 24)
01030 #define ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01031        _ML_IMPLEMENT_IMG_DIM_DVECTOR_TO_IMG_DIM_DVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, mlItkVector)
01032 
01033 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES_2D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01034        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkVector, 2,  8, 16)
01035 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES_3D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01036        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASESN(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkVector, 3, 12, 24)
01037 #define ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES_6D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01038        _ML_IMPLEMENT_IMG_DIM_FDVECTOR_TO_IMG_DIM_FDVECTOR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM,  mlItkVector)
01039 
01040 
01041 // END IMG DIM TO IMG DIM
01042 
01043 
01044 
01045 
01046 
01047 
01048 
01049 
01050 
01051 //---------------------------------------------------------------------------
01053 //---------------------------------------------------------------------------
01054 #define _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01055     case ML##FCARRIER##Type :                                                                                                    \
01056       DIM_INST(FCARRIER, ML_ITK_NONSCALAR_TYPE##f, FCARRIER, ML_ITK_NONSCALAR_TYPE##f, USER_CODE, CLASS_NAME, DIM);              \
01057     break;                                                                                                                       \
01058 
01059 //---------------------------------------------------------------------------
01061 //---------------------------------------------------------------------------
01062 #define _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01063     case ML##DCARRIER##Type :                                                                                                    \
01064       DIM_INST(DCARRIER, ML_ITK_NONSCALAR_TYPE##d, DCARRIER, ML_ITK_NONSCALAR_TYPE##d, USER_CODE, CLASS_NAME, DIM);              \
01065     break;                                                                                                                       \
01066 
01067 //---------------------------------------------------------------------------
01069 //---------------------------------------------------------------------------
01070 #define _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01071    _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01072    _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER)
01073 
01074 //---------------------------------------------------------------------------
01076 //---------------------------------------------------------------------------
01077 #define _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER, INST_CASES)\
01078 {                                                                                                                                \
01079   switch (DATATYPE_ENUM){                                                                                                        \
01080     INST_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER)      \
01081     default: {                                                                                                                   \
01082       ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Data type case(_ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES) not executed.", ", DATATYPE_ENUM=", DATATYPE_ENUM); \
01083     }                                                                                                                            \
01084     break;                                                                                                                       \
01085   }                                                                                                                              \
01086 }                                                                                                                                \
01087 
01088 
01089 
01090 //---------------------------------------------------------------------------
01092 //---------------------------------------------------------------------------
01093 #define _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01094     case ML##FCARRIER##Type :                                                                                                    \
01095       DIM_INST(FCARRIER, ML_ITK_NONSCALAR_TYPE##f, MLfloat,  MLfloat,  USER_CODE, CLASS_NAME, DIM);                              \
01096     break;                                                                                                                       \
01097 
01098 //---------------------------------------------------------------------------
01100 //---------------------------------------------------------------------------
01101 #define _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01102     case ML##DCARRIER##Type :                                                                                                    \
01103       DIM_INST(DCARRIER, ML_ITK_NONSCALAR_TYPE##d, MLdouble, MLdouble, USER_CODE, CLASS_NAME, DIM);                              \
01104     break;                                                                                                                       \
01105 
01106 //---------------------------------------------------------------------------
01108 //---------------------------------------------------------------------------
01109 #define _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01110    _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01111    _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER)
01112 
01113 
01114 //---------------------------------------------------------------------------
01116 //---------------------------------------------------------------------------
01117 #define _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER, INST_CASES) \
01118 {                                                                                                                                \
01119   switch (DATATYPE_ENUM){                                                                                                        \
01120     INST_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER)      \
01121                                                                                                                                  \
01122     default: {                                                                                                                   \
01123       ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Data type case(_ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES) not executed.", ", DATATYPE_ENUM=", DATATYPE_ENUM); \
01124     }                                                                                                                            \
01125     break;                                                                                                                       \
01126   }                                                                                                                              \
01127 }                                                                                                                                \
01128 
01129 
01130 
01131 //---------------------------------------------------------------------------
01133 //---------------------------------------------------------------------------
01134 #define _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01135     case MLint16Type : {                                                                                                         \
01136       const MLDataType i16DataType = _addOns->getInputSubImageDataType();                                                        \
01137       switch (i16DataType){                                                                                                      \
01138         case ML##FCARRIER##Type:                                                                                                 \
01139           DIM_INST(MLint16,  MLint16,  FCARRIER,  ML_ITK_NONSCALAR_TYPE##f, USER_CODE, CLASS_NAME, DIM);                         \
01140         break;                                                                                                                   \
01141                                                                                                                                  \
01142         default: {                                                                                                               \
01143           ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Input type case(_ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F) not executed.", ", i16DataType=", i16DataType);\
01144         }                                                                                                                        \
01145         break;                                                                                                                   \
01146       }                                                                                                                          \
01147     }                                                                                                                            \
01148     break;                                                                                                                       \
01149 
01150 //---------------------------------------------------------------------------
01152 //---------------------------------------------------------------------------
01153 #define _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01154     case MLint32Type : {                                                                                                         \
01155       const MLDataType i32DataType = _addOns->getInputSubImageDataType();                                                        \
01156       switch (i32DataType){                                                                                                      \
01157         case ML##DCARRIER##Type:                                                                                                 \
01158           DIM_INST(MLint32, MLint32, DCARRIER, ML_ITK_NONSCALAR_TYPE##d, USER_CODE, CLASS_NAME, DIM);                            \
01159         break;                                                                                                                   \
01160                                                                                                                                  \
01161         default: {                                                                                                               \
01162           ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Input type case(_ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D) not executed.", ", i32DataType=", i32DataType);\
01163         }                                                                                                                        \
01164         break;                                                                                                                   \
01165       }                                                                                                                          \
01166     }                                                                                                                            \
01167     break;                                                                                                                       \
01168 
01169 //---------------------------------------------------------------------------
01171 //---------------------------------------------------------------------------
01172 #define _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01173    _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01174    _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER)
01175 
01176 //---------------------------------------------------------------------------
01178 //---------------------------------------------------------------------------
01179 #define _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER, INST_CASES) \
01180 {                                                                                                                                    \
01181   switch (_m_PixelType){                                                                                                             \
01182     INST_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER)          \
01183                                                                                                                                      \
01184     default: {                                                                                                                       \
01185       ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Output data type case for _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES not executed.", ", _m_PixelType=", _m_PixelType); \
01186     }                                                                                                                                \
01187     break;                                                                                                                           \
01188   }                                                                                                                                  \
01189 }                                                                                                                                    \
01190 
01191 
01192 
01193 
01194 //---------------------------------------------------------------------------
01196 //---------------------------------------------------------------------------
01197 #define _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01198     case MLfloatType : {                                                                                                         \
01199       const MLDataType fDataType = _addOns->getInputSubImageDataType();                                                          \
01200       switch (fDataType){                                                                                                        \
01201         case ML##FCARRIER##Type:                                                                                                 \
01202           DIM_INST(MLfloat,  MLfloat,  FCARRIER,  ML_ITK_NONSCALAR_TYPE##f, USER_CODE, CLASS_NAME, DIM);                         \
01203         break;                                                                                                                   \
01204                                                                                                                                  \
01205         default: {                                                                                                               \
01206           ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Input type case not executed.", ", fDataType=", fDataType);      \
01207         }                                                                                                                        \
01208         break;                                                                                                                   \
01209       }                                                                                                                          \
01210     }                                                                                                                            \
01211     break;                                                                                                                       \
01212 
01213 //---------------------------------------------------------------------------
01215 //---------------------------------------------------------------------------
01216 #define _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01217     case MLdoubleType : {                                                                                                        \
01218       const MLDataType dDataType = _addOns->getInputSubImageDataType();                                                          \
01219       switch (dDataType){                                                                                                        \
01220         case ML##DCARRIER##Type:                                                                                                 \
01221           DIM_INST(MLdouble, MLdouble, DCARRIER, ML_ITK_NONSCALAR_TYPE##d, USER_CODE, CLASS_NAME, DIM);                          \
01222         break;                                                                                                                   \
01223                                                                                                                                  \
01224         default: {                                                                                                               \
01225           ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Input type case not executed.", ", dDataType=", dDataType);      \
01226         }                                                                                                                        \
01227         break;                                                                                                                   \
01228       }                                                                                                                          \
01229     }                                                                                                                            \
01230     break;                                                                                                                       \
01231 
01232 //---------------------------------------------------------------------------
01234 //---------------------------------------------------------------------------
01235 #define _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01236    _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER) \
01237    _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER)
01238 
01239 //---------------------------------------------------------------------------
01241 //---------------------------------------------------------------------------
01242 #define _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER, INST_CASES) \
01243 {                                                                                                                                \
01244   switch (_m_PixelType){                                                                                                         \
01245     INST_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, ML_ITK_NONSCALAR_TYPE, FCARRIER, DCARRIER)      \
01246                                                                                                                                  \
01247     default: {                                                                                                                   \
01248       ML_ITK_ML_PRINT_ERROR(#CLASS_NAME, ML_BAD_DATA_TYPE, "Output data type case not executed.", ", _m_PixelType=", _m_PixelType); \
01249     }                                                                                                                            \
01250     break;                                                                                                                       \
01251   }                                                                                                                              \
01252 }                                                                                                                                \
01253 
01254 
01256 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_DIFFUSION3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01257   _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_FD)
01258 
01259 #define ML_IMPLEMENT_REAL_TO_DIFFUSION3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01260   _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_FD)
01261 
01262 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_INT_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01263   _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_FD)
01264 
01265 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_REAL_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01266   _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_FD)
01267 
01268 
01269 
01271 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_DIFFUSION3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01272   _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_FD)
01273 
01274 #define ML_IMPLEMENT_REAL_TO_DIFFUSION3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01275   _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_FD)
01276 
01277 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_INT_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01278   _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_FD)
01279 
01280 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_REAL_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01281   _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_FD)
01282 
01283 
01285 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01286   _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_FD)
01287 
01288 #define ML_IMPLEMENT_REAL_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01289   _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_FD)
01290 
01291 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_INT_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01292   _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_FD)
01293 
01294 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_REAL_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01295   _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_FD)
01296 
01297 
01299 #define ML_IMPLEMENT_COMPLEX_TO_COMPLEX_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01300   _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_FD)
01301 
01302 #define ML_IMPLEMENT_REAL_TO_COMPLEX_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01303   _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_FD)
01304 
01305 #define ML_IMPLEMENT_COMPLEX_TO_INT_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01306   _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_FD)
01307 
01308 #define ML_IMPLEMENT_COMPLEX_TO_REAL_CASES_FD(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01309   _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_FD)
01310 
01311 
01312 
01313 
01315 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_DIFFUSION3D_TENSOR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01316   _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_F)
01317 
01318 #define ML_IMPLEMENT_REAL_TO_DIFFUSION3D_TENSOR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01319   _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_F)
01320 
01321 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_INT_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01322   _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F)
01323 
01324 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_REAL_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01325   _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_F)
01326 
01327 
01329 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01330   _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_F)
01331 
01332 #define ML_IMPLEMENT_REAL_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01333   _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_F)
01334 
01335 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_INT_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01336   _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F)
01337 
01338 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_REAL_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01339   _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_F)
01340 
01341 
01343 #define ML_IMPLEMENT_COMPLEX_TO_COMPLEX_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01344   _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_F)
01345 
01346 #define ML_IMPLEMENT_REAL_TO_COMPLEX_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01347   _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_F)
01348 
01349 #define ML_IMPLEMENT_COMPLEX_TO_INT_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01350   _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_F)
01351 
01352 #define ML_IMPLEMENT_COMPLEX_TO_REAL_CASES_F(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01353   _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_F)
01354 
01355 
01356 
01357 
01359 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_DIFFUSION3D_TENSOR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01360   _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_D)
01361 
01362 #define ML_IMPLEMENT_REAL_TO_DIFFUSION3D_TENSOR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01363   _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_D)
01364 
01365 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_INT_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01366   _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D)
01367 
01368 #define ML_IMPLEMENT_DIFFUSION3D_TENSOR_TO_REAL_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01369   _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkDiffusionTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_D)
01370 
01371 
01373 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01374   _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_D)
01375 
01376 #define ML_IMPLEMENT_REAL_TO_SYMMETRICSECONDRANK3D_TENSOR_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01377   _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_D)
01378 
01379 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_INT_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01380   _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D)
01381 
01382 #define ML_IMPLEMENT_SYMMETRICSECONDRANK3D_TENSOR_TO_REAL_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01383   _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkSymmetricSecondRankTensor3D, Vector6f, Vector6d, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_D)
01384 
01385 
01387 #define ML_IMPLEMENT_COMPLEX_TO_COMPLEX_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01388   _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_NONSCALAR_CASES_D)
01389 
01390 #define ML_IMPLEMENT_REAL_TO_COMPLEX_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST)\
01391   _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_REAL_TO_NONSCALAR_CASES_D)
01392 
01393 #define ML_IMPLEMENT_COMPLEX_TO_INT_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01394   _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_INT_CASES_D)
01395 
01396 #define ML_IMPLEMENT_COMPLEX_TO_REAL_CASES_D(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST) \
01397   _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES(INFO_STRING, USER_CODE, CLASS_NAME, DATATYPE_ENUM, DIM, DIM_INST, mlItkComplex, Complexf, Complexd, _ML_IMPLEMENT_NONSCALAR_TO_REAL_CASES_D)
01398 
01399 
01400 
01401 ML_END_NAMESPACE
01402 
01403 #endif // __mlITKNonScalarSupport_H
01404 
01405