]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Interface/BaseProcessObjects.h
...
[cpPlugins.git] / lib / cpPlugins / Interface / BaseProcessObjects.h
1 #ifndef __CPPLUGINS__INTERFACE__BASEPROCESSOBJECTS__H__
2 #define __CPPLUGINS__INTERFACE__BASEPROCESSOBJECTS__H__
3
4 #include <cpPlugins/Interface/cpPlugins_Interface_Export.h>
5 #include <cpPlugins/Interface/ProcessObject.h>
6
7 // -------------------------------------------------------------------------
8 #define cpPlugins_Interface_Define_ProcessObject( O, S )        \
9   class cpPlugins_Interface_EXPORT O                            \
10     : public S                                                  \
11   {                                                             \
12   public:                                                       \
13     typedef O                               Self;               \
14     typedef S                               Superclass;         \
15     typedef itk::SmartPointer< Self >       Pointer;            \
16     typedef itk::SmartPointer< const Self > ConstPointer;       \
17   public:                                                       \
18     itkTypeMacro( O, S );                                       \
19   protected:                                                    \
20     O( );                                                       \
21     virtual ~O( );                                              \
22   private:                                                      \
23     O( const Self& );                                           \
24     Self& operator=( const Self& );                             \
25   }
26
27 // -------------------------------------------------------------------------
28 #define cpPlugins_Interface_Code_ProcessObject( O )     \
29   cpPlugins::Interface::O::O( ) : Superclass( )         \
30   {                                                     \
31     this->m_ClassName = "cpPlugins::Interface::#O";     \
32     this->m_ClassCategory = "#O";                       \
33   }                                                     \
34   cpPlugins::Interface::O::~O( ) { }
35
36 // -------------------------------------------------------------------------
37 #define cpPlugins_Image_Input_Demangle( T, D, I, O, r, f )      \
38   if( ( O = I->GetITKImage< itk::Image< T, D > >( ) ) != NULL ) \
39     r = this->f< itk::Image< T, D > >( O )
40
41 // -------------------------------------------------------------------------
42 #define cpPlugins_ImageArray_Input_Demangle( A, T, DP, DI, I, O, r, f ) \
43   if(                                                                   \
44     ( O = I->GetITKImage< itk::Image< A< T, DP >, DI > >( ) ) != NULL   \
45     )                                                                   \
46     r = this->f< itk::Image< A< T, DP >, DI > >( O )
47
48 // -------------------------------------------------------------------------
49 #define cpPlugins_Image_Input_Demangle_Dimension_AllScalarTypes( D, I, O, r, f ) \
50   cpPlugins_Image_Input_Demangle( char, D, I, O, r, f );                \
51   else cpPlugins_Image_Input_Demangle( short, D, I, O, r, f );          \
52   else cpPlugins_Image_Input_Demangle( int, D, I, O, r, f );            \
53   else cpPlugins_Image_Input_Demangle( long, D, I, O, r, f );           \
54   else cpPlugins_Image_Input_Demangle( float, D, I, O, r, f );          \
55   else cpPlugins_Image_Input_Demangle( double, D, I, O, r, f );         \
56   else cpPlugins_Image_Input_Demangle( unsigned char, D, I, O, r, f );  \
57   else cpPlugins_Image_Input_Demangle( unsigned short, D, I, O, r, f ); \
58   else cpPlugins_Image_Input_Demangle( unsigned int, D, I, O, r, f );   \
59   else cpPlugins_Image_Input_Demangle( unsigned long, D, I, O, r, f )
60
61 // -------------------------------------------------------------------------
62 #define cpPlugins_Image_Input_Demangle_Dimension_AllTypes( D, I, O, r, f ) \
63   cpPlugins_Image_Input_Demangle( char, D, I, O, r, f );                \
64   else cpPlugins_Image_Input_Demangle( short, D, I, O, r, f );          \
65   else cpPlugins_Image_Input_Demangle( int, D, I, O, r, f );            \
66   else cpPlugins_Image_Input_Demangle( long, D, I, O, r, f );           \
67   else cpPlugins_Image_Input_Demangle( float, D, I, O, r, f );          \
68   else cpPlugins_Image_Input_Demangle( double, D, I, O, r, f );         \
69   else cpPlugins_Image_Input_Demangle( unsigned char, D, I, O, r, f );  \
70   else cpPlugins_Image_Input_Demangle( unsigned short, D, I, O, r, f ); \
71   else cpPlugins_Image_Input_Demangle( unsigned int, D, I, O, r, f );   \
72   else cpPlugins_Image_Input_Demangle( unsigned long, D, I, O, r, f );  \
73   else cpPlugins_Image_Input_Demangle(                                  \
74     std::complex< float >, D, I, O, r, f                                \
75     );                                                                  \
76   else cpPlugins_Image_Input_Demangle(                                  \
77     std::complex< double >, D, I, O, r, f                               \
78     );                                                                  \
79   else cpPlugins_Image_Input_Demangle(                                  \
80     itk::RGBPixel< char >, D, I, O, r, f                                \
81     );                                                                  \
82   else cpPlugins_Image_Input_Demangle(                                  \
83     itk::RGBPixel< short >, D, I, O, r, f                               \
84     );                                                                  \
85   else cpPlugins_Image_Input_Demangle(                                  \
86     itk::RGBPixel< unsigned char >, D, I, O, r, f                       \
87     );                                                                  \
88   else cpPlugins_Image_Input_Demangle(                                  \
89     itk::RGBPixel< unsigned short >, D, I, O, r, f                      \
90     );                                                                  \
91   else cpPlugins_Image_Input_Demangle(                                  \
92     itk::RGBAPixel< char >, D, I, O, r, f                               \
93     );                                                                  \
94   else cpPlugins_Image_Input_Demangle(                                  \
95     itk::RGBAPixel< short >, D, I, O, r, f                              \
96     );                                                                  \
97   else cpPlugins_Image_Input_Demangle(                                  \
98     itk::RGBAPixel< unsigned char >, D, I, O, r, f                      \
99     );                                                                  \
100   else cpPlugins_Image_Input_Demangle(                                  \
101     itk::RGBAPixel< unsigned short >, D, I, O, r, f                     \
102     );                                                                  \
103   else cpPlugins_Image_Input_Demangle(                                  \
104     itk::Offset< D >, D, I, O, r, f                                     \
105     );                                                                  \
106   else cpPlugins_ImageArray_Input_Demangle(                             \
107     itk::Vector, float, D, D, I, O, r, f                                \
108     );                                                                  \
109   else cpPlugins_ImageArray_Input_Demangle(                             \
110     itk::Vector, double, D, D, I, O, r, f                               \
111     );                                                                  \
112   else cpPlugins_ImageArray_Input_Demangle(                             \
113     itk::Point, float, D, D, I, O, r, f                                 \
114     );                                                                  \
115   else cpPlugins_ImageArray_Input_Demangle(                             \
116     itk::Point, double, D, D, I, O, r, f                                \
117     );                                                                  \
118   else cpPlugins_ImageArray_Input_Demangle(                             \
119     itk::CovariantVector, float, D, D, I, O, r, f                       \
120     );                                                                  \
121   else cpPlugins_ImageArray_Input_Demangle(                             \
122     itk::CovariantVector, double, D, D, I, O, r, f                      \
123     );                                                                  \
124   else cpPlugins_ImageArray_Input_Demangle(                             \
125     itk::SymmetricSecondRankTensor, float, D, D, I, O, r, f             \
126     );                                                                  \
127   else cpPlugins_ImageArray_Input_Demangle(                             \
128     itk::SymmetricSecondRankTensor, double, D, D, I, O, r, f            \
129     )
130
131 namespace cpPlugins
132 {
133   namespace Interface
134   {
135     cpPlugins_Interface_Define_ProcessObject( SourceObject, ProcessObject );
136     cpPlugins_Interface_Define_ProcessObject( SinkObject, ProcessObject );
137     cpPlugins_Interface_Define_ProcessObject( FilterObject, ProcessObject );
138     cpPlugins_Interface_Define_ProcessObject( ImageSource, SourceObject );
139     cpPlugins_Interface_Define_ProcessObject( MeshSource, SourceObject );
140     cpPlugins_Interface_Define_ProcessObject( ImageSink, SinkObject );
141     cpPlugins_Interface_Define_ProcessObject( MeshSink, SinkObject );
142     cpPlugins_Interface_Define_ProcessObject(
143       ImageToImageFilter, FilterObject
144       );
145     cpPlugins_Interface_Define_ProcessObject(
146       ImageToMeshFilter, FilterObject
147       );
148     cpPlugins_Interface_Define_ProcessObject(
149       MeshToImageFilter, FilterObject
150       );
151     cpPlugins_Interface_Define_ProcessObject(
152       MeshToMeshFilter, FilterObject
153       );
154
155   } // ecapseman
156
157 } // ecapseman
158
159 #endif // __CPPLUGINS__INTERFACE__BASEPROCESSOBJECTS__H__
160
161 // eof - $RCSfile$