]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Interface/BaseProcessObjects.h
...
[cpPlugins.git] / lib / cpPlugins / Interface / BaseProcessObjects.h
index 04c29822b1b7afb3660d53ed0f00170477adaaca..a120b8446398233ca6a964161fb9ce0c2cc7b79d 100644 (file)
 #include <cpPlugins/Interface/ProcessObject.h>
 
 // -------------------------------------------------------------------------
-#define cpPlugins_Interface_Define_ProcessObject( O, S )        \
-  class cpPlugins_Interface_EXPORT O                            \
-    : public S                                                  \
-  {                                                             \
-  public:                                                       \
-    typedef O                               Self;               \
-    typedef S                               Superclass;         \
-    typedef itk::SmartPointer< Self >       Pointer;            \
-    typedef itk::SmartPointer< const Self > ConstPointer;       \
-  public:                                                       \
-    itkTypeMacro( O, S );                                       \
-  protected:                                                    \
-    O( );                                                       \
-    virtual ~O( );                                              \
-  private:                                                      \
-    O( const Self& );                                           \
-    Self& operator=( const Self& );                             \
+#define cpPlugins_Define_ProcessObject( O, S )                          \
+  class cpPlugins_Interface_EXPORT O                                    \
+    : public S                                                          \
+  {                                                                     \
+  public:                                                               \
+    typedef O                               Self;                       \
+    typedef S                               Superclass;                 \
+    typedef itk::SmartPointer< Self >       Pointer;                    \
+    typedef itk::SmartPointer< const Self > ConstPointer;               \
+  public:                                                               \
+    itkTypeMacro( O, S );                                               \
+    cpPlugins_Id_Macro( cpPlugins::Interface::O, ProcessObject );       \
+  protected:                                                            \
+    O( );                                                               \
+    virtual ~O( );                                                      \
+  private:                                                              \
+    O( const Self& );                                                   \
+    Self& operator=( const Self& );                                     \
   }
 
 // -------------------------------------------------------------------------
-#define cpPlugins_Interface_Code_ProcessObject( O )     \
-  cpPlugins::Interface::O::O( ) : Superclass( )         \
-  {                                                     \
-    this->m_ClassName = "cpPlugins::Interface::#O";     \
-    this->m_ClassCategory = "#O";                       \
-  }                                                     \
+#define cpPlugins_Code_ProcessObject( O )               \
+  cpPlugins::Interface::O::O( ) : Superclass( ) { }     \
   cpPlugins::Interface::O::~O( ) { }
 
 // -------------------------------------------------------------------------
-#define cpPlugins_Image_Input_Demangle( T, D, I, O, r, f )      \
-  if( ( O = I->GetITKImage< itk::Image< T, D > >( ) ) != NULL ) \
-    r = this->f< itk::Image< T, D > >( O )
-
-// -------------------------------------------------------------------------
-#define cpPlugins_ImageArray_Input_Demangle( A, T, DP, DI, I, O, r, f ) \
-  if(                                                                   \
-    ( O = I->GetITKImage< itk::Image< A< T, DP >, DI > >( ) ) != NULL   \
-    )                                                                   \
-    r = this->f< itk::Image< A< T, DP >, DI > >( O )
-
-// -------------------------------------------------------------------------
-#define cpPlugins_Image_Input_Demangle_Dimension_AllScalarTypes( D, I, O, r, f ) \
-  cpPlugins_Image_Input_Demangle( char, D, I, O, r, f );                \
-  else cpPlugins_Image_Input_Demangle( short, D, I, O, r, f );          \
-  else cpPlugins_Image_Input_Demangle( int, D, I, O, r, f );            \
-  else cpPlugins_Image_Input_Demangle( long, D, I, O, r, f );           \
-  else cpPlugins_Image_Input_Demangle( float, D, I, O, r, f );          \
-  else cpPlugins_Image_Input_Demangle( double, D, I, O, r, f );         \
-  else cpPlugins_Image_Input_Demangle( unsigned char, D, I, O, r, f );  \
-  else cpPlugins_Image_Input_Demangle( unsigned short, D, I, O, r, f ); \
-  else cpPlugins_Image_Input_Demangle( unsigned int, D, I, O, r, f );   \
-  else cpPlugins_Image_Input_Demangle( unsigned long, D, I, O, r, f )
-
-// -------------------------------------------------------------------------
-#define cpPlugins_Image_Input_Demangle_Dimension_AllTypes( D, I, O, r, f ) \
-  cpPlugins_Image_Input_Demangle( char, D, I, O, r, f );                \
-  else cpPlugins_Image_Input_Demangle( short, D, I, O, r, f );          \
-  else cpPlugins_Image_Input_Demangle( int, D, I, O, r, f );            \
-  else cpPlugins_Image_Input_Demangle( long, D, I, O, r, f );           \
-  else cpPlugins_Image_Input_Demangle( float, D, I, O, r, f );          \
-  else cpPlugins_Image_Input_Demangle( double, D, I, O, r, f );         \
-  else cpPlugins_Image_Input_Demangle( unsigned char, D, I, O, r, f );  \
-  else cpPlugins_Image_Input_Demangle( unsigned short, D, I, O, r, f ); \
-  else cpPlugins_Image_Input_Demangle( unsigned int, D, I, O, r, f );   \
-  else cpPlugins_Image_Input_Demangle( unsigned long, D, I, O, r, f );  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    std::complex< float >, D, I, O, r, f                                \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    std::complex< double >, D, I, O, r, f                               \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBPixel< char >, D, I, O, r, f                                \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBPixel< short >, D, I, O, r, f                               \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBPixel< int >, D, I, O, r, f                                 \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBPixel< long >, D, I, O, r, f                                \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBPixel< unsigned char >, D, I, O, r, f                       \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBPixel< unsigned short >, D, I, O, r, f                      \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBPixel< unsigned int >, D, I, O, r, f                        \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBPixel< unsigned long >, D, I, O, r, f                       \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBPixel< float >, D, I, O, r, f                               \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBPixel< double >, D, I, O, r, f                              \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBAPixel< char >, D, I, O, r, f                               \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBAPixel< short >, D, I, O, r, f                              \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBAPixel< int >, D, I, O, r, f                                \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBAPixel< long >, D, I, O, r, f                               \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBAPixel< unsigned char >, D, I, O, r, f                      \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBAPixel< unsigned short >, D, I, O, r, f                     \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBAPixel< unsigned int >, D, I, O, r, f                       \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBAPixel< unsigned long >, D, I, O, r, f                      \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBAPixel< float >, D, I, O, r, f                              \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::RGBAPixel< double >, D, I, O, r, f                             \
-    );                                                                  \
-  else cpPlugins_Image_Input_Demangle(                                  \
-    itk::Offset< D >, D, I, O, r, f                                     \
-    );                                                                  \
-  else cpPlugins_ImageArray_Input_Demangle(                             \
-    itk::Vector, float, D, D, I, O, r, f                                \
-    );                                                                  \
-  else cpPlugins_ImageArray_Input_Demangle(                             \
-    itk::Vector, double, D, D, I, O, r, f                               \
-    );                                                                  \
-  else cpPlugins_ImageArray_Input_Demangle(                             \
-    itk::Point, float, D, D, I, O, r, f                                 \
-    );                                                                  \
-  else cpPlugins_ImageArray_Input_Demangle(                             \
-    itk::Point, double, D, D, I, O, r, f                                \
-    );                                                                  \
-  else cpPlugins_ImageArray_Input_Demangle(                             \
-    itk::CovariantVector, float, D, D, I, O, r, f                       \
-    );                                                                  \
-  else cpPlugins_ImageArray_Input_Demangle(                             \
-    itk::CovariantVector, double, D, D, I, O, r, f                      \
-    );                                                                  \
-  else cpPlugins_ImageArray_Input_Demangle(                             \
-    itk::SymmetricSecondRankTensor, float, D, D, I, O, r, f             \
-    );                                                                  \
-  else cpPlugins_ImageArray_Input_Demangle(                             \
-    itk::SymmetricSecondRankTensor, double, D, D, I, O, r, f            \
-    )
+#define cpPlugins_Image_Demangle( T, D, I, O, R, F )            \
+  if( ( O = I->GetITK< itk::Image< T, D > >( ) ) != NULL )      \
+    R = this->F< itk::Image< T, D > >( O )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayImage_Demangle( A, T, DI, DA, I, O, R, F )       \
+  if( ( O = I->GetITK< itk::Image< A< T, DA >, DI > >( ) ) != NULL )    \
+    R = this->F< itk::Image< A< T, DA >, DI > >( O )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VectorImage_Demangle( T, D, I, O, R, F )              \
+  if( ( O = I->GetITK< itk::VectorImage< T, D > >( ) ) != NULL )        \
+    R = this->F< itk::VectorImage< T, D > >( O )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayVectorImage_Demangle( A, T, DI, DA, I, O, R, F ) \
+  if( ( O = I->GetITK< itk::VectorImage< A< T, DA >, DI > >( ) ) != NULL ) \
+   r = this->F< itk::VectorImage< A< T, DA >, DI > >( O )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Demangle_AllScalarTypes( D, I, O, R, F )        \
+  cpPlugins_Image_Demangle( char, D, I, O, R, F );                      \
+  else cpPlugins_Image_Demangle( short, D, I, O, R, F );                \
+  else cpPlugins_Image_Demangle( int, D, I, O, R, F );                  \
+  else cpPlugins_Image_Demangle( long, D, I, O, R, F );                 \
+  else cpPlugins_Image_Demangle( unsigned char, D, I, O, R, F );        \
+  else cpPlugins_Image_Demangle( unsigned short, D, I, O, R, F );       \
+  else cpPlugins_Image_Demangle( unsigned int, D, I, O, R, F );         \
+  else cpPlugins_Image_Demangle( unsigned long, D, I, O, R, F );        \
+  else cpPlugins_Image_Demangle( float, D, I, O, R, F );                \
+  else cpPlugins_Image_Demangle( double, D, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Demangle_AllComplexTypes( D, I, O, R, F )       \
+  cpPlugins_Image_Demangle( std::complex< float >, D, I, O, R, F );     \
+  else cpPlugins_Image_Demangle( std::complex< double >, D, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Demangle_AllRGBTypes( D, I, O, R, F )           \
+  cpPlugins_Image_Demangle( itk::RGBPixel< char >, D, I, O, R, F );     \
+  else cpPlugins_Image_Demangle( itk::RGBPixel< short >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBPixel< int >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBPixel< long >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned char >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned short >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned int >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned long >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBPixel< float >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBPixel< double >, D, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Demangle_AllRGBATypes( D, I, O, R, F )           \
+  cpPlugins_Image_Demangle( itk::RGBAPixel< char >, D, I, O, R, F );     \
+  else cpPlugins_Image_Demangle( itk::RGBAPixel< short >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBAPixel< int >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBAPixel< long >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned char >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned short >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned int >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned long >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBAPixel< float >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::RGBAPixel< double >, D, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ) \
+  cpPlugins_Image_Demangle( itk::DiffusionTensor3D< float >, D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::DiffusionTensor3D< double >, D, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayImage_Demangle_AllVectorTypes( DI, DA, I, O, R, F ) \
+  cpPlugins_ArrayImage_Demangle( itk::Vector, float, DI, DA, I, O, R, F ); \
+  else cpPlugins_ArrayImage_Demangle( itk::Vector, double, DI, DA, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayImage_Demangle_AllCovariantVectorTypes( DI, DA, I, O, R, F ) \
+  cpPlugins_ArrayImage_Demangle( itk::CovariantVector, float, DI, DA, I, O, R, F ); \
+  else cpPlugins_ArrayImage_Demangle( itk::CovariantVector, double, DI, DA, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayImage_Demangle_AllPointTypes( DI, DA, I, O, R, F ) \
+  cpPlugins_ArrayImage_Demangle( itk::Point, float, DI, DA, I, O, R, F ); \
+  else cpPlugins_ArrayImage_Demangle( itk::Point, double, DI, DA, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayImage_Demangle_AllSymmetricSecondRankTensorTypes( DI, DA, I, O, R, F ) \
+  cpPlugins_ArrayImage_Demangle( itk::SymmetricSecondRankTensor, float, DI, DA, I, O, R, F ); \
+  else cpPlugins_ArrayImage_Demangle( itk::SymmetricSecondRankTensor, double, DI, DA, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Image_Demangle_AllTypes( D, I, O, R, F )              \
+  cpPlugins_Image_Demangle_AllScalarTypes( D, I, O, R, F );             \
+  else cpPlugins_Image_Demangle_AllComplexTypes( D, I, O, R, F );       \
+  else cpPlugins_Image_Demangle_AllRGBTypes( D, I, O, R, F );           \
+  else cpPlugins_Image_Demangle_AllRGBATypes( D, I, O, R, F );          \
+  else cpPlugins_Image_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ); \
+  else cpPlugins_Image_Demangle( itk::Offset< D >, D, I, O, R, F );     \
+  else cpPlugins_ArrayImage_Demangle_AllVectorTypes( D, D, I, O, R, F ); \
+  else cpPlugins_ArrayImage_Demangle_AllCovariantVectorTypes( D, D, I, O, R, F ); \
+  else cpPlugins_ArrayImage_Demangle_AllPointTypes( D, D, I, O, R, F ); \
+  else cpPlugins_ArrayImage_Demangle_AllSymmetricSecondRankTensorTypes( D, D, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VectorImage_Demangle_AllScalarTypes( D, I, O, R, F )  \
+  cpPlugins_VectorImage_Demangle( char, D, I, O, R, F );                \
+  else cpPlugins_VectorImage_Demangle( short, D, I, O, R, F );          \
+  else cpPlugins_VectorImage_Demangle( int, D, I, O, R, F );            \
+  else cpPlugins_VectorImage_Demangle( long, D, I, O, R, F );           \
+  else cpPlugins_VectorImage_Demangle( unsigned char, D, I, O, R, F );  \
+  else cpPlugins_VectorImage_Demangle( unsigned short, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( unsigned int, D, I, O, R, F );   \
+  else cpPlugins_VectorImage_Demangle( unsigned long, D, I, O, R, F );  \
+  else cpPlugins_VectorImage_Demangle( float, D, I, O, R, F );          \
+  else cpPlugins_VectorImage_Demangle( double, D, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VectorImage_Demangle_AllComplexTypes( D, I, O, R, F ) \
+  cpPlugins_VectorImage_Demangle( std::complex< float >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( std::complex< double >, D, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VectorImage_Demangle_AllRGBTypes( D, I, O, R, F )     \
+  cpPlugins_VectorImage_Demangle( itk::RGBPixel< char >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBPixel< short >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBPixel< int >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBPixel< long >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned char >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned short >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned int >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned long >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBPixel< float >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBPixel< double >, D, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VectorImage_Demangle_AllRGBATypes( D, I, O, R, F )    \
+  cpPlugins_VectorImage_Demangle( itk::RGBAPixel< char >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< short >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< int >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< long >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned char >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned short >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned int >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned long >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< float >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< double >, D, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VectorImage_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ) \
+  cpPlugins_VectorImage_Demangle( itk::DiffusionTensor3D< float >, D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::DiffusionTensor3D< double >, D, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayVectorImage_Demangle_AllVectorTypes( DI, DA, I, O, R, F ) \
+  cpPlugins_ArrayVectorImage_Demangle( itk::Vector, float, DI, DA, I, O, R, F ); \
+  else cpPlugins_ArrayVectorImage_Demangle( itk::Vector, double, DI, DA, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayVectorImage_Demangle_AllCovariantVectorTypes( DI, DA, I, O, R, F ) \
+  cpPlugins_ArrayVectorImage_Demangle( itk::CovariantVector, float, DI, DA, I, O, R, F ); \
+  else cpPlugins_ArrayVectorImage_Demangle( itk::CovariantVector, double, DI, DA, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayVectorImage_Demangle_AllPointTypes( DI, DA, I, O, R, F ) \
+  cpPlugins_ArrayVectorImage_Demangle( itk::Point, float, DI, DA, I, O, R, F ); \
+  else cpPlugins_ArrayVectorImage_Demangle( itk::Point, double, DI, DA, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_ArrayVectorImage_Demangle_AllSymmetricSecondRankTensorTypes( DI, DA, I, O, R, F ) \
+  cpPlugins_ArrayVectorImage_Demangle( itk::SymmetricSecondRankTensor, float, DI, DA, I, O, R, F ); \
+  else cpPlugins_ArrayVectorImage_Demangle( itk::SymmetricSecondRankTensor, double, DI, DA, I, O, R, F )
+
+// -------------------------------------------------------------------------
+#define cpPlugins_VectorImage_Demangle_AllTypes( D, I, O, R, F )        \
+  cpPlugins_VectorImage_Demangle_AllScalarTypes( D, I, O, R, F );       \
+  else cpPlugins_VectorImage_Demangle_AllComplexTypes( D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle_AllRGBTypes( D, I, O, R, F );     \
+  else cpPlugins_VectorImage_Demangle_AllRGBATypes( D, I, O, R, F );    \
+  else cpPlugins_VectorImage_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ); \
+  else cpPlugins_VectorImage_Demangle( itk::Offset< D >, D, I, O, R, F ); \
+  else cpPlugins_ArrayVectorImage_Demangle_AllVectorTypes( D, D, I, O, R, F ); \
+  else cpPlugins_ArrayVectorImage_Demangle_AllCovariantVectorTypes( D, D, I, O, R, F ); \
+  else cpPlugins_ArrayVectorImage_Demangle_AllPointTypes( D, D, I, O, R, F ); \
+  else cpPlugins_ArrayVectorImage_Demangle_AllSymmetricSecondRankTensorTypes( D, D, I, O, R, F )
 
 namespace cpPlugins
 {
   namespace Interface
   {
-    cpPlugins_Interface_Define_ProcessObject( SourceObject, ProcessObject );
-    cpPlugins_Interface_Define_ProcessObject( SinkObject, ProcessObject );
-    cpPlugins_Interface_Define_ProcessObject( FilterObject, ProcessObject );
-    cpPlugins_Interface_Define_ProcessObject( ImageSource, SourceObject );
-    cpPlugins_Interface_Define_ProcessObject( MeshSource, SourceObject );
-    cpPlugins_Interface_Define_ProcessObject( ImageSink, SinkObject );
-    cpPlugins_Interface_Define_ProcessObject( MeshSink, SinkObject );
-    cpPlugins_Interface_Define_ProcessObject(
-      ImageToImageFilter, FilterObject
-      );
-    cpPlugins_Interface_Define_ProcessObject(
-      ImageToMeshFilter, FilterObject
-      );
-    cpPlugins_Interface_Define_ProcessObject(
-      MeshToImageFilter, FilterObject
-      );
-    cpPlugins_Interface_Define_ProcessObject(
-      MeshToMeshFilter, FilterObject
-      );
+    cpPlugins_Define_ProcessObject( SourceObject, ProcessObject );
+    cpPlugins_Define_ProcessObject( SinkObject, ProcessObject );
+    cpPlugins_Define_ProcessObject( FilterObject, ProcessObject );
+    cpPlugins_Define_ProcessObject( ImageSource, SourceObject );
+    cpPlugins_Define_ProcessObject( MeshSource, SourceObject );
+    cpPlugins_Define_ProcessObject( ImageSink, SinkObject );
+    cpPlugins_Define_ProcessObject( MeshSink, SinkObject );
+    cpPlugins_Define_ProcessObject( ImageToImageFilter, FilterObject );
+    cpPlugins_Define_ProcessObject( ImageToMeshFilter, FilterObject );
+    cpPlugins_Define_ProcessObject( MeshToImageFilter, FilterObject );
+    cpPlugins_Define_ProcessObject( MeshToMeshFilter, FilterObject );
 
   } // ecapseman