1 #ifndef __CPPLUGINS__INTERFACE__BASEPROCESSOBJECTS__H__
2 #define __CPPLUGINS__INTERFACE__BASEPROCESSOBJECTS__H__
4 #include <cpPlugins/Interface/cpPlugins_Interface_Export.h>
5 #include <cpPlugins/Interface/ProcessObject.h>
7 // -------------------------------------------------------------------------
8 #define cpPlugins_Define_ProcessObject( O, S ) \
9 class cpPlugins_Interface_EXPORT O \
14 typedef S Superclass; \
15 typedef itk::SmartPointer< Self > Pointer; \
16 typedef itk::SmartPointer< const Self > ConstPointer; \
18 itkTypeMacro( O, S ); \
24 Self& operator=( const Self& ); \
27 // -------------------------------------------------------------------------
28 #define cpPlugins_Code_ProcessObject( O ) \
29 cpPlugins::Interface::O::O( ) : Superclass( ) \
31 this->m_ClassName = "cpPlugins::Interface::#O"; \
32 this->m_ClassCategory = "#O"; \
34 cpPlugins::Interface::O::~O( ) { }
36 // -------------------------------------------------------------------------
37 #define cpPlugins_Image_Demangle( T, D, I, O, R, F ) \
38 if( ( O = I->GetITK< itk::Image< T, D > >( ) ) != NULL ) \
39 R = this->F< itk::Image< T, D > >( O )
41 // -------------------------------------------------------------------------
42 #define cpPlugins_ArrayImage_Demangle( A, T, DI, DA, I, O, R, F ) \
43 if( ( O = I->GetITK< itk::Image< A< T, DA >, DI > >( ) ) != NULL ) \
44 R = this->F< itk::Image< A< T, DA >, DI > >( O )
46 // -------------------------------------------------------------------------
47 #define cpPlugins_VectorImage_Demangle( T, D, I, O, R, F ) \
48 if( ( O = I->GetITK< itk::VectorImage< T, D > >( ) ) != NULL ) \
49 R = this->F< itk::VectorImage< T, D > >( O )
51 // -------------------------------------------------------------------------
52 #define cpPlugins_ArrayVectorImage_Demangle( A, T, DI, DA, I, O, R, F ) \
53 if( ( O = I->GetITK< itk::VectorImage< A< T, DA >, DI > >( ) ) != NULL ) \
54 R = this->F< itk::VectorImage< A< T, DA >, DI > >( O )
56 // -------------------------------------------------------------------------
57 #define cpPlugins_Image_Demangle_AllScalarTypes( D, I, O, R, F ) \
58 cpPlugins_Image_Demangle( char, D, I, O, R, F ); \
59 else cpPlugins_Image_Demangle( short, D, I, O, R, F ); \
60 else cpPlugins_Image_Demangle( int, D, I, O, R, F ); \
61 else cpPlugins_Image_Demangle( long, D, I, O, R, F ); \
62 else cpPlugins_Image_Demangle( unsigned char, D, I, O, R, F ); \
63 else cpPlugins_Image_Demangle( unsigned short, D, I, O, R, F ); \
64 else cpPlugins_Image_Demangle( unsigned int, D, I, O, R, F ); \
65 else cpPlugins_Image_Demangle( unsigned long, D, I, O, R, F ); \
66 else cpPlugins_Image_Demangle( float, D, I, O, R, F ); \
67 else cpPlugins_Image_Demangle( double, D, I, O, R, F )
69 // -------------------------------------------------------------------------
70 #define cpPlugins_Image_Demangle_AllComplexTypes( D, I, O, R, F ) \
71 cpPlugins_Image_Demangle( std::complex< float >, D, I, O, R, F ); \
72 else cpPlugins_Image_Demangle( std::complex< double >, D, I, O, R, F )
74 // -------------------------------------------------------------------------
75 #define cpPlugins_Image_Demangle_AllRGBTypes( D, I, O, R, F ) \
76 cpPlugins_Image_Demangle( itk::RGBPixel< char >, D, I, O, R, F ); \
77 else cpPlugins_Image_Demangle( itk::RGBPixel< short >, D, I, O, R, F ); \
78 else cpPlugins_Image_Demangle( itk::RGBPixel< int >, D, I, O, R, F ); \
79 else cpPlugins_Image_Demangle( itk::RGBPixel< long >, D, I, O, R, F ); \
80 else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned char >, D, I, O, R, F ); \
81 else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned short >, D, I, O, R, F ); \
82 else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned int >, D, I, O, R, F ); \
83 else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned long >, D, I, O, R, F ); \
84 else cpPlugins_Image_Demangle( itk::RGBPixel< float >, D, I, O, R, F ); \
85 else cpPlugins_Image_Demangle( itk::RGBPixel< double >, D, I, O, R, F )
87 // -------------------------------------------------------------------------
88 #define cpPlugins_Image_Demangle_AllRGBATypes( D, I, O, R, F ) \
89 cpPlugins_Image_Demangle( itk::RGBAPixel< char >, D, I, O, R, F ); \
90 else cpPlugins_Image_Demangle( itk::RGBAPixel< short >, D, I, O, R, F ); \
91 else cpPlugins_Image_Demangle( itk::RGBAPixel< int >, D, I, O, R, F ); \
92 else cpPlugins_Image_Demangle( itk::RGBAPixel< long >, D, I, O, R, F ); \
93 else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned char >, D, I, O, R, F ); \
94 else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned short >, D, I, O, R, F ); \
95 else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned int >, D, I, O, R, F ); \
96 else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned long >, D, I, O, R, F ); \
97 else cpPlugins_Image_Demangle( itk::RGBAPixel< float >, D, I, O, R, F ); \
98 else cpPlugins_Image_Demangle( itk::RGBAPixel< double >, D, I, O, R, F )
100 // -------------------------------------------------------------------------
101 #define cpPlugins_Image_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ) \
102 cpPlugins_Image_Demangle( itk::DiffusionTensor3D< float >, D, I, O, R, F ); \
103 else cpPlugins_Image_Demangle( itk::DiffusionTensor3D< double >, D, I, O, R, F )
105 // -------------------------------------------------------------------------
106 #define cpPlugins_ArrayImage_Demangle_AllVectorTypes( DI, DA, I, O, R, F ) \
107 cpPlugins_ArrayImage_Demangle( itk::Vector, float, DI, DA, I, O, R, F ); \
108 else cpPlugins_ArrayImage_Demangle( itk::Vector, double, DI, DA, I, O, R, F )
110 // -------------------------------------------------------------------------
111 #define cpPlugins_ArrayImage_Demangle_AllCovariantVectorTypes( DI, DA, I, O, R, F ) \
112 cpPlugins_ArrayImage_Demangle( itk::CovariantVector, float, DI, DA, I, O, R, F ); \
113 else cpPlugins_ArrayImage_Demangle( itk::CovariantVector, double, DI, DA, I, O, R, F )
115 // -------------------------------------------------------------------------
116 #define cpPlugins_ArrayImage_Demangle_AllPointTypes( DI, DA, I, O, R, F ) \
117 cpPlugins_ArrayImage_Demangle( itk::Point, float, DI, DA, I, O, R, F ); \
118 else cpPlugins_ArrayImage_Demangle( itk::Point, double, DI, DA, I, O, R, F )
120 // -------------------------------------------------------------------------
121 #define cpPlugins_ArrayImage_Demangle_AllSymmetricSecondRankTensorTypes( DI, DA, I, O, R, F ) \
122 cpPlugins_ArrayImage_Demangle( itk::SymmetricSecondRankTensor, float, DI, DA, I, O, R, F ); \
123 else cpPlugins_ArrayImage_Demangle( itk::SymmetricSecondRankTensor, double, DI, DA, I, O, R, F )
125 // -------------------------------------------------------------------------
126 #define cpPlugins_Image_Demangle_AllTypes( D, I, O, R, F ) \
127 cpPlugins_Image_Demangle_AllScalarTypes( D, I, O, R, F ); \
128 else cpPlugins_Image_Demangle_AllComplexTypes( D, I, O, R, F ); \
129 else cpPlugins_Image_Demangle_AllRGBTypes( D, I, O, R, F ); \
130 else cpPlugins_Image_Demangle_AllRGBATypes( D, I, O, R, F ); \
131 else cpPlugins_Image_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ); \
132 else cpPlugins_Image_Demangle( itk::Offset< D >, D, I, O, R, F ); \
133 else cpPlugins_ArrayImage_Demangle_AllVectorTypes( D, D, I, O, R, F ); \
134 else cpPlugins_ArrayImage_Demangle_AllCovariantVectorTypes( D, D, I, O, R, F ); \
135 else cpPlugins_ArrayImage_Demangle_AllPointTypes( D, D, I, O, R, F ); \
136 else cpPlugins_ArrayImage_Demangle_AllSymmetricSecondRankTensorTypes( D, D, I, O, R, F )
138 // -------------------------------------------------------------------------
139 #define cpPlugins_VectorImage_Demangle_AllScalarTypes( D, I, O, R, F ) \
140 cpPlugins_VectorImage_Demangle( char, D, I, O, R, F ); \
141 else cpPlugins_VectorImage_Demangle( short, D, I, O, R, F ); \
142 else cpPlugins_VectorImage_Demangle( int, D, I, O, R, F ); \
143 else cpPlugins_VectorImage_Demangle( long, D, I, O, R, F ); \
144 else cpPlugins_VectorImage_Demangle( unsigned char, D, I, O, R, F ); \
145 else cpPlugins_VectorImage_Demangle( unsigned short, D, I, O, R, F ); \
146 else cpPlugins_VectorImage_Demangle( unsigned int, D, I, O, R, F ); \
147 else cpPlugins_VectorImage_Demangle( unsigned long, D, I, O, R, F ); \
148 else cpPlugins_VectorImage_Demangle( float, D, I, O, R, F ); \
149 else cpPlugins_VectorImage_Demangle( double, D, I, O, R, F )
151 // -------------------------------------------------------------------------
152 #define cpPlugins_VectorImage_Demangle_AllComplexTypes( D, I, O, R, F ) \
153 cpPlugins_VectorImage_Demangle( std::complex< float >, D, I, O, R, F ); \
154 else cpPlugins_VectorImage_Demangle( std::complex< double >, D, I, O, R, F )
156 // -------------------------------------------------------------------------
157 #define cpPlugins_VectorImage_Demangle_AllRGBTypes( D, I, O, R, F ) \
158 cpPlugins_VectorImage_Demangle( itk::RGBPixel< char >, D, I, O, R, F ); \
159 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< short >, D, I, O, R, F ); \
160 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< int >, D, I, O, R, F ); \
161 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< long >, D, I, O, R, F ); \
162 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned char >, D, I, O, R, F ); \
163 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned short >, D, I, O, R, F ); \
164 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned int >, D, I, O, R, F ); \
165 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned long >, D, I, O, R, F ); \
166 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< float >, D, I, O, R, F ); \
167 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< double >, D, I, O, R, F )
169 // -------------------------------------------------------------------------
170 #define cpPlugins_VectorImage_Demangle_AllRGBATypes( D, I, O, R, F ) \
171 cpPlugins_VectorImage_Demangle( itk::RGBAPixel< char >, D, I, O, R, F ); \
172 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< short >, D, I, O, R, F ); \
173 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< int >, D, I, O, R, F ); \
174 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< long >, D, I, O, R, F ); \
175 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned char >, D, I, O, R, F ); \
176 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned short >, D, I, O, R, F ); \
177 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned int >, D, I, O, R, F ); \
178 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned long >, D, I, O, R, F ); \
179 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< float >, D, I, O, R, F ); \
180 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< double >, D, I, O, R, F )
182 // -------------------------------------------------------------------------
183 #define cpPlugins_VectorImage_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ) \
184 cpPlugins_VectorImage_Demangle( itk::DiffusionTensor3D< float >, D, I, O, R, F ); \
185 else cpPlugins_VectorImage_Demangle( itk::DiffusionTensor3D< double >, D, I, O, R, F )
187 // -------------------------------------------------------------------------
188 #define cpPlugins_ArrayVectorImage_Demangle_AllVectorTypes( DI, DA, I, O, R, F ) \
189 cpPlugins_ArrayVectorImage_Demangle( itk::Vector, float, DI, DA, I, O, R, F ); \
190 else cpPlugins_ArrayVectorImage_Demangle( itk::Vector, double, DI, DA, I, O, R, F )
192 // -------------------------------------------------------------------------
193 #define cpPlugins_ArrayVectorImage_Demangle_AllCovariantVectorTypes( DI, DA, I, O, R, F ) \
194 cpPlugins_ArrayVectorImage_Demangle( itk::CovariantVector, float, DI, DA, I, O, R, F ); \
195 else cpPlugins_ArrayVectorImage_Demangle( itk::CovariantVector, double, DI, DA, I, O, R, F )
197 // -------------------------------------------------------------------------
198 #define cpPlugins_ArrayVectorImage_Demangle_AllPointTypes( DI, DA, I, O, R, F ) \
199 cpPlugins_ArrayVectorImage_Demangle( itk::Point, float, DI, DA, I, O, R, F ); \
200 else cpPlugins_ArrayVectorImage_Demangle( itk::Point, double, DI, DA, I, O, R, F )
202 // -------------------------------------------------------------------------
203 #define cpPlugins_ArrayVectorImage_Demangle_AllSymmetricSecondRankTensorTypes( DI, DA, I, O, R, F ) \
204 cpPlugins_ArrayVectorImage_Demangle( itk::SymmetricSecondRankTensor, float, DI, DA, I, O, R, F ); \
205 else cpPlugins_ArrayVectorImage_Demangle( itk::SymmetricSecondRankTensor, double, DI, DA, I, O, R, F )
207 // -------------------------------------------------------------------------
208 #define cpPlugins_VectorImage_Demangle_AllTypes( D, I, O, R, F ) \
209 cpPlugins_VectorImage_Demangle_AllScalarTypes( D, I, O, R, F ); \
210 else cpPlugins_VectorImage_Demangle_AllComplexTypes( D, I, O, R, F ); \
211 else cpPlugins_VectorImage_Demangle_AllRGBTypes( D, I, O, R, F ); \
212 else cpPlugins_VectorImage_Demangle_AllRGBATypes( D, I, O, R, F ); \
213 else cpPlugins_VectorImage_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ); \
214 else cpPlugins_VectorImage_Demangle( itk::Offset< D >, D, I, O, R, F ); \
215 else cpPlugins_ArrayVectorImage_Demangle_AllVectorTypes( D, D, I, O, R, F ); \
216 else cpPlugins_ArrayVectorImage_Demangle_AllCovariantVectorTypes( D, D, I, O, R, F ); \
217 else cpPlugins_ArrayVectorImage_Demangle_AllPointTypes( D, D, I, O, R, F ); \
218 else cpPlugins_ArrayVectorImage_Demangle_AllSymmetricSecondRankTensorTypes( D, D, I, O, R, F )
224 cpPlugins_Define_ProcessObject( SourceObject, ProcessObject );
225 cpPlugins_Define_ProcessObject( SinkObject, ProcessObject );
226 cpPlugins_Define_ProcessObject( FilterObject, ProcessObject );
227 cpPlugins_Define_ProcessObject( ImageSource, SourceObject );
228 cpPlugins_Define_ProcessObject( MeshSource, SourceObject );
229 cpPlugins_Define_ProcessObject( ImageSink, SinkObject );
230 cpPlugins_Define_ProcessObject( MeshSink, SinkObject );
231 cpPlugins_Define_ProcessObject( ImageToImageFilter, FilterObject );
232 cpPlugins_Define_ProcessObject( ImageToMeshFilter, FilterObject );
233 cpPlugins_Define_ProcessObject( MeshToImageFilter, FilterObject );
234 cpPlugins_Define_ProcessObject( MeshToMeshFilter, FilterObject );
240 #endif // __CPPLUGINS__INTERFACE__BASEPROCESSOBJECTS__H__