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 ); \
19 cpPlugins_Id_Macro( cpPlugins::Interface::O, "ProcessObject" ); \
25 Self& operator=( const Self& ); \
28 // -------------------------------------------------------------------------
29 #define cpPlugins_Code_ProcessObject( O ) \
30 cpPlugins::Interface::O::O( ) : Superclass( ) { } \
31 cpPlugins::Interface::O::~O( ) { }
33 // -------------------------------------------------------------------------
34 #define cpPlugins_Image_Demangle( T, D, I, O, R, F ) \
35 if( ( O = I->GetITK< itk::Image< T, D > >( ) ) != NULL ) \
36 R = this->F< itk::Image< T, D > >( O )
38 // -------------------------------------------------------------------------
39 #define cpPlugins_ArrayImage_Demangle( A, T, DI, DA, I, O, R, F ) \
40 if( ( O = I->GetITK< itk::Image< A< T, DA >, DI > >( ) ) != NULL ) \
41 R = this->F< itk::Image< A< T, DA >, DI > >( O )
43 // -------------------------------------------------------------------------
44 #define cpPlugins_VectorImage_Demangle( T, D, I, O, R, F ) \
45 if( ( O = I->GetITK< itk::VectorImage< T, D > >( ) ) != NULL ) \
46 R = this->F< itk::VectorImage< T, D > >( O )
48 // -------------------------------------------------------------------------
49 #define cpPlugins_ArrayVectorImage_Demangle( A, T, DI, DA, I, O, R, F ) \
50 if( ( O = I->GetITK< itk::VectorImage< A< T, DA >, DI > >( ) ) != NULL ) \
51 r = this->F< itk::VectorImage< A< T, DA >, DI > >( O )
53 // -------------------------------------------------------------------------
54 #define cpPlugins_Image_Demangle_AllScalarTypes( D, I, O, R, F ) \
55 cpPlugins_Image_Demangle( char, D, I, O, R, F ); \
56 else cpPlugins_Image_Demangle( short, D, I, O, R, F ); \
57 else cpPlugins_Image_Demangle( int, D, I, O, R, F ); \
58 else cpPlugins_Image_Demangle( long, D, I, O, R, F ); \
59 else cpPlugins_Image_Demangle( unsigned char, D, I, O, R, F ); \
60 else cpPlugins_Image_Demangle( unsigned short, D, I, O, R, F ); \
61 else cpPlugins_Image_Demangle( unsigned int, D, I, O, R, F ); \
62 else cpPlugins_Image_Demangle( unsigned long, D, I, O, R, F ); \
63 else cpPlugins_Image_Demangle( float, D, I, O, R, F ); \
64 else cpPlugins_Image_Demangle( double, D, I, O, R, F )
66 // -------------------------------------------------------------------------
67 #define cpPlugins_Image_Demangle_AllComplexTypes( D, I, O, R, F ) \
68 cpPlugins_Image_Demangle( std::complex< float >, D, I, O, R, F ); \
69 else cpPlugins_Image_Demangle( std::complex< double >, D, I, O, R, F )
71 // -------------------------------------------------------------------------
72 #define cpPlugins_Image_Demangle_AllRGBTypes( D, I, O, R, F ) \
73 cpPlugins_Image_Demangle( itk::RGBPixel< char >, D, I, O, R, F ); \
74 else cpPlugins_Image_Demangle( itk::RGBPixel< short >, D, I, O, R, F ); \
75 else cpPlugins_Image_Demangle( itk::RGBPixel< int >, D, I, O, R, F ); \
76 else cpPlugins_Image_Demangle( itk::RGBPixel< long >, D, I, O, R, F ); \
77 else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned char >, D, I, O, R, F ); \
78 else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned short >, D, I, O, R, F ); \
79 else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned int >, D, I, O, R, F ); \
80 else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned long >, D, I, O, R, F ); \
81 else cpPlugins_Image_Demangle( itk::RGBPixel< float >, D, I, O, R, F ); \
82 else cpPlugins_Image_Demangle( itk::RGBPixel< double >, D, I, O, R, F )
84 // -------------------------------------------------------------------------
85 #define cpPlugins_Image_Demangle_AllRGBATypes( D, I, O, R, F ) \
86 cpPlugins_Image_Demangle( itk::RGBAPixel< char >, D, I, O, R, F ); \
87 else cpPlugins_Image_Demangle( itk::RGBAPixel< short >, D, I, O, R, F ); \
88 else cpPlugins_Image_Demangle( itk::RGBAPixel< int >, D, I, O, R, F ); \
89 else cpPlugins_Image_Demangle( itk::RGBAPixel< long >, D, I, O, R, F ); \
90 else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned char >, D, I, O, R, F ); \
91 else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned short >, D, I, O, R, F ); \
92 else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned int >, D, I, O, R, F ); \
93 else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned long >, D, I, O, R, F ); \
94 else cpPlugins_Image_Demangle( itk::RGBAPixel< float >, D, I, O, R, F ); \
95 else cpPlugins_Image_Demangle( itk::RGBAPixel< double >, D, I, O, R, F )
97 // -------------------------------------------------------------------------
98 #define cpPlugins_Image_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ) \
99 cpPlugins_Image_Demangle( itk::DiffusionTensor3D< float >, D, I, O, R, F ); \
100 else cpPlugins_Image_Demangle( itk::DiffusionTensor3D< double >, D, I, O, R, F )
102 // -------------------------------------------------------------------------
103 #define cpPlugins_ArrayImage_Demangle_AllVectorTypes( DI, DA, I, O, R, F ) \
104 cpPlugins_ArrayImage_Demangle( itk::Vector, float, DI, DA, I, O, R, F ); \
105 else cpPlugins_ArrayImage_Demangle( itk::Vector, double, DI, DA, I, O, R, F )
107 // -------------------------------------------------------------------------
108 #define cpPlugins_ArrayImage_Demangle_AllCovariantVectorTypes( DI, DA, I, O, R, F ) \
109 cpPlugins_ArrayImage_Demangle( itk::CovariantVector, float, DI, DA, I, O, R, F ); \
110 else cpPlugins_ArrayImage_Demangle( itk::CovariantVector, double, DI, DA, I, O, R, F )
112 // -------------------------------------------------------------------------
113 #define cpPlugins_ArrayImage_Demangle_AllPointTypes( DI, DA, I, O, R, F ) \
114 cpPlugins_ArrayImage_Demangle( itk::Point, float, DI, DA, I, O, R, F ); \
115 else cpPlugins_ArrayImage_Demangle( itk::Point, double, DI, DA, I, O, R, F )
117 // -------------------------------------------------------------------------
118 #define cpPlugins_ArrayImage_Demangle_AllSymmetricSecondRankTensorTypes( DI, DA, I, O, R, F ) \
119 cpPlugins_ArrayImage_Demangle( itk::SymmetricSecondRankTensor, float, DI, DA, I, O, R, F ); \
120 else cpPlugins_ArrayImage_Demangle( itk::SymmetricSecondRankTensor, double, DI, DA, I, O, R, F )
122 // -------------------------------------------------------------------------
123 #define cpPlugins_Image_Demangle_AllTypes( D, I, O, R, F ) \
124 cpPlugins_Image_Demangle_AllScalarTypes( D, I, O, R, F ); \
125 else cpPlugins_Image_Demangle_AllComplexTypes( D, I, O, R, F ); \
126 else cpPlugins_Image_Demangle_AllRGBTypes( D, I, O, R, F ); \
127 else cpPlugins_Image_Demangle_AllRGBATypes( D, I, O, R, F ); \
128 else cpPlugins_Image_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ); \
129 else cpPlugins_Image_Demangle( itk::Offset< D >, D, I, O, R, F ); \
130 else cpPlugins_ArrayImage_Demangle_AllVectorTypes( D, D, I, O, R, F ); \
131 else cpPlugins_ArrayImage_Demangle_AllCovariantVectorTypes( D, D, I, O, R, F ); \
132 else cpPlugins_ArrayImage_Demangle_AllPointTypes( D, D, I, O, R, F ); \
133 else cpPlugins_ArrayImage_Demangle_AllSymmetricSecondRankTensorTypes( D, D, I, O, R, F )
135 // -------------------------------------------------------------------------
136 #define cpPlugins_VectorImage_Demangle_AllScalarTypes( D, I, O, R, F ) \
137 cpPlugins_VectorImage_Demangle( char, D, I, O, R, F ); \
138 else cpPlugins_VectorImage_Demangle( short, D, I, O, R, F ); \
139 else cpPlugins_VectorImage_Demangle( int, D, I, O, R, F ); \
140 else cpPlugins_VectorImage_Demangle( long, D, I, O, R, F ); \
141 else cpPlugins_VectorImage_Demangle( unsigned char, D, I, O, R, F ); \
142 else cpPlugins_VectorImage_Demangle( unsigned short, D, I, O, R, F ); \
143 else cpPlugins_VectorImage_Demangle( unsigned int, D, I, O, R, F ); \
144 else cpPlugins_VectorImage_Demangle( unsigned long, D, I, O, R, F ); \
145 else cpPlugins_VectorImage_Demangle( float, D, I, O, R, F ); \
146 else cpPlugins_VectorImage_Demangle( double, D, I, O, R, F )
148 // -------------------------------------------------------------------------
149 #define cpPlugins_VectorImage_Demangle_AllComplexTypes( D, I, O, R, F ) \
150 cpPlugins_VectorImage_Demangle( std::complex< float >, D, I, O, R, F ); \
151 else cpPlugins_VectorImage_Demangle( std::complex< double >, D, I, O, R, F )
153 // -------------------------------------------------------------------------
154 #define cpPlugins_VectorImage_Demangle_AllRGBTypes( D, I, O, R, F ) \
155 cpPlugins_VectorImage_Demangle( itk::RGBPixel< char >, D, I, O, R, F ); \
156 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< short >, D, I, O, R, F ); \
157 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< int >, D, I, O, R, F ); \
158 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< long >, D, I, O, R, F ); \
159 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned char >, D, I, O, R, F ); \
160 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned short >, D, I, O, R, F ); \
161 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned int >, D, I, O, R, F ); \
162 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned long >, D, I, O, R, F ); \
163 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< float >, D, I, O, R, F ); \
164 else cpPlugins_VectorImage_Demangle( itk::RGBPixel< double >, D, I, O, R, F )
166 // -------------------------------------------------------------------------
167 #define cpPlugins_VectorImage_Demangle_AllRGBATypes( D, I, O, R, F ) \
168 cpPlugins_VectorImage_Demangle( itk::RGBAPixel< char >, D, I, O, R, F ); \
169 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< short >, D, I, O, R, F ); \
170 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< int >, D, I, O, R, F ); \
171 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< long >, D, I, O, R, F ); \
172 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned char >, D, I, O, R, F ); \
173 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned short >, D, I, O, R, F ); \
174 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned int >, D, I, O, R, F ); \
175 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned long >, D, I, O, R, F ); \
176 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< float >, D, I, O, R, F ); \
177 else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< double >, D, I, O, R, F )
179 // -------------------------------------------------------------------------
180 #define cpPlugins_VectorImage_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ) \
181 cpPlugins_VectorImage_Demangle( itk::DiffusionTensor3D< float >, D, I, O, R, F ); \
182 else cpPlugins_VectorImage_Demangle( itk::DiffusionTensor3D< double >, D, I, O, R, F )
184 // -------------------------------------------------------------------------
185 #define cpPlugins_ArrayVectorImage_Demangle_AllVectorTypes( DI, DA, I, O, R, F ) \
186 cpPlugins_ArrayVectorImage_Demangle( itk::Vector, float, DI, DA, I, O, R, F ); \
187 else cpPlugins_ArrayVectorImage_Demangle( itk::Vector, double, DI, DA, I, O, R, F )
189 // -------------------------------------------------------------------------
190 #define cpPlugins_ArrayVectorImage_Demangle_AllCovariantVectorTypes( DI, DA, I, O, R, F ) \
191 cpPlugins_ArrayVectorImage_Demangle( itk::CovariantVector, float, DI, DA, I, O, R, F ); \
192 else cpPlugins_ArrayVectorImage_Demangle( itk::CovariantVector, double, DI, DA, I, O, R, F )
194 // -------------------------------------------------------------------------
195 #define cpPlugins_ArrayVectorImage_Demangle_AllPointTypes( DI, DA, I, O, R, F ) \
196 cpPlugins_ArrayVectorImage_Demangle( itk::Point, float, DI, DA, I, O, R, F ); \
197 else cpPlugins_ArrayVectorImage_Demangle( itk::Point, double, DI, DA, I, O, R, F )
199 // -------------------------------------------------------------------------
200 #define cpPlugins_ArrayVectorImage_Demangle_AllSymmetricSecondRankTensorTypes( DI, DA, I, O, R, F ) \
201 cpPlugins_ArrayVectorImage_Demangle( itk::SymmetricSecondRankTensor, float, DI, DA, I, O, R, F ); \
202 else cpPlugins_ArrayVectorImage_Demangle( itk::SymmetricSecondRankTensor, double, DI, DA, I, O, R, F )
204 // -------------------------------------------------------------------------
205 #define cpPlugins_VectorImage_Demangle_AllTypes( D, I, O, R, F ) \
206 cpPlugins_VectorImage_Demangle_AllScalarTypes( D, I, O, R, F ); \
207 else cpPlugins_VectorImage_Demangle_AllComplexTypes( D, I, O, R, F ); \
208 else cpPlugins_VectorImage_Demangle_AllRGBTypes( D, I, O, R, F ); \
209 else cpPlugins_VectorImage_Demangle_AllRGBATypes( D, I, O, R, F ); \
210 else cpPlugins_VectorImage_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ); \
211 else cpPlugins_VectorImage_Demangle( itk::Offset< D >, D, I, O, R, F ); \
212 else cpPlugins_ArrayVectorImage_Demangle_AllVectorTypes( D, D, I, O, R, F ); \
213 else cpPlugins_ArrayVectorImage_Demangle_AllCovariantVectorTypes( D, D, I, O, R, F ); \
214 else cpPlugins_ArrayVectorImage_Demangle_AllPointTypes( D, D, I, O, R, F ); \
215 else cpPlugins_ArrayVectorImage_Demangle_AllSymmetricSecondRankTensorTypes( D, D, I, O, R, F )
221 cpPlugins_Define_ProcessObject( SourceObject, ProcessObject );
222 cpPlugins_Define_ProcessObject( SinkObject, ProcessObject );
223 cpPlugins_Define_ProcessObject( FilterObject, ProcessObject );
224 cpPlugins_Define_ProcessObject( ImageSource, SourceObject );
225 cpPlugins_Define_ProcessObject( MeshSource, SourceObject );
226 cpPlugins_Define_ProcessObject( ImageSink, SinkObject );
227 cpPlugins_Define_ProcessObject( MeshSink, SinkObject );
228 cpPlugins_Define_ProcessObject( ImageToImageFilter, FilterObject );
229 cpPlugins_Define_ProcessObject( ImageToMeshFilter, FilterObject );
230 cpPlugins_Define_ProcessObject( MeshToImageFilter, FilterObject );
231 cpPlugins_Define_ProcessObject( MeshToMeshFilter, FilterObject );
237 #endif // __CPPLUGINS__INTERFACE__BASEPROCESSOBJECTS__H__