#ifndef __CPPLUGINS__INTERFACE__BASEPROCESSOBJECTS__H__ #define __CPPLUGINS__INTERFACE__BASEPROCESSOBJECTS__H__ #include #include // ------------------------------------------------------------------------- #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_Code_ProcessObject( O ) \ cpPlugins::Interface::O::O( ) : Superclass( ) { } \ 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_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 } // ecapseman #endif // __CPPLUGINS__INTERFACE__BASEPROCESSOBJECTS__H__ // eof - $RCSfile$