ML Reference
MeVis/Foundation/Sources/ML/include/mlModuleMacros.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //-------------------------------------------------------------------------
00010 //-------------------------------------------------------------------------
00011 #ifndef __mlModuleMacros_H
00012 #define __mlModuleMacros_H
00013 
00014 //-------------------------------------------------------------------------
00015 //                 MACROS to simplify module programming
00016 //-------------------------------------------------------------------------
00017 
00018 //------------------------------------------------------------------------------------
00020 //------------------------------------------------------------------------------------
00021 #define ML_EMPTY_PARAM
00022 
00023 //------------------------------------------------------------------------------------
00025 //------------------------------------------------------------------------------------
00026 #define ML_INSTANTIATE_STANDARD_SIGNED_INT_TYPES(PASSED_CODE) \
00027     PASSED_CODE(MLint8);       \
00028     PASSED_CODE(MLint16);      \
00029     PASSED_CODE(MLint32);      \
00030     PASSED_CODE(MLint64);
00031 
00032 //------------------------------------------------------------------------------------
00034 //------------------------------------------------------------------------------------
00035 #define ML_INSTANTIATE_STANDARD_UNSIGNED_INT_TYPES(PASSED_CODE) \
00036     PASSED_CODE(MLuint8);      \
00037     PASSED_CODE(MLuint16);     \
00038     PASSED_CODE(MLuint32);     \
00039     PASSED_CODE(MLuint64);
00040 
00041 //------------------------------------------------------------------------------------
00043 //------------------------------------------------------------------------------------
00044 #define ML_INSTANTIATE_STANDARD_INT_TYPES(PASSED_CODE) \
00045     ML_INSTANTIATE_STANDARD_SIGNED_INT_TYPES(PASSED_CODE) \
00046     ML_INSTANTIATE_STANDARD_UNSIGNED_INT_TYPES(PASSED_CODE)
00047 
00048 //------------------------------------------------------------------------------------
00050 //------------------------------------------------------------------------------------
00051 #define ML_INSTANTIATE_STANDARD_FLOAT_TYPES(PASSED_CODE) \
00052     PASSED_CODE(MLfloat);      \
00053     PASSED_CODE(MLdouble);
00054 
00055 //------------------------------------------------------------------------------------
00074 //------------------------------------------------------------------------------------
00075 #define ML_INSTANTIATE_STANDARD_TYPES(PASSED_CODE) \
00076     ML_INSTANTIATE_STANDARD_INT_TYPES(PASSED_CODE) \
00077     ML_INSTANTIATE_STANDARD_FLOAT_TYPES(PASSED_CODE)
00078 
00079 //------------------------------------------------------------------------------------
00081 //------------------------------------------------------------------------------------
00082 #define ML_INSTANTIATE_DEFAULT_EXTENDED_TYPES(PASSED_CODE) \
00083     PASSED_CODE(std::complex<MLfloat>);  \
00084     PASSED_CODE(std::complex<MLdouble>); \
00085     PASSED_CODE(Vector2f);  \
00086     PASSED_CODE(Vector2d);  \
00087     PASSED_CODE(Vector3f);  \
00088     PASSED_CODE(Vector3d);  \
00089     PASSED_CODE(Vector6f);  \
00090     PASSED_CODE(Vector6d);  \
00091     PASSED_CODE(Matrix2f);  \
00092     PASSED_CODE(Matrix2d);  \
00093     PASSED_CODE(Matrix3f);  \
00094     PASSED_CODE(Matrix3d);
00095 
00096 //------------------------------------------------------------------------------------
00099 //------------------------------------------------------------------------------------
00100 #define ML_INSTANTIATE_ALL_TYPES(PASSED_CODE) \
00101     ML_INSTANTIATE_STANDARD_TYPES(PASSED_CODE) \
00102     ML_INSTANTIATE_DEFAULT_EXTENDED_TYPES(PASSED_CODE)
00103 
00104 
00105 //------------------------------------------------------------------------------------
00138 //------------------------------------------------------------------------------------
00139 #define ML_IMPLEMENT_ALL_CASES(CLASS_NAME, SWITCH_CODE, O_SWITCH_TYPE, INFO_STRING, DUMMY_OUT_TYPE) \
00140   switch(O_SWITCH_TYPE){                                         \
00141     case MLint8Type:       SWITCH_CODE(MLint8      , MLint8      , CLASS_NAME); break; \
00142     case MLuint8Type:      SWITCH_CODE(MLuint8     , MLuint8     , CLASS_NAME); break; \
00143     case MLint16Type:      SWITCH_CODE(MLint16     , MLint16     , CLASS_NAME); break; \
00144     case MLuint16Type:     SWITCH_CODE(MLuint16    , MLuint16    , CLASS_NAME); break; \
00145     case MLint32Type:      SWITCH_CODE(MLint32     , MLint32     , CLASS_NAME); break; \
00146     case MLuint32Type:     SWITCH_CODE(MLuint32    , MLuint32    , CLASS_NAME); break; \
00147     case MLint64Type:      SWITCH_CODE(MLint64     , MLint64     , CLASS_NAME); break; \
00148     case MLuint64Type:     SWITCH_CODE(MLuint64    , MLuint64    , CLASS_NAME); break; \
00149     case MLfloatType:      SWITCH_CODE(MLfloat     , MLfloat     , CLASS_NAME); break; \
00150     case MLdoubleType:     SWITCH_CODE(MLdouble    , MLdouble    , CLASS_NAME); break; \
00151     case MLComplexfType:   SWITCH_CODE(std::complex<MLfloat> , std::complex<MLfloat> , CLASS_NAME); break; \
00152     case MLComplexdType:   SWITCH_CODE(std::complex<MLdouble>, std::complex<MLdouble>, CLASS_NAME); break; \
00153     case MLVector2fType:   SWITCH_CODE(Vector2f    , Vector2f    , CLASS_NAME); break; \
00154     case MLVector2dType:   SWITCH_CODE(Vector2d    , Vector2d    , CLASS_NAME); break; \
00155     case MLVector3fType:   SWITCH_CODE(Vector3f    , Vector3f    , CLASS_NAME); break; \
00156     case MLVector3dType:   SWITCH_CODE(Vector3d    , Vector3d    , CLASS_NAME); break; \
00157     case MLVector6fType:   SWITCH_CODE(Vector6f    , Vector6f    , CLASS_NAME); break; \
00158     case MLVector6dType:   SWITCH_CODE(Vector6d    , Vector6d    , CLASS_NAME); break; \
00159     case MLMatrix2fType:   SWITCH_CODE(Matrix2f    , Matrix2f    , CLASS_NAME); break; \
00160     case MLMatrix2dType:   SWITCH_CODE(Matrix2d    , Matrix2d    , CLASS_NAME); break; \
00161     case MLMatrix3fType:   SWITCH_CODE(Matrix3f    , Matrix3f    , CLASS_NAME); break; \
00162     case MLMatrix3dType:   SWITCH_CODE(Matrix3d    , Matrix3d    , CLASS_NAME); break; \
00163     default: { ML_PRINT_FATAL_ERROR(INFO_STRING, ML_BAD_DATA_TYPE, "Unsupported type case."); break; \
00164     } \
00165   }
00166 
00167 //------------------------------------------------------------------------------------
00169 //------------------------------------------------------------------------------------
00170 #define ML_IMPLEMENT_SCALAR_TYPE_CASES(CLASS_NAME, SWITCH_CODE, O_SWITCH_TYPE, INFO_STRING, DUMMY_OUT_TYPE) \
00171   switch(O_SWITCH_TYPE){                                         \
00172     case MLint8Type:       SWITCH_CODE(MLint8      , MLint8      , CLASS_NAME); break; \
00173     case MLuint8Type:      SWITCH_CODE(MLuint8     , MLuint8     , CLASS_NAME); break; \
00174     case MLint16Type:      SWITCH_CODE(MLint16     , MLint16     , CLASS_NAME); break; \
00175     case MLuint16Type:     SWITCH_CODE(MLuint16    , MLuint16    , CLASS_NAME); break; \
00176     case MLint32Type:      SWITCH_CODE(MLint32     , MLint32     , CLASS_NAME); break; \
00177     case MLuint32Type:     SWITCH_CODE(MLuint32    , MLuint32    , CLASS_NAME); break; \
00178     case MLint64Type:      SWITCH_CODE(MLint64     , MLint64     , CLASS_NAME); break; \
00179     case MLuint64Type:     SWITCH_CODE(MLuint64    , MLuint64    , CLASS_NAME); break; \
00180     case MLfloatType:      SWITCH_CODE(MLfloat     , MLfloat     , CLASS_NAME); break; \
00181     case MLdoubleType:     SWITCH_CODE(MLdouble    , MLdouble    , CLASS_NAME); break; \
00182     default: { ML_PRINT_FATAL_ERROR(INFO_STRING, ML_BAD_DATA_TYPE, "Unsupported type case."); break; \
00183     } \
00184   }
00185 
00186 //------------------------------------------------------------------------------------
00216 //------------------------------------------------------------------------------------
00217 #define ML_IMPLEMENT_DIFFERENT_INOUT_DATATYPES_CASES(CLASS_NAME, SWITCH_CODE, IN_SWITCH_TYPE, INFO_STRING, OUTPUT_TYPE)       \
00218   switch (static_cast<int>(IN_SWITCH_TYPE)){                                                           \
00219     case MLint8Type:       SWITCH_CODE(OUTPUT_TYPE, MLint8        , CLASS_NAME);  break;               \
00220     case MLuint8Type:      SWITCH_CODE(OUTPUT_TYPE, MLuint8       , CLASS_NAME);  break;               \
00221     case MLint16Type:      SWITCH_CODE(OUTPUT_TYPE, MLint16       , CLASS_NAME);  break;               \
00222     case MLuint16Type:     SWITCH_CODE(OUTPUT_TYPE, MLuint16      , CLASS_NAME);  break;               \
00223     case MLint32Type:      SWITCH_CODE(OUTPUT_TYPE, MLint32       , CLASS_NAME);  break;               \
00224     case MLuint32Type:     SWITCH_CODE(OUTPUT_TYPE, MLuint32      , CLASS_NAME);  break;               \
00225     case MLint64Type:      SWITCH_CODE(OUTPUT_TYPE, MLint64       , CLASS_NAME);  break;               \
00226     case MLuint64Type:     SWITCH_CODE(OUTPUT_TYPE, MLuint64      , CLASS_NAME);  break;               \
00227     case MLfloatType:      SWITCH_CODE(OUTPUT_TYPE, MLfloat       , CLASS_NAME);  break;               \
00228     case MLdoubleType:     SWITCH_CODE(OUTPUT_TYPE, MLdouble      , CLASS_NAME);  break;               \
00229     case MLComplexfType:   SWITCH_CODE(OUTPUT_TYPE, std::complex<MLfloat> , CLASS_NAME); break; \
00230     case MLComplexdType:   SWITCH_CODE(OUTPUT_TYPE, std::complex<MLdouble>, CLASS_NAME); break; \
00231     case MLVector2fType:   SWITCH_CODE(OUTPUT_TYPE, Vector2f    , CLASS_NAME); break; \
00232     case MLVector2dType:   SWITCH_CODE(OUTPUT_TYPE, Vector2d    , CLASS_NAME); break; \
00233     case MLVector3fType:   SWITCH_CODE(OUTPUT_TYPE, Vector3f    , CLASS_NAME); break; \
00234     case MLVector3dType:   SWITCH_CODE(OUTPUT_TYPE, Vector3d    , CLASS_NAME); break; \
00235     case MLVector6fType:   SWITCH_CODE(OUTPUT_TYPE, Vector6f    , CLASS_NAME); break; \
00236     case MLVector6dType:   SWITCH_CODE(OUTPUT_TYPE, Vector6d    , CLASS_NAME); break; \
00237     case MLMatrix2fType:   SWITCH_CODE(OUTPUT_TYPE, Matrix2f    , CLASS_NAME); break; \
00238     case MLMatrix2dType:   SWITCH_CODE(OUTPUT_TYPE, Matrix2d    , CLASS_NAME); break; \
00239     case MLMatrix3fType:   SWITCH_CODE(OUTPUT_TYPE, Matrix3f    , CLASS_NAME); break; \
00240     case MLMatrix3dType:   SWITCH_CODE(OUTPUT_TYPE, Matrix3d    , CLASS_NAME); break; \
00241     default:{                                                                                          \
00242       char buf[512]="";                                                                                \
00243       sprintf(buf, "Type not supported, case type %d does not exist.", IN_SWITCH_TYPE);                \
00244       ML_PRINT_FATAL_ERROR(INFO_STRING, ML_BAD_DATA_TYPE, buf); }                                      \
00245   }
00246 
00247 //------------------------------------------------------------------------------------
00249 //------------------------------------------------------------------------------------
00250 #define ML_IMPLEMENT_DIFFERENT_SCALAR_INOUT_DATATYPES_CASES(CLASS_NAME, SWITCH_CODE, IN_SWITCH_TYPE, INFO_STRING, OUTPUT_TYPE)       \
00251   switch (static_cast<int>(IN_SWITCH_TYPE)){                                                           \
00252     case MLint8Type:       SWITCH_CODE(OUTPUT_TYPE, MLint8        , CLASS_NAME);  break;               \
00253     case MLuint8Type:      SWITCH_CODE(OUTPUT_TYPE, MLuint8       , CLASS_NAME);  break;               \
00254     case MLint16Type:      SWITCH_CODE(OUTPUT_TYPE, MLint16       , CLASS_NAME);  break;               \
00255     case MLuint16Type:     SWITCH_CODE(OUTPUT_TYPE, MLuint16      , CLASS_NAME);  break;               \
00256     case MLint32Type:      SWITCH_CODE(OUTPUT_TYPE, MLint32       , CLASS_NAME);  break;               \
00257     case MLuint32Type:     SWITCH_CODE(OUTPUT_TYPE, MLuint32      , CLASS_NAME);  break;               \
00258     case MLint64Type:      SWITCH_CODE(OUTPUT_TYPE, MLint64       , CLASS_NAME);  break;               \
00259     case MLuint64Type:     SWITCH_CODE(OUTPUT_TYPE, MLuint64      , CLASS_NAME);  break;               \
00260     case MLfloatType:      SWITCH_CODE(OUTPUT_TYPE, MLfloat       , CLASS_NAME);  break;               \
00261     case MLdoubleType:     SWITCH_CODE(OUTPUT_TYPE, MLdouble      , CLASS_NAME);  break;               \
00262     default:{                                                                                          \
00263       char buf[512]="";                                                                                \
00264       sprintf(buf, "Type not supported, case type %d does not exist.", IN_SWITCH_TYPE);                \
00265       ML_PRINT_FATAL_ERROR(INFO_STRING, ML_BAD_DATA_TYPE, buf); }                                      \
00266   }
00267 
00268 #ifdef ML_DEPRECATED
00269 
00270 
00271 
00272 
00273 #define ML_IMPLEMENT_DD_CASES ML_IMPLEMENT_DIFFERENT_INOUT_DATATYPES_CASES
00274 
00275 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
00276 #pragma deprecated("ML_IMPLEMENT_DD_CASES")
00277 #endif
00278 
00279 
00280 #endif // ML_DEPRECATED
00281 
00282 #define ML_IMPLEMENT_SCALAR_CASES_WITH_DEFAULT(CLASS_NAME, SWITCH_CODE, O_SWITCH_TYPE, DEFAULT_CODE, DUMMY_OUT_TYPE) \
00283   switch (static_cast<int>(O_SWITCH_TYPE)){                                      \
00284     case MLint8Type:    { SWITCH_CODE(MLint8  , MLint8  , CLASS_NAME); } break;  \
00285     case MLuint8Type:   { SWITCH_CODE(MLuint8 , MLuint8 , CLASS_NAME); } break;  \
00286     case MLint16Type:   { SWITCH_CODE(MLint16 , MLint16 , CLASS_NAME); } break;  \
00287     case MLuint16Type:  { SWITCH_CODE(MLuint16, MLuint16, CLASS_NAME); } break;  \
00288     case MLint32Type:   { SWITCH_CODE(MLint32 , MLint32 , CLASS_NAME); } break;  \
00289     case MLuint32Type:  { SWITCH_CODE(MLuint32, MLuint32, CLASS_NAME); } break;  \
00290     case MLint64Type:   { SWITCH_CODE(MLint64 , MLint64 , CLASS_NAME); } break;  \
00291     case MLuint64Type:  { SWITCH_CODE(MLuint64, MLuint64, CLASS_NAME); } break;  \
00292     case MLfloatType:   { SWITCH_CODE(MLfloat , MLfloat , CLASS_NAME); } break;  \
00293     case MLdoubleType:  { SWITCH_CODE(MLdouble, MLdouble, CLASS_NAME); } break;  \
00294     default: { DEFAULT_CODE(DUMMY_OUT_TYPE, CLASS_NAME); }                       \
00295   }
00296 
00297 #define ML_IMPLEMENT_DIFFERENT_INOUT_SCALAR_CASES_WITH_DEFAULT(CLASS_NAME, SWITCH_CODE, IN_SWITCH_TYPE, DEFAULT_CODE, OUTPUT_TYPE)       \
00298   switch (static_cast<int>(IN_SWITCH_TYPE)){                                        \
00299     case MLint8Type:    { SWITCH_CODE(OUTPUT_TYPE, MLint8  , CLASS_NAME); } break;  \
00300     case MLuint8Type:   { SWITCH_CODE(OUTPUT_TYPE, MLuint8 , CLASS_NAME); } break;  \
00301     case MLint16Type:   { SWITCH_CODE(OUTPUT_TYPE, MLint16 , CLASS_NAME); } break;  \
00302     case MLuint16Type:  { SWITCH_CODE(OUTPUT_TYPE, MLuint16, CLASS_NAME); } break;  \
00303     case MLint32Type:   { SWITCH_CODE(OUTPUT_TYPE, MLint32 , CLASS_NAME); } break;  \
00304     case MLuint32Type:  { SWITCH_CODE(OUTPUT_TYPE, MLuint32, CLASS_NAME); } break;  \
00305     case MLint64Type:   { SWITCH_CODE(OUTPUT_TYPE, MLint64 , CLASS_NAME); } break;  \
00306     case MLuint64Type:  { SWITCH_CODE(OUTPUT_TYPE, MLuint64, CLASS_NAME); } break;  \
00307     case MLfloatType:   { SWITCH_CODE(OUTPUT_TYPE, MLfloat , CLASS_NAME); } break;  \
00308     case MLdoubleType:  { SWITCH_CODE(OUTPUT_TYPE, MLdouble, CLASS_NAME); } break;  \
00309     default:{ DEFAULT_CODE(OUTPUT_TYPE, CLASS_NAME); }                              \
00310   }
00311 
00312 
00313 //------------------------------------------------------------------------------------
00315 
00316 //------------------------------------------------------------------------------------
00317 #define ML_IMPLEMENT_INT8_CASE(      CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLint8Type:       SWITCH_CODE(MLint8      , MLint8      , CLASS_NAME); break;
00318 #define ML_IMPLEMENT_UINT8_CASE(     CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLuint8Type:      SWITCH_CODE(MLuint8     , MLuint8     , CLASS_NAME); break;
00319 #define ML_IMPLEMENT_INT16_CASE(     CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLint16Type:      SWITCH_CODE(MLint16     , MLint16     , CLASS_NAME); break;
00320 #define ML_IMPLEMENT_UINT16_CASE(    CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLuint16Type:     SWITCH_CODE(MLuint16    , MLuint16    , CLASS_NAME); break;
00321 #define ML_IMPLEMENT_INT32_CASE(     CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLint32Type:      SWITCH_CODE(MLint32     , MLint32     , CLASS_NAME); break;
00322 #define ML_IMPLEMENT_UINT32_CASE(    CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLuint32Type:     SWITCH_CODE(MLuint32    , MLuint32    , CLASS_NAME); break;
00323 #define ML_IMPLEMENT_INT64_CASE(     CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLint64Type:      SWITCH_CODE(MLint64     , MLint64     , CLASS_NAME); break;
00324 #define ML_IMPLEMENT_UINT64_CASE(    CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLuint64Type:     SWITCH_CODE(MLuint64    , MLuint64    , CLASS_NAME); break;
00325 #define ML_IMPLEMENT_FLOAT_CASE(     CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLfloatType:      SWITCH_CODE(MLfloat     , MLfloat     , CLASS_NAME); break;
00326 #define ML_IMPLEMENT_DOUBLE_CASE(    CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLdoubleType:     SWITCH_CODE(MLdouble    , MLdouble    , CLASS_NAME); break;
00327 #define ML_IMPLEMENT_COMPLEXF_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLComplexfType:   SWITCH_CODE(std::complex<MLfloat> , std::complex<MLfloat> , CLASS_NAME); break;
00328 #define ML_IMPLEMENT_COMPLEXD_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLComplexdType:   SWITCH_CODE(std::complex<MLdouble>, std::complex<MLdouble>, CLASS_NAME); break;
00329 #define ML_IMPLEMENT_VECTOR2F_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLVector2fType:   SWITCH_CODE(Vector2f    , Vector2f    , CLASS_NAME); break;
00330 #define ML_IMPLEMENT_VECTOR2D_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLVector2dType:   SWITCH_CODE(Vector2d    , Vector2d    , CLASS_NAME); break;
00331 #define ML_IMPLEMENT_VECTOR3F_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLVector3fType:   SWITCH_CODE(Vector3f    , Vector3f    , CLASS_NAME); break;
00332 #define ML_IMPLEMENT_VECTOR3D_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLVector3dType:   SWITCH_CODE(Vector3d    , Vector3d    , CLASS_NAME); break;
00333 #define ML_IMPLEMENT_VECTOR6F_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLVector6fType:   SWITCH_CODE(Vector6f    , Vector6f    , CLASS_NAME); break;
00334 #define ML_IMPLEMENT_VECTOR6D_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLVector6dType:   SWITCH_CODE(Vector6d    , Vector6d    , CLASS_NAME); break;
00335 #define ML_IMPLEMENT_MATRIX2F_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLMatrix2fType:   SWITCH_CODE(Matrix2f    , Matrix2f    , CLASS_NAME); break;
00336 #define ML_IMPLEMENT_MATRIX2D_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLMatrix2dType:   SWITCH_CODE(Matrix2d    , Matrix2d    , CLASS_NAME); break;
00337 #define ML_IMPLEMENT_MATRIX3F_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLMatrix3fType:   SWITCH_CODE(Matrix3f    , Matrix3f    , CLASS_NAME); break;
00338 #define ML_IMPLEMENT_MATRIX3D_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) case MLMatrix3dType:   SWITCH_CODE(Matrix3d    , Matrix3d    , CLASS_NAME); break;
00339 
00340 
00341 //------------------------------------------------------------------------------------
00343 
00344 //------------------------------------------------------------------------------------
00346 #define ML_IMPLEMENT_INT_CASES_WO_INT64(CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)\
00347     ML_IMPLEMENT_INT8_CASE(   CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00348     ML_IMPLEMENT_UINT8_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00349     ML_IMPLEMENT_INT16_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00350     ML_IMPLEMENT_UINT16_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00351     ML_IMPLEMENT_INT32_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00352     ML_IMPLEMENT_UINT32_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)
00353 
00355 #define ML_IMPLEMENT_INT_CASES(CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)  \
00356     ML_IMPLEMENT_INT8_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00357     ML_IMPLEMENT_UINT8_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00358     ML_IMPLEMENT_INT16_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00359     ML_IMPLEMENT_UINT16_CASE(CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00360     ML_IMPLEMENT_INT32_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00361     ML_IMPLEMENT_UINT32_CASE(CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00362     ML_IMPLEMENT_INT64_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00363     ML_IMPLEMENT_UINT64_CASE(CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) 
00364 
00366 #define ML_IMPLEMENT_FLOAT_CASES(CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)\
00367     ML_IMPLEMENT_FLOAT_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)   \
00368     ML_IMPLEMENT_DOUBLE_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)   \
00369 
00370 
00371 #define ML_IMPLEMENT_COMPLEX_CASES(CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)\
00372     ML_IMPLEMENT_COMPLEXF_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)  \
00373     ML_IMPLEMENT_COMPLEXD_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)
00374 
00375 #define ML_IMPLEMENT_VECTOR_CASES(CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) \
00376     ML_IMPLEMENT_VECTOR2F_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00377     ML_IMPLEMENT_VECTOR2D_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00378     ML_IMPLEMENT_VECTOR3F_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00379     ML_IMPLEMENT_VECTOR3D_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00380     ML_IMPLEMENT_VECTOR6F_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00381     ML_IMPLEMENT_VECTOR6D_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)
00382 
00383 #define ML_IMPLEMENT_MATRIX_CASES(CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY) \
00384     ML_IMPLEMENT_MATRIX2F_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00385     ML_IMPLEMENT_MATRIX2D_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00386     ML_IMPLEMENT_MATRIX3F_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00387     ML_IMPLEMENT_MATRIX3D_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)
00388 
00390 #define ML_IMPLEMENT_INT_FLOAT_CASES(CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)\
00391     ML_IMPLEMENT_INT_CASES(   CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)   \
00392     ML_IMPLEMENT_FLOAT_CASES( CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)
00393 
00395 #define ML_IMPLEMENT_INT_FLOAT_CASES_WO_INT64(CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)\
00396     ML_IMPLEMENT_INT8_CASE(   CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)   \
00397     ML_IMPLEMENT_UINT8_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)   \
00398     ML_IMPLEMENT_INT16_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)   \
00399     ML_IMPLEMENT_UINT16_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)   \
00400     ML_IMPLEMENT_INT32_CASE(  CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)   \
00401     ML_IMPLEMENT_UINT32_CASE( CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)   \
00402     ML_IMPLEMENT_FLOAT_CASES( CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)
00403 
00405 #define ML_IMPLEMENT_DEFAULT_CASES(CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)   \
00406     ML_IMPLEMENT_INT_CASES(    CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)  \
00407     ML_IMPLEMENT_FLOAT_CASES(  CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)  \
00408     ML_IMPLEMENT_COMPLEX_CASES(CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)  \
00409     ML_IMPLEMENT_VECTOR_CASES( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)  \
00410     ML_IMPLEMENT_MATRIX_CASES( CLASS_NAME, SWITCH_CODE, OST_DUMMY, INFO_DUMMY, INTYPE_DUMMY)  \
00411 
00412 
00413 #define ML_IMPLEMENT_SCALAR_CASES(CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)\
00414     ML_IMPLEMENT_INT_CASES(   CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)   \
00415     ML_IMPLEMENT_FLOAT_CASES( CLASS_NAME, SWITCH_CODE, OST_DUMMY1, OST_DUMMY2, OST_DUMMY3)
00416 
00420 #define ML_IMPLEMENT_DEFAULT_HANDLING(CALLING_POSITION_STRING) \
00421  default: {                                           \
00422    ML_PRINT_FATAL_ERROR(CALLING_POSITION_STRING,      \
00423                         ML_BAD_DATA_TYPE,             \
00424                         "Type case not executed.");   \
00425    break;                                             \
00426  }                                                    \
00427 
00428 
00429 
00430 //------------------------------------------------------------------------------------
00431 
00432 //------------------------------------------------------------------------------------
00442 //------------------------------------------------------------------------------------
00443 #define _ML_TYPE_SWITCH_INTERN(DTSWITCHES, METHOD_PREFIX, DOUBLE_COLON, SWITCH_CODE, OUT_SWITCH_TYPE, CALLING_POSITION_STRING, INPTR, CLASS_NAME) \
00444                                                                                                  \
00445   void METHOD_PREFIX DOUBLE_COLON calculateOutputSubImage(SubImage *outSubImg, int outIndex, INPTR)        \
00446   {                                                                                              \
00447     ML_TRACE_IN( "mlModuleMacros--calculateOutputSubImage( )" );                                 \
00448     switch(OUT_SWITCH_TYPE){                                                                     \
00449       DTSWITCHES(CLASS_NAME, SWITCH_CODE, OUT_SWITCH_TYPE, CALLING_POSITION_STRING, INTYPE_DUMMY)\
00450       ML_IMPLEMENT_DEFAULT_HANDLING(CALLING_POSITION_STRING)                                     \
00451     }                                                                                            \
00452   }
00453 
00454 //------------------------------------------------------------------------------------
00457 //------------------------------------------------------------------------------------
00458 #define _ML_TYPE_SWITCH_C(DTSWITCHES, SWITCH_CODE, CALLING_POSITION_STRING, INPTR, CLASS_NAME) \
00459   _ML_TYPE_SWITCH_INTERN(DTSWITCHES, CLASS_NAME,                 ::, SWITCH_CODE, outSubImg->getDataType(), CALLING_POSITION_STRING, INPTR, CLASS_NAME)
00460 
00461 //------------------------------------------------------------------------------------
00464 //------------------------------------------------------------------------------------
00465 #define _ML_TYPE_SWITCH_H(DTSWITCHES, SWITCH_CODE, CALLING_POSITION_STRING, INPTR) \
00466   _ML_TYPE_SWITCH_INTERN(DTSWITCHES, ML_EMPTY_PARAM, ML_EMPTY_PARAM, SWITCH_CODE, outSubImg->getDataType(), CALLING_POSITION_STRING, INPTR, CLASS_NAME)
00467 
00468 
00469 
00470 
00471 //---------------------------------------------------------------------------------------------------
00472 // 
00473 // 
00474 // 
00475 //               Macros to support calculateOutputSubImage implmentations with identical
00476 //               input and output data types.
00477 // 
00478 // 
00479 // 
00480 //---------------------------------------------------------------------------------------------------
00481 
00482 //---------------------------------------------------------------------------------------------------
00483 // Support for 0 inputs.
00484 //---------------------------------------------------------------------------------------------------
00486 #define _ML_SWITCH_CODE_0(OUTDTYPE, INDTYPE, CLASS_NAME) \
00487   {\
00488     TSubImage<OUTDTYPE> tOutSubImg(*outSubImg);\
00489     calculateOutputSubImage(&tOutSubImg,outIndex);\
00490   }
00491 
00497 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_DEFAULT_TYPES_CPP(CLASS_NAME)   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,   _ML_SWITCH_CODE_0, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_DEFAULT_TYPES_CPP",      SubImage *, CLASS_NAME);
00498 
00500 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_SCALAR_TYPES_CPP(CLASS_NAME)    _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,    _ML_SWITCH_CODE_0, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_SCALAR_TYPES_CPP",       SubImage *, CLASS_NAME);
00501 
00504 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES)   _ML_TYPE_SWITCH_C(DTSWITCHES,  _ML_SWITCH_CODE_0, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_WITH_CUSTOM_SWITCH_CPP", SubImage *, CLASS_NAME);
00505 
00507 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_DEFAULT_TYPES(CLASS_NAME)       _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,   _ML_SWITCH_CODE_0, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_DEFAULT_TYPES",          SubImage *);
00508 
00510 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_SCALAR_TYPES(CLASS_NAME)        _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,    _ML_SWITCH_CODE_0, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_SCALAR_TYPES",           SubImage *);
00511 
00513 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES)       _ML_TYPE_SWITCH_H(DTSWITCHES,  _ML_SWITCH_CODE_0, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_WITH_CUSTOM_SWITCH",     SubImage *);
00514 
00515 
00516 #ifdef ML_DEPRECATED
00517 
00518 
00519 
00520 
00521 #define CALC_OUTSUBIMAGE0_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_SCALAR_TYPES_CPP
00522 
00523 
00524 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_SCALAR_TYPES_CPP
00525 
00526 
00527 #define CALC_OUTSUBIMAGE0_CPP_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_WITH_CUSTOM_SWITCH_CPP
00528 
00529 
00530 #define CALC_OUTSUBIMAGE0 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_SCALAR_TYPES
00531 
00532 
00533 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_SCALAR_TYPES
00534 
00535 
00536 #define CALC_OUTSUBIMAGE0_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_WITH_CUSTOM_SWITCH
00537 
00538 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
00539 #pragma deprecated("CALC_OUTSUBIMAGE0_CPP", "CALC_OUTSUBIMAGE0_CPP_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0_CPP", "CALC_OUTSUBIMAGE0", "CALC_OUTSUBIMAGE0_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_0")
00540 #endif
00541 
00543 #endif // ML_DEPRECATED
00544 
00545 
00546 
00547 //---------------------------------------------------------------------------------------------------
00548 // Support for 1 input.
00549 //---------------------------------------------------------------------------------------------------
00551 #define _ML_SWITCH_CODE_1(OUTDTYPE, INDTYPE, CLASS_NAME) \
00552   { \
00553     TSubImage<OUTDTYPE> typedOutSubImg(*outSubImg);  \
00554     TSubImage<INDTYPE>  typedInSubImg1(inSubImgs[0]);\
00555     calculateOutputSubImage(&typedOutSubImg,outIndex,\
00556                     &typedInSubImg1);\
00557   }
00558 
00560 
00561 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DEFAULT_TYPES_CPP(CLASS_NAME)                   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_1, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DEFAULT_TYPES_CPP",      SubImage *inSubImgs, CLASS_NAME);
00562 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_SCALAR_TYPES_CPP(CLASS_NAME)                    _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_1, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_SCALAR_TYPES_CPP",       SubImage *inSubImgs, CLASS_NAME);
00563 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES)  _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE_1, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
00564 
00565 
00567 
00568 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DEFAULT_TYPES(CLASS_NAME)                       _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_1, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DEFAULT_TYPES",          SubImage *inSubImgs);
00569 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_SCALAR_TYPES(CLASS_NAME)                        _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_1, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_SCALAR_TYPES",           SubImage *inSubImgs);
00570 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES)      _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE_1, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
00571 
00572 
00573 #ifdef ML_DEPRECATED
00574 
00575 
00576 
00577 
00578 #define CALC_OUTSUBIMAGE1_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_SCALAR_TYPES_CPP
00579 
00580 
00581 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_SCALAR_TYPES_CPP
00582 
00583 
00584 #define CALC_OUTSUBIMAGE1_CPP_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_WITH_CUSTOM_SWITCH_CPP
00585 
00586 
00587 #define CALC_OUTSUBIMAGE1 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_SCALAR_TYPES
00588 
00589 
00590 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_SCALAR_TYPES
00591 
00592 
00593 #define CALC_OUTSUBIMAGE1_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_WITH_CUSTOM_SWITCH
00594 
00595 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
00596 #pragma deprecated("CALC_OUTSUBIMAGE1_CPP", "CALC_OUTSUBIMAGE1_CPP_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_CPP", "CALC_OUTSUBIMAGE1", "CALC_OUTSUBIMAGE1_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1")
00597 #endif
00598 
00600 #endif // ML_DEPRECATED
00601 
00602 
00603 //---------------------------------------------------------------------------------------------------
00604 // Support for 2 inputs.
00605 //---------------------------------------------------------------------------------------------------
00607 #define _ML_SWITCH_CODE_2(OUTDTYPE, INDTYPE, CLASS_NAME) \
00608   { \
00609     TSubImage<OUTDTYPE> typedOutSubImg(*outSubImg);\
00610     TSubImage<INDTYPE>  typedInSubImg0(inSubImgs[0]);\
00611     TSubImage<INDTYPE>  typedInSubImg1(inSubImgs[1]);\
00612     calculateOutputSubImage(&typedOutSubImg,outIndex,&typedInSubImg0,&typedInSubImg1);\
00613   }
00614 
00616 
00617 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DEFAULT_TYPES_CPP(CLASS_NAME)                  _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_2, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DEFAULT_TYPES_CPP",      SubImage *inSubImgs, CLASS_NAME);
00618 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_SCALAR_TYPES_CPP(CLASS_NAME)                   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_2, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_SCALAR_TYPES_CPP",       SubImage *inSubImgs, CLASS_NAME);
00619 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE_2, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
00620 
00621 
00623 
00624 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DEFAULT_TYPES(CLASS_NAME)                      _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_2, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DEFAULT_TYPES",          SubImage *inSubImgs);
00625 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_SCALAR_TYPES(CLASS_NAME)                       _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_2, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_SCALAR_TYPES",           SubImage *inSubImgs);
00626 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES)     _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE_2, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
00627 
00628 
00629 
00630 #ifdef ML_DEPRECATED
00631 
00632 
00633 
00634 
00635 #define CALC_OUTSUBIMAGE2_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_SCALAR_TYPES_CPP
00636 
00637 
00638 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_SCALAR_TYPES_CPP
00639 
00640 
00641 #define CALC_OUTSUBIMAGE2_CPP_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_WITH_CUSTOM_SWITCH_CPP
00642 
00643 
00644 #define CALC_OUTSUBIMAGE2 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_SCALAR_TYPES
00645 
00646 
00647 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_SCALAR_TYPES
00648 
00649 
00650 #define CALC_OUTSUBIMAGE2_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_WITH_CUSTOM_SWITCH
00651 
00652 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
00653 #pragma deprecated("CALC_OUTSUBIMAGE2_CPP", "CALC_OUTSUBIMAGE2_CPP_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_CPP", "CALC_OUTSUBIMAGE2", "CALC_OUTSUBIMAGE2_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2")
00654 #endif
00655 
00657 #endif // ML_DEPRECATED
00658 
00659 
00660 
00661 //---------------------------------------------------------------------------------------------------
00662 // Support for 3 inputs.
00663 //---------------------------------------------------------------------------------------------------
00665 #define _ML_SWITCH_CODE_3(OUTDTYPE, INDTYPE, CLASS_NAME) \
00666   { \
00667     TSubImage<OUTDTYPE> typedOutSubImg(*outSubImg);\
00668     TSubImage<INDTYPE>  typedInSubImg0(inSubImgs[0]);\
00669     TSubImage<INDTYPE>  typedInSubImg1(inSubImgs[1]);\
00670     TSubImage<INDTYPE>  typedInSubImg2(inSubImgs[2]);\
00671     calculateOutputSubImage(&typedOutSubImg,outIndex,\
00672                     &typedInSubImg0, &typedInSubImg1,\
00673                     &typedInSubImg2);\
00674   }
00675 
00677 
00678 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DEFAULT_TYPES_CPP(CLASS_NAME)                  _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_3, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DEFAULT_TYPES_CPP",      SubImage *inSubImgs, CLASS_NAME);
00679 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_SCALAR_TYPES_CPP(CLASS_NAME)                   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_3, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_SCALAR_TYPES_CPP",       SubImage *inSubImgs, CLASS_NAME);
00680 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE_3, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
00681 
00682 
00684 
00685 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DEFAULT_TYPES(CLASS_NAME)                      _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_3, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DEFAULT_TYPES",          SubImage *inSubImgs);
00686 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_SCALAR_TYPES(CLASS_NAME)                       _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_3, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_SCALAR_TYPES",           SubImage *inSubImgs);
00687 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES)     _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE_3, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
00688 
00689 
00690 
00691 #ifdef ML_DEPRECATED
00692 
00693 
00694 
00695 
00696 #define CALC_OUTSUBIMAGE3_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_SCALAR_TYPES_CPP
00697 
00698 
00699 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_SCALAR_TYPES_CPP
00700 
00701 
00702 #define CALC_OUTSUBIMAGE3_CPP_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_WITH_CUSTOM_SWITCH_CPP
00703 
00704 
00705 #define CALC_OUTSUBIMAGE3 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_SCALAR_TYPES
00706 
00707 
00708 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_SCALAR_TYPES
00709 
00710 
00711 #define CALC_OUTSUBIMAGE3_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_WITH_CUSTOM_SWITCH
00712 
00713 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
00714 #pragma deprecated("CALC_OUTSUBIMAGE3_CPP", "CALC_OUTSUBIMAGE3_CPP_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_CPP", "CALC_OUTSUBIMAGE3", "CALC_OUTSUBIMAGE3_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3")
00715 #endif
00716 
00718 #endif // ML_DEPRECATED
00719 
00720 
00721 //---------------------------------------------------------------------------------------------------
00722 // Support for 4 inputs.
00723 //---------------------------------------------------------------------------------------------------
00725 #define _ML_SWITCH_CODE_4(OUTDTYPE, INDTYPE, CLASS_NAME) \
00726   { \
00727     TSubImage<OUTDTYPE> typedOutSubImg(*outSubImg);\
00728     TSubImage<INDTYPE>  typedInSubImg0(inSubImgs[0]);\
00729     TSubImage<INDTYPE>  typedInSubImg1(inSubImgs[1]);\
00730     TSubImage<INDTYPE>  typedInSubImg2(inSubImgs[2]);\
00731     TSubImage<INDTYPE>  typedInSubImg3(inSubImgs[3]);\
00732     calculateOutputSubImage(&typedOutSubImg,outIndex,\
00733                     &typedInSubImg0, &typedInSubImg1,\
00734                     &typedInSubImg2, &typedInSubImg3);\
00735   }
00736 
00738 
00739 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DEFAULT_TYPES_CPP(CLASS_NAME)                  _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_4, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DEFAULT_TYPES_CPP",      SubImage *inSubImgs, CLASS_NAME);
00740 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_SCALAR_TYPES_CPP(CLASS_NAME)                   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_4, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_SCALAR_TYPES_CPP",       SubImage *inSubImgs, CLASS_NAME);
00741 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE_4, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
00742 
00743 
00745 
00746 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DEFAULT_TYPES(CLASS_NAME)                      _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_4, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DEFAULT_TYPES",          SubImage *inSubImgs);
00747 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_SCALAR_TYPES(CLASS_NAME)                       _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_4, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_SCALAR_TYPES",           SubImage *inSubImgs);
00748 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES)     _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE_4, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
00749 
00750 
00751 
00752 #ifdef ML_DEPRECATED
00753 
00754 
00755 
00756 
00757 #define CALC_OUTSUBIMAGE4_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_SCALAR_TYPES_CPP
00758 
00759 
00760 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_SCALAR_TYPES_CPP
00761 
00762 
00763 #define CALC_OUTSUBIMAGE4_CPP_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_WITH_CUSTOM_SWITCH_CPP
00764 
00765 
00766 #define CALC_OUTSUBIMAGE4 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_SCALAR_TYPES
00767 
00768 
00769 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_SCALAR_TYPES
00770 
00771 
00772 #define CALC_OUTSUBIMAGE4_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_WITH_CUSTOM_SWITCH
00773 
00774 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
00775 #pragma deprecated("CALC_OUTSUBIMAGE4_CPP", "CALC_OUTSUBIMAGE4_CPP_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_CPP", "CALC_OUTSUBIMAGE4", "CALC_OUTSUBIMAGE4_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4")
00776 #endif
00777 
00779 #endif // ML_DEPRECATED
00780 
00781 
00782 //---------------------------------------------------------------------------------------------------
00783 // Support for 5 inputs.
00784 //---------------------------------------------------------------------------------------------------
00786 #define _ML_SWITCH_CODE_5(OUTDTYPE, INDTYPE, CLASS_NAME) \
00787   { \
00788     TSubImage<OUTDTYPE> typedOutSubImg(*outSubImg);\
00789     TSubImage<INDTYPE>  typedInSubImg0(inSubImgs[0]);\
00790     TSubImage<INDTYPE>  typedInSubImg1(inSubImgs[1]);\
00791     TSubImage<INDTYPE>  typedInSubImg2(inSubImgs[2]);\
00792     TSubImage<INDTYPE>  typedInSubImg3(inSubImgs[3]);\
00793     TSubImage<INDTYPE>  typedInSubImg4(inSubImgs[4]);\
00794     calculateOutputSubImage(&typedOutSubImg,outIndex,\
00795                     &typedInSubImg0, &typedInSubImg1,\
00796                     &typedInSubImg2, &typedInSubImg3,\
00797                     &typedInSubImg4);\
00798   }
00799 
00801 
00802 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DEFAULT_TYPES_CPP(CLASS_NAME)                  _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_5, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DEFAULT_TYPES_CPP",      SubImage *inSubImgs, CLASS_NAME);
00803 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_SCALAR_TYPES_CPP(CLASS_NAME)                   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_5, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_SCALAR_TYPES_CPP",       SubImage *inSubImgs, CLASS_NAME);
00804 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE_5, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
00805 
00806 
00808 
00809 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DEFAULT_TYPES(CLASS_NAME)                      _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_5, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DEFAULT_TYPES",          SubImage *inSubImgs);
00810 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_SCALAR_TYPES(CLASS_NAME)                       _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_5, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_SCALAR_TYPES",           SubImage *inSubImgs);
00811 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES)     _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE_5, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
00812 
00813 
00814 
00815 #ifdef ML_DEPRECATED
00816 
00817 
00818 
00819 
00820 #define CALC_OUTSUBIMAGE5_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_SCALAR_TYPES_CPP
00821 
00822 
00823 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_SCALAR_TYPES_CPP
00824 
00825 
00826 #define CALC_OUTSUBIMAGE5_CPP_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_WITH_CUSTOM_SWITCH_CPP
00827 
00828 
00829 #define CALC_OUTSUBIMAGE5 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_SCALAR_TYPES
00830 
00831 
00832 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_SCALAR_TYPES
00833 
00834 
00835 #define CALC_OUTSUBIMAGE5_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_WITH_CUSTOM_SWITCH
00836 
00837 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
00838 #pragma deprecated("CALC_OUTSUBIMAGE5_CPP", "CALC_OUTSUBIMAGE5_CPP_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_CPP", "CALC_OUTSUBIMAGE5", "CALC_OUTSUBIMAGE5_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5")
00839 #endif
00840 
00842 #endif // ML_DEPRECATED
00843 
00844 
00845 //---------------------------------------------------------------------------------------------------
00846 // Support for 10 inputs.
00847 //---------------------------------------------------------------------------------------------------
00849 #define _ML_SWITCH_CODE_10(OUTDTYPE, INDTYPE, CLASS_NAME) \
00850   { \
00851     TSubImage<OUTDTYPE> typedOutSubImg(*outSubImg);\
00852     TSubImage<INDTYPE>  typedInSubImg0(inSubImgs[0]);\
00853     TSubImage<INDTYPE>  typedInSubImg1(inSubImgs[1]);\
00854     TSubImage<INDTYPE>  typedInSubImg2(inSubImgs[2]);\
00855     TSubImage<INDTYPE>  typedInSubImg3(inSubImgs[3]);\
00856     TSubImage<INDTYPE>  typedInSubImg4(inSubImgs[4]);\
00857     TSubImage<INDTYPE>  typedInSubImg5(inSubImgs[5]);\
00858     TSubImage<INDTYPE>  typedInSubImg6(inSubImgs[6]);\
00859     TSubImage<INDTYPE>  typedInSubImg7(inSubImgs[7]);\
00860     TSubImage<INDTYPE>  typedInSubImg8(inSubImgs[8]);\
00861     TSubImage<INDTYPE>  typedInSubImg9(inSubImgs[9]);\
00862     calculateOutputSubImage(&typedOutSubImg,outIndex,\
00863                     &typedInSubImg0, &typedInSubImg1, \
00864                     &typedInSubImg2, &typedInSubImg3, \
00865                     &typedInSubImg4, &typedInSubImg5, \
00866                     &typedInSubImg6, &typedInSubImg7, \
00867                     &typedInSubImg8, &typedInSubImg9);\
00868   }
00869 
00871 
00872 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DEFAULT_TYPES_CPP(CLASS_NAME)                  _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_10, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DEFAULT_TYPES_CPP",      SubImage *inSubImgs, CLASS_NAME);
00873 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_SCALAR_TYPES_CPP(CLASS_NAME)                   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_10, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_SCALAR_TYPES_CPP",       SubImage *inSubImgs, CLASS_NAME);
00874 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE_10, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
00875 
00876 
00878 
00879 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DEFAULT_TYPES(CLASS_NAME)                      _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_10, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DEFAULT_TYPES",          SubImage *inSubImgs);
00880 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_SCALAR_TYPES(CLASS_NAME)                       _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_10, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_SCALAR_TYPES",           SubImage *inSubImgs);
00881 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES)     _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE_10, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
00882 
00883 
00884 
00885 #ifdef ML_DEPRECATED
00886 
00887 
00888 
00889 
00890 #define CALC_OUTSUBIMAGE10_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_SCALAR_TYPES_CPP
00891 
00892 
00893 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_SCALAR_TYPES_CPP
00894 
00895 
00896 #define CALC_OUTSUBIMAGE10_CPP_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_WITH_CUSTOM_SWITCH_CPP
00897 
00898 
00899 #define CALC_OUTSUBIMAGE10 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_SCALAR_TYPES
00900 
00901 
00902 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10 ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_SCALAR_TYPES
00903 
00904 
00905 #define CALC_OUTSUBIMAGE10_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_WITH_CUSTOM_SWITCH
00906 
00907 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
00908 #pragma deprecated("CALC_OUTSUBIMAGE10_CPP", "CALC_OUTSUBIMAGE10_CPP_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_CPP", "CALC_OUTSUBIMAGE10", "CALC_OUTSUBIMAGE10_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10")
00909 #endif
00910 
00912 #endif // ML_DEPRECATED
00913 
00914 //---------------------------------------------------------------------------------------------------
00916 
00917 
00932 #define _ML_SWITCH_CODE_N(OUTDTYPE, INDTYPE, CLASS_NAME)                 \
00933  {                                                                       \
00934    /* Get number of inputs. */                                           \
00935    const MLssize_t numIns = static_cast<MLssize_t>(this->getInputNum()); \
00936                                                                          \
00937    /* Create typed version of output buffer. */                          \
00938    TSubImage<OUTDTYPE> outSubImgT(*outSubImg);                           \
00939                                                                          \
00940    /* Implement special cases with automatic object creation, */         \
00941    /* because it is much faster.                              */         \
00942    if (numIns < 3){                                                      \
00943      switch(numIns){                                                     \
00944        /***** Optimization for 1 input. *****/                           \
00945        case 0:{                                                          \
00946          /* Calculate output subimage. */                                \
00947          calculateOutputSubImage(&outSubImgT, outIndex,                  \
00948                                  (TSubImage<INDTYPE>**)NULL);            \
00949        }                                                                 \
00950        return;                                                           \
00951                                                                          \
00952        /***** Optimization for 1 input. *****/                           \
00953        case 1:{                                                          \
00954          /* Create typed version of input buffer.        */              \
00955          /* and create a pointer array with one element. */              \
00956          TSubImage<INDTYPE> inSubImgT(inSubImgs[0]);                     \
00957          TSubImage<INDTYPE> *inArr = &inSubImgT;                         \
00958                                                                          \
00959          /* Calculate output subimage. */                                \
00960          calculateOutputSubImage(&outSubImgT, outIndex, &inArr);         \
00961        }                                                                 \
00962        return;                                                           \
00963                                                                          \
00964        /***** Optimization for 2 inputs. *****/                          \
00965        case 2:{                                                          \
00966          TSubImage<INDTYPE> inSubImg0T(inSubImgs[0]);                    \
00967          TSubImage<INDTYPE> inSubImg1T(inSubImgs[1]);                    \
00968          TSubImage<INDTYPE> *inArr[2];                                   \
00969          inArr[0] = &inSubImg0T;                                         \
00970          inArr[1] = &inSubImg1T;                                         \
00971          calculateOutputSubImage(&outSubImgT, outIndex, inArr);          \
00972        }                                                                 \
00973        return;                                                           \
00974                                                                          \
00975        /***** Should be impossible to reach here *****/                  \
00976        default:{                                                         \
00977          ML_PRINT_FATAL_ERROR("_ML_SWITCH_CODE_N",                       \
00978                               ML_PROGRAMMING_ERROR,                      \
00979                               "Invalid case switch detected, "           \
00980                               "ignoring case and not processing page");  \
00981        }                                                                 \
00982      }                                                                   \
00983    } /* if (numIns < 3) */                                               \
00984    else{                                                                 \
00985      /***** Any other number of inputs. *****/                           \
00986      /* Create an array for all pointers to input subimages. */          \
00987      TSubImage<INDTYPE> **inArr = NULL;                                  \
00988      ML_CHECK_NEW(inArr, TSubImage<INDTYPE>*[numIns]);                   \
00989      bool okay = inArr != NULL;                                          \
00990                                                                          \
00991      /* Count number of created subimages. */                            \
00992      MLssize_t createdTSubs=0;                                           \
00993                                                                          \
00994      /* For each untyped input subimage create a typed one and */        \
00995      /* store its pointer into the array.                      */        \
00996      for (MLssize_t c=0; okay && (c < numIns); c++){                     \
00997        ML_CHECK_NEW(inArr[c], TSubImage<INDTYPE>(inSubImgs[c]));         \
00998        if (inArr[c]){ createdTSubs++; } else { okay = false; }           \
00999      }                                                                   \
01000                                                                          \
01001      /* Call the correct template version of calculateOutputSubImage. */ \
01002      if (okay){                                                          \
01003        calculateOutputSubImage(&outSubImgT, outIndex, inArr);            \
01004      }                                                                   \
01005      else{                                                               \
01006        ML_PRINT_FATAL_ERROR(#CLASS_NAME, ML_NO_MEMORY,                   \
01007                             "Not calculating page.");                    \
01008      }                                                                   \
01009                                                                          \
01010      /* Clean up created subimages and array of subimage pointers. */    \
01011      if (inArr){                                                         \
01012        for (MLssize_t d=0; d < createdTSubs; d++){                       \
01013          ML_DELETE(inArr[d]);                                            \
01014        }                                                                 \
01015        ML_DELETE_ARRAY(inArr);                                           \
01016      }                                                                   \
01017    } /* else (numIns < 3) */                                             \
01018  }
01019 
01020 
01027 
01028 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DEFAULT_TYPES_CPP(CLASS_NAME)                  _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_N, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DEFAULT_TYPES_CPP",      SubImage *inSubImgs, CLASS_NAME);
01029 
01031 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_SCALAR_TYPES_CPP(CLASS_NAME)                   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_N, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_SCALAR_TYPES_CPP",       SubImage *inSubImgs, CLASS_NAME);
01032 
01035 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE_N, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
01036 
01037 
01039 
01040 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DEFAULT_TYPES(CLASS_NAME)                      _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE_N, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DEFAULT_TYPES",          SubImage *inSubImgs);
01041 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_SCALAR_TYPES(CLASS_NAME)                       _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE_N, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_SCALAR_TYPES",           SubImage *inSubImgs);
01042 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES)     _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE_N, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
01043 
01044 
01045 
01046 #ifdef ML_DEPRECATED
01047 
01048 
01049 
01050 
01051 #define CALC_OUTSUBIMAGEN_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_SCALAR_TYPES_CPP
01052 
01053 
01054 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_SCALAR_TYPES_CPP
01055 
01056 
01057 #define CALC_OUTSUBIMAGEN_CPP_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_WITH_CUSTOM_SWITCH_CPP
01058 
01059 
01060 #define CALC_OUTSUBIMAGEN ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_SCALAR_TYPES
01061 
01062 
01063 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_SCALAR_TYPES
01064 
01065 
01066 #define CALC_OUTSUBIMAGEN_ANY ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_WITH_CUSTOM_SWITCH
01067 
01070 #define calcOutSubImageT calculateOutputSubImage
01071 
01072 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
01073 #pragma deprecated("CALC_OUTSUBIMAGEN_CPP", "CALC_OUTSUBIMAGEN_CPP_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_CPP", "CALC_OUTSUBIMAGEN", "CALC_OUTSUBIMAGEN_ANY", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N")
01074 #endif
01075 
01077 #endif // ML_DEPRECATED
01078 
01079 
01080 
01081 
01082 //---------------------------------------------------------------------------------------------------
01083 // 
01084 // 
01085 // 
01086 //               Macros to support different input and output data types.
01087 //               Note that these macros produce significantly more code.
01088 // 
01089 // 
01090 // 
01091 //---------------------------------------------------------------------------------------------------
01092 
01093 //---------------------------------------------------------------------------------------------------
01100 
01102 #define _ML_SWITCH_CODE1_DD_L2(OUTDTYPE, INDTYPE, CLASS_NAME) \
01103   { TSubImage<INDTYPE> inSIT(inSubImgs[0]); calculateOutputSubImage(&outSI, outIndex, &inSIT); }
01104  
01106 #define _ML_SWITCH_CODE1_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01107   { \
01108     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01109     ML_IMPLEMENT_DIFFERENT_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01110                                                 _ML_SWITCH_CODE1_DD_L2, \
01111                                                 inSubImgs[0].getDataType(), \
01112                                                 "_ML_SWITCH_CODE1_DD", \
01113                                                 INDTYPE); \
01114   }
01115 
01117 #define _ML_SWITCH_CODE1S_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01118   { \
01119     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01120     ML_IMPLEMENT_DIFFERENT_SCALAR_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01121                                                         _ML_SWITCH_CODE1_DD_L2, \
01122                                                         inSubImgs[0].getDataType(), \
01123                                                         "_ML_SWITCH_CODE1_DD", \
01124                                                         INDTYPE); \
01125   }
01126 
01128 
01129 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP(CLASS_NAME) \
01130   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE1_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP",            SubImage *inSubImgs, CLASS_NAME);
01131 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP(CLASS_NAME) \
01132   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE1S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP",             SubImage *inSubImgs, CLASS_NAME);
01133 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) \
01134   _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE1_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
01135 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_DEFAULT_INOUT_DATATYPES(CLASS_NAME) \
01136   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE1_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_DEFAULT_INOUT_DATATYPES",                SubImage *inSubImgs);
01137 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_SCALAR_INOUT_DATATYPES(CLASS_NAME) \
01138   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE1S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_SCALAR_INOUT_DATATYPES",                 SubImage *inSubImgs);
01139 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES) \
01140   _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE1_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
01141 
01142 
01143 
01144 #ifdef ML_DEPRECATED
01145 
01146 
01147 
01148 
01149 #define CALC_OUTSUBIMAGE1_CPP_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01150 
01151 
01152 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_INOUT_DATATYPES_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01153 
01154 
01155 #define CALC_OUTSUBIMAGE1_CPP_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP
01156 
01157 
01158 #define CALC_OUTSUBIMAGE1_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_SCALAR_INOUT_DATATYPES
01159 
01160 
01161 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_INOUT_DATATYPES ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_SCALAR_INOUT_DATATYPES
01162 
01163 
01164 #define CALC_OUTSUBIMAGE1_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH
01165 
01166 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
01167 #pragma deprecated("CALC_OUTSUBIMAGE1_CPP_DD", "CALC_OUTSUBIMAGE1_CPP_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_INOUT_DATATYPES_CPP", "CALC_OUTSUBIMAGE1_DD", "CALC_OUTSUBIMAGE1_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_1_DIFFERENT_INOUT_DATATYPES")
01168 #endif
01169 
01171 #endif // ML_DEPRECATED
01172 
01173 
01174 
01175 //---------------------------------------------------------------------------------------------------
01182 
01184 #define _ML_SWITCH_CODE2_DD_L2(OUTDTYPE, INDTYPE, CLASS_NAME) \
01185   { TSubImage<INDTYPE> it0(inSubImgs[0]), it1(inSubImgs[1]); calculateOutputSubImage(&outSI, outIndex, &it0, &it1); }
01186  
01188 #define _ML_SWITCH_CODE2_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01189   { \
01190     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01191     ML_IMPLEMENT_DIFFERENT_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01192                                                  _ML_SWITCH_CODE2_DD_L2, \
01193                                                 inSubImgs[0].getDataType(), \
01194                                                 "_ML_SWITCH_CODE2_DD", \
01195                                                 INDTYPE); \
01196   }
01197 
01199 #define _ML_SWITCH_CODE2S_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01200   { \
01201     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01202     ML_IMPLEMENT_DIFFERENT_SCALAR_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01203                                                         _ML_SWITCH_CODE2_DD_L2, \
01204                                                         inSubImgs[0].getDataType(), \
01205                                                         "_ML_SWITCH_CODE2_DD", \
01206                                                         INDTYPE); \
01207   }
01208 
01210 
01211 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP(CLASS_NAME) \
01212   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE2_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP",                    SubImage *inSubImgs, CLASS_NAME);
01213 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP(CLASS_NAME) \
01214   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE2S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP",             SubImage *inSubImgs, CLASS_NAME);
01215 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) \
01216   _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE2_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
01217 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_DEFAULT_INOUT_DATATYPES(CLASS_NAME) \
01218   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE2_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_DEFAULT_INOUT_DATATYPES",                        SubImage *inSubImgs);
01219 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_SCALAR_INOUT_DATATYPES(CLASS_NAME) \
01220   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE2S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_SCALAR_INOUT_DATATYPES",                 SubImage *inSubImgs);
01221 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES) \
01222   _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE2_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
01223 
01224 
01225 
01226 #ifdef ML_DEPRECATED
01227 
01228 
01229 
01230 
01231 #define CALC_OUTSUBIMAGE2_CPP_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01232 
01233 
01234 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_INOUT_DATATYPES_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01235 
01236 
01237 #define CALC_OUTSUBIMAGE2_CPP_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP
01238 
01239 
01240 #define CALC_OUTSUBIMAGE2_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_SCALAR_INOUT_DATATYPES
01241 
01242 
01243 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_INOUT_DATATYPES ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_SCALAR_INOUT_DATATYPES
01244 
01245 
01246 #define CALC_OUTSUBIMAGE2_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH
01247 
01248 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
01249 #pragma deprecated("CALC_OUTSUBIMAGE2_CPP_DD", "CALC_OUTSUBIMAGE2_CPP_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_INOUT_DATATYPES_CPP", "CALC_OUTSUBIMAGE2_DD", "CALC_OUTSUBIMAGE2_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_2_DIFFERENT_INOUT_DATATYPES")
01250 #endif
01251 
01253 #endif // ML_DEPRECATED
01254 
01255 
01256 //---------------------------------------------------------------------------------------------------
01265 
01267 #define _ML_SWITCH_CODE3_DD_L2(OUTDTYPE, INDTYPE, CLASS_NAME) \
01268   { TSubImage<INDTYPE> it0(inSubImgs[0]), it1(inSubImgs[1]), it2(inSubImgs[2]); \
01269     calculateOutputSubImage(&outSI, outIndex, &it0, &it1, &it2); }
01270  
01272 #define _ML_SWITCH_CODE3_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01273   { \
01274     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01275     ML_IMPLEMENT_DIFFERENT_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01276                                                  _ML_SWITCH_CODE3_DD_L2, \
01277                                                 inSubImgs[0].getDataType(), \
01278                                                 "_ML_SWITCH_CODE3_DD", \
01279                                                 INDTYPE); \
01280   }
01281 
01283 #define _ML_SWITCH_CODE3S_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01284   { \
01285     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01286     ML_IMPLEMENT_DIFFERENT_SCALAR_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01287                                                          _ML_SWITCH_CODE3_DD_L2, \
01288                                                         inSubImgs[0].getDataType(), \
01289                                                         "_ML_SWITCH_CODE3_DD", \
01290                                                         INDTYPE); \
01291   }
01292 
01294 
01295 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP(CLASS_NAME) \
01296   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE3_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP",            SubImage *inSubImgs, CLASS_NAME);
01297 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP(CLASS_NAME) \
01298   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE3S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP",             SubImage *inSubImgs, CLASS_NAME);
01299 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) \
01300   _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE3_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
01301 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_DEFAULT_INOUT_DATATYPES(CLASS_NAME) \
01302   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE3_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_DEFAULT_INOUT_DATATYPES",                SubImage *inSubImgs);
01303 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_SCALAR_INOUT_DATATYPES(CLASS_NAME) \
01304   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE3S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_SCALAR_INOUT_DATATYPES",                 SubImage *inSubImgs);
01305 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES) \
01306   _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE3_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
01307 
01308 
01309 
01310 #ifdef ML_DEPRECATED
01311 
01312 
01313 
01314 
01315 #define CALC_OUTSUBIMAGE3_CPP_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01316 
01317 
01318 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_INOUT_DATATYPES_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01319 
01320 
01321 #define CALC_OUTSUBIMAGE3_CPP_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP
01322 
01323 
01324 #define CALC_OUTSUBIMAGE3_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_SCALAR_INOUT_DATATYPES
01325 
01326 
01327 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_INOUT_DATATYPES ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_SCALAR_INOUT_DATATYPES
01328 
01329 
01330 #define CALC_OUTSUBIMAGE3_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH
01331 
01332 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
01333 #pragma deprecated("CALC_OUTSUBIMAGE3_CPP_DD", "CALC_OUTSUBIMAGE3_CPP_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_INOUT_DATATYPES_CPP", "CALC_OUTSUBIMAGE3_DD", "CALC_OUTSUBIMAGE3_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_3_DIFFERENT_INOUT_DATATYPES")
01334 #endif
01335 
01337 #endif // ML_DEPRECATED
01338 
01339 
01340 
01341 //---------------------------------------------------------------------------------------------------
01350 
01352 #define _ML_SWITCH_CODE4_DD_L2(OUTDTYPE, INDTYPE, CLASS_NAME) \
01353   { TSubImage<INDTYPE> it0(inSubImgs[0]), it1(inSubImgs[1]), it2(inSubImgs[2]), it3(inSubImgs[3]); \
01354     calculateOutputSubImage(&outSI, outIndex, &it0, &it1, &it2, &it3); }
01355  
01357 #define _ML_SWITCH_CODE4_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01358   { \
01359     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01360     ML_IMPLEMENT_DIFFERENT_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01361                                                  _ML_SWITCH_CODE4_DD_L2, \
01362                                                  inSubImgs[0].getDataType(), \
01363                                                  "_ML_SWITCH_CODE4_DD", \
01364                                                  INDTYPE); \
01365   }
01366 
01368 #define _ML_SWITCH_CODE4S_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01369   { \
01370     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01371     ML_IMPLEMENT_DIFFERENT_SCALAR_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01372                                                          _ML_SWITCH_CODE4_DD_L2, \
01373                                                          inSubImgs[0].getDataType(), \
01374                                                          "_ML_SWITCH_CODE4_DD", \
01375                                                          INDTYPE); \
01376   }
01377 
01379 
01380 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP(CLASS_NAME) \
01381   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE4_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP",            SubImage *inSubImgs, CLASS_NAME);
01382 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP(CLASS_NAME) \
01383   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE4S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP",             SubImage *inSubImgs, CLASS_NAME);
01384 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) \
01385   _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE4_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
01386 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_DEFAULT_INOUT_DATATYPES(CLASS_NAME) \
01387   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE4_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_DEFAULT_INOUT_DATATYPES",                SubImage *inSubImgs);
01388 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_SCALAR_INOUT_DATATYPES(CLASS_NAME) \
01389   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE4S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_SCALAR_INOUT_DATATYPES",                 SubImage *inSubImgs);
01390 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES) \
01391   _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE4_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
01392 
01393 
01394 
01395 #ifdef ML_DEPRECATED
01396 
01397 
01398 
01399 
01400 #define CALC_OUTSUBIMAGE4_CPP_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01401 
01402 
01403 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_INOUT_DATATYPES_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01404 
01405 
01406 #define CALC_OUTSUBIMAGE4_CPP_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP
01407 
01408 
01409 #define CALC_OUTSUBIMAGE4_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_SCALAR_INOUT_DATATYPES
01410 
01411 
01412 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_INOUT_DATATYPES ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_SCALAR_INOUT_DATATYPES
01413 
01414 
01415 #define CALC_OUTSUBIMAGE4_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH
01416 
01417 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
01418 #pragma deprecated("CALC_OUTSUBIMAGE4_CPP_DD", "CALC_OUTSUBIMAGE4_CPP_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_INOUT_DATATYPES_CPP", "CALC_OUTSUBIMAGE4_DD", "CALC_OUTSUBIMAGE4_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_4_DIFFERENT_INOUT_DATATYPES")
01419 #endif
01420 
01422 #endif // ML_DEPRECATED
01423 
01424 
01425 
01426 //---------------------------------------------------------------------------------------------------
01436 
01438 #define _ML_SWITCH_CODE5_DD_L2(OUTDTYPE, INDTYPE, CLASS_NAME) \
01439   { TSubImage<INDTYPE> it0(inSubImgs[0]), it1(inSubImgs[1]), it2(inSubImgs[2]), it3(inSubImgs[3]), it4(inSubImgs[4]); \
01440     calculateOutputSubImage(&outSI, outIndex, &it0, &it1, &it2, &it3, &it4); }
01441  
01443 #define _ML_SWITCH_CODE5_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01444   { \
01445     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01446     ML_IMPLEMENT_DIFFERENT_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01447                                                  _ML_SWITCH_CODE5_DD_L2, \
01448                                                  inSubImgs[0].getDataType(), \
01449                                                  "_ML_SWITCH_CODE5_DD", \
01450                                                  INDTYPE); \
01451   }
01452 
01454 #define _ML_SWITCH_CODE5S_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01455   { \
01456     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01457     ML_IMPLEMENT_DIFFERENT_SCALAR_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01458                                                          _ML_SWITCH_CODE5_DD_L2, \
01459                                                          inSubImgs[0].getDataType(), \
01460                                                          "_ML_SWITCH_CODE5_DD", \
01461                                                          INDTYPE); \
01462   }
01463 
01465 
01466 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP(CLASS_NAME) \
01467   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE5_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP",            SubImage *inSubImgs, CLASS_NAME);
01468 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP(CLASS_NAME) \
01469   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE5S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP",             SubImage *inSubImgs, CLASS_NAME);
01470 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) \
01471   _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE5_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
01472 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_DEFAULT_INOUT_DATATYPES(CLASS_NAME) \
01473   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE5_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_DEFAULT_INOUT_DATATYPES",                SubImage *inSubImgs);
01474 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_SCALAR_INOUT_DATATYPES(CLASS_NAME) \
01475   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE5S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_SCALAR_INOUT_DATATYPES",                 SubImage *inSubImgs);
01476 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES) \
01477   _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE5_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
01478 
01479 
01480 
01481 #ifdef ML_DEPRECATED
01482 
01483 
01484 
01485 
01486 #define CALC_OUTSUBIMAGE5_CPP_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01487 
01488 
01489 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_INOUT_DATATYPES_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01490 
01491 
01492 #define CALC_OUTSUBIMAGE5_CPP_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP
01493 
01494 
01495 #define CALC_OUTSUBIMAGE5_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_SCALAR_INOUT_DATATYPES
01496 
01497 
01498 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_INOUT_DATATYPES ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_SCALAR_INOUT_DATATYPES
01499 
01500 
01501 #define CALC_OUTSUBIMAGE5_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH
01502 
01503 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
01504 #pragma deprecated("CALC_OUTSUBIMAGE5_CPP_DD", "CALC_OUTSUBIMAGE5_CPP_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_INOUT_DATATYPES_CPP", "CALC_OUTSUBIMAGE5_DD", "CALC_OUTSUBIMAGE5_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_5_DIFFERENT_INOUT_DATATYPES")
01505 #endif
01506 
01508 #endif // ML_DEPRECATED
01509 
01510 
01511 
01512 //---------------------------------------------------------------------------------------------------
01524 
01526 #define _ML_SWITCH_CODE10_DD_L2(OUTDTYPE, INDTYPE, CLASS_NAME) \
01527   { TSubImage<INDTYPE> it0(inSubImgs[0]), it1(inSubImgs[1]), it2(inSubImgs[2]), it3(inSubImgs[3]), it4(inSubImgs[4]); \
01528     TSubImage<INDTYPE> it5(inSubImgs[5]), it6(inSubImgs[6]), it7(inSubImgs[7]), it8(inSubImgs[8]), it9(inSubImgs[9]); \
01529     calculateOutputSubImage(&outSI, outIndex, &it0, &it1, &it2, &it3, &it4, &it5, &it6, &it7, &it8, &it9); }
01530  
01532 #define _ML_SWITCH_CODE10_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01533   { \
01534     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01535     ML_IMPLEMENT_DIFFERENT_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01536                                                  _ML_SWITCH_CODE10_DD_L2, \
01537                                                  inSubImgs[0].getDataType(), \
01538                                                  "_ML_SWITCH_CODE10_DD", \
01539                                                  INDTYPE); \
01540   }
01541 
01543 #define _ML_SWITCH_CODE10S_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01544   { \
01545     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01546     ML_IMPLEMENT_DIFFERENT_SCALAR_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01547                                                          _ML_SWITCH_CODE10_DD_L2, \
01548                                                          inSubImgs[0].getDataType(), \
01549                                                          "_ML_SWITCH_CODE10_DD", \
01550                                                          INDTYPE); \
01551   }
01552 
01554 
01555 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP(CLASS_NAME) \
01556   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE10_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP",            SubImage *inSubImgs, CLASS_NAME);
01557 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP(CLASS_NAME) \
01558   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE10S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP",             SubImage *inSubImgs, CLASS_NAME);
01559 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) \
01560   _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODE10_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
01561 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_DEFAULT_INOUT_DATATYPES(CLASS_NAME) \
01562   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODE10_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_DEFAULT_INOUT_DATATYPES",                SubImage *inSubImgs);
01563 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_SCALAR_INOUT_DATATYPES(CLASS_NAME) \
01564   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODE10S_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_SCALAR_INOUT_DATATYPES",                 SubImage *inSubImgs);
01565 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES) \
01566   _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODE10_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
01567 
01568 
01569 
01570 #ifdef ML_DEPRECATED
01571 
01572 
01573 
01574 
01575 #define CALC_OUTSUBIMAGE10_CPP_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01576 
01577 
01578 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_INOUT_DATATYPES_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01579 
01580 
01581 #define CALC_OUTSUBIMAGE10_CPP_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP
01582 
01583 
01584 #define CALC_OUTSUBIMAGE10_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_SCALAR_INOUT_DATATYPES
01585 
01586 
01587 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_INOUT_DATATYPES ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_SCALAR_INOUT_DATATYPES
01588 
01589 
01590 #define CALC_OUTSUBIMAGE10_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH
01591 
01592 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
01593 #pragma deprecated("CALC_OUTSUBIMAGE10_CPP_DD", "CALC_OUTSUBIMAGE10_CPP_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_INOUT_DATATYPES_CPP", "CALC_OUTSUBIMAGE10_DD", "CALC_OUTSUBIMAGE10_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_10_DIFFERENT_INOUT_DATATYPES")
01594 #endif
01595 
01597 #endif // ML_DEPRECATED
01598 
01599 
01600 
01601 //---------------------------------------------------------------------------------------------------
01613 
01615 #define _ML_SWITCH_CODEN_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01616   { \
01617     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01618     ML_IMPLEMENT_DIFFERENT_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01619                                                  _ML_SWITCH_CODE_N, \
01620                                                 inSubImgs[0].getDataType(), \
01621                                                 "_ML_SWITCH_CODEN_DD", \
01622                                                 INDTYPE); \
01623   }
01624 
01626 #define _ML_SWITCH_CODENS_DD(OUTDTYPE, INDTYPE, CLASS_NAME) \
01627   { \
01628     TSubImage<OUTDTYPE> outSI(*outSubImg);  \
01629     ML_IMPLEMENT_DIFFERENT_SCALAR_INOUT_DATATYPES_CASES(CLASS_NAME,  \
01630                                                          _ML_SWITCH_CODE_N, \
01631                                                         inSubImgs[0].getDataType(), \
01632                                                         "_ML_SWITCH_CODEN_DD", \
01633                                                         INDTYPE); \
01634   }
01635 
01637 
01638 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP(CLASS_NAME) \
01639   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODEN_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_DEFAULT_INOUT_DATATYPES_CPP",            SubImage *inSubImgs, CLASS_NAME);
01640 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP(CLASS_NAME) \
01641   _ML_TYPE_SWITCH_C(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODENS_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP",             SubImage *inSubImgs, CLASS_NAME);
01642 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP(CLASS_NAME, DTSWITCHES) \
01643   _ML_TYPE_SWITCH_C(DTSWITCHES,                  _ML_SWITCH_CODEN_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP", SubImage *inSubImgs, CLASS_NAME);
01644 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_DEFAULT_INOUT_DATATYPES(CLASS_NAME) \
01645   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_DEFAULT_CASES,  _ML_SWITCH_CODEN_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_DEFAULT_INOUT_DATATYPES",                SubImage *inSubImgs);
01646 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_SCALAR_INOUT_DATATYPES(CLASS_NAME) \
01647   _ML_TYPE_SWITCH_H(ML_IMPLEMENT_SCALAR_CASES,   _ML_SWITCH_CODENS_DD, "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_SCALAR_INOUT_DATATYPES",                 SubImage *inSubImgs);
01648 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH(CLASS_NAME, DTSWITCHES) \
01649   _ML_TYPE_SWITCH_H(DTSWITCHES,                  _ML_SWITCH_CODEN_DD,  "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH",     SubImage *inSubImgs);
01650 
01651 
01652 
01653 #ifdef ML_DEPRECATED
01654 
01655 
01656 
01657 
01658 #define CALC_OUTSUBIMAGEN_CPP_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01659 
01660 
01661 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_INOUT_DATATYPES_CPP ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_SCALAR_INOUT_DATATYPES_CPP
01662 
01663 
01664 #define CALC_OUTSUBIMAGEN_CPP_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH_CPP
01665 
01666 
01667 #define CALC_OUTSUBIMAGEN_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_SCALAR_INOUT_DATATYPES
01668 
01669 
01670 #define ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_INOUT_DATATYPES ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_SCALAR_INOUT_DATATYPES
01671 
01672 
01673 #define CALC_OUTSUBIMAGEN_ANY_DD ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_INOUT_DATATYPES_WITH_CUSTOM_SWITCH
01674 
01675 #if defined(WIN32) && defined(ML_WARN_DEPRECATED)
01676 #pragma deprecated("CALC_OUTSUBIMAGEN_CPP_DD", "CALC_OUTSUBIMAGEN_CPP_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_INOUT_DATATYPES_CPP", "CALC_OUTSUBIMAGEN_DD", "CALC_OUTSUBIMAGEN_ANY_DD", "ML_CALCULATEOUTPUTSUBIMAGE_NUM_INPUTS_N_DIFFERENT_INOUT_DATATYPES")
01677 #endif
01678 
01680 #endif // ML_DEPRECATED
01681 
01682 
01683 
01684 #endif //of __mlModuleMacros_H
01685 
01686