]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Interface/BaseProcessObjects.h
Widgets 4/6: it compiles on windows.
[cpPlugins.git] / lib / cpPlugins / Interface / BaseProcessObjects.h
index 687a00fa6a80a399209699390277c09315a0b404..8ebd4e4ed9c87c2ddfd0976c984c69a3c00cd6ac 100644 (file)
@@ -5,7 +5,7 @@
 #include <cpPlugins/Interface/ProcessObject.h>
 
 // -------------------------------------------------------------------------
-#define cpPlugins_Interface_Define_ProcessObject( O, S )        \
+#define cpPlugins_Define_ProcessObject( O, S )                  \
   class cpPlugins_Interface_EXPORT O                            \
     : public S                                                  \
   {                                                             \
@@ -25,7 +25,7 @@
   }
 
 // -------------------------------------------------------------------------
-#define cpPlugins_Interface_Code_ProcessObject( O )     \
+#define cpPlugins_Code_ProcessObject( O )               \
   cpPlugins::Interface::O::O( ) : Superclass( )         \
   {                                                     \
     this->m_ClassName = "cpPlugins::Interface::#O";     \
   }                                                     \
   cpPlugins::Interface::O::~O( ) { }
 
+// -------------------------------------------------------------------------
+#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( ImageToImageFitler, FilterObject );
-    cpPlugins_Interface_Define_ProcessObject( ImageToMeshFitler, FilterObject );
-    cpPlugins_Interface_Define_ProcessObject( MeshToImageFitler, FilterObject );
-    cpPlugins_Interface_Define_ProcessObject( MeshToMeshFitler, 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