X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FProcessObject.h;h=6578beb35e0b533d51d508dbbb88b934d818dda2;hb=f654620df52b811be7bd263a1775c93d29c69a65;hp=61ea66aa7b0f66b5be810341685535c034762edf;hpb=48412b66ce1d8d8831625f1a3f51f7e78825f9a1;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/ProcessObject.h b/lib/cpPlugins/Interface/ProcessObject.h index 61ea66a..6578beb 100644 --- a/lib/cpPlugins/Interface/ProcessObject.h +++ b/lib/cpPlugins/Interface/ProcessObject.h @@ -1,20 +1,35 @@ #ifndef __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ -#include -#include +#include + #include #include -#include - -#define ITK_MANUAL_INSTANTIATION #include +#include +#include + +// Some forward declarations +class vtkRenderWindowInteractor; +#ifdef cpPlugins_Interface_QT4 +class QWidget; +#else +typedef char QWidget; +#endif // cpPlugins_Interface_QT4 namespace cpPlugins { namespace Interface { + // Some forward declarations + class Plugins; +#ifdef cpPlugins_Interface_QT4 + class ParametersQtDialog; +#else + typedef char ParametersQtDialog; +#endif // cpPlugins_Interface_QT4 + /** */ class cpPlugins_Interface_EXPORT ProcessObject @@ -26,37 +41,89 @@ namespace cpPlugins typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; + typedef Parameters TParameters; + typedef std::set< vtkRenderWindowInteractor* > TInteractors; + + enum DialogResult + { + DialogResult_NoModal = 0, + DialogResult_Modal, + DialogResult_Cancel + }; + public: itkTypeMacro( ProcessObject, Object ); + cpPlugins_Id_Macro( ProcessObject, "BaseObject" ); + + itkBooleanMacro( Interactive ); + + itkGetConstObjectMacro( Parameters, TParameters ); + itkGetObjectMacro( Parameters, TParameters ); + itkGetConstMacro( Plugins, const Plugins* ); + itkGetMacro( Plugins, Plugins* ); + itkGetConstMacro( Interactive, bool ); + + itkSetObjectMacro( Plugins, Plugins ); + itkSetMacro( Interactive, bool ); public: - virtual const Parameters& GetDefaultParameters( ) const; - virtual void SetParameters( const Parameters& params ); + // To impact pipeline + virtual void Modified( ) const; - virtual unsigned int GetNumberOfInputs( ) const; - virtual unsigned int GetNumberOfOutputs( ) const; + virtual void GetInputsNames( std::set< std::string >& names ) const; + virtual void GetOutputsNames( std::set< std::string >& names ) const; - virtual void SetNumberOfInputs( unsigned int n ); - virtual void SetNumberOfOutputs( unsigned int n ); + virtual bool SetOutputObjectName( + const std::string& new_object_name, + const std::string& output_name + ); - virtual void SetInput( unsigned int idx, DataObject* dobj ); - virtual DataObject* GetOutput( unsigned int idx ); + virtual void SetInput( const std::string& id, DataObject* dobj ); virtual std::string Update( ); virtual void DisconnectOutputs( ); + virtual void AddInteractor( vtkRenderWindowInteractor* interactor ); + virtual DialogResult ExecConfigurationDialog( QWidget* parent ); + + template< class T > + inline T* GetITK( ); + + template< class T > + inline const T* GetITK( ) const; + + template< class T > + inline T* GetVTK( ); + + template< class T > + inline const T* GetVTK( ) const; + + template< class T > + inline T* GetInput( const std::string& id ); + + template< class T > + inline const T* GetInput( const std::string& id ) const; + + template< class T > + inline T* GetOutput( const std::string& id ); + + template< class T > + inline const T* GetOutput( const std::string& id ) const; + protected: ProcessObject( ); virtual ~ProcessObject( ); + virtual void _AddInput( const std::string& name ); + + template< class F > + inline F* _CreateITK( ); + + template< class F > + inline F* _CreateVTK( ); + template< class O > - void _MakeOutput( unsigned int idx ) - { - if( idx >= this->m_Outputs.size( ) ) - return; - this->m_Outputs[ idx ] = O::New( ); - this->m_Outputs[ idx ]->SetSource( this ); - } + inline void _MakeOutput( const std::string& id ); virtual std::string _GenerateData( ) = 0; @@ -66,574 +133,31 @@ namespace cpPlugins Self& operator=( const Self& ); protected: - itk::ProcessObject::Pointer m_RealProcessObject; - Parameters m_DefaultParameters; - Parameters m_Parameters; - - std::vector< DataObject::Pointer > m_Inputs; - std::vector< DataObject::Pointer > m_Outputs; + itk::ProcessObject::Pointer m_ITKObject; + vtkSmartPointer< vtkAlgorithm > m_VTKObject; + + Parameters::Pointer m_Parameters; + ParametersQtDialog* m_ParametersDialog; + TInteractors m_Interactors; + Plugins* m_Plugins; + bool m_Interactive; + + typedef std::map< std::string, DataObject::Pointer > _TDataContainer; + _TDataContainer m_Inputs; + _TDataContainer m_Outputs; + std::map< std::string, std::string > m_OutputObjectsNames; }; + /** + * Plugin provider + */ + CPPLUGINS_PROVIDER_HEADER( ProcessObject ); + } // ecapseman } // ecapseman -// ------------------------------------------------------------------------- -#define cpPlugins_Image_Demangle_Methods( c ) \ - std::string _DemangleImageDimension( itk::DataObject* o ); \ - std::string _DemangleImagePixel( unsigned int d, itk::DataObject* o ); - -// ------------------------------------------------------------------------- -#define cpPlugins_Image_Demangle_Methods_Code( c, f ) \ - std::string c::_DemangleImageDimension( itk::DataObject* o ) \ - { \ - std::string r = ""; \ - if( dynamic_cast< itk::ImageBase< 1 >* >( o ) != NULL ) \ - { \ - cpPlugins_Image_Array_Demangle( \ - itk::Vector, float, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, double, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, float, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, double, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, float, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, double, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, float, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, double, 1, 1, o, f, r \ - ); \ - else r = this->_DemangleImagePixel( 1, o ); \ - } \ - else if( dynamic_cast< itk::ImageBase< 2 >* >( o ) != NULL ) \ - { \ - cpPlugins_Image_Demangle( \ - itk::RGBPixel< char >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< short >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned char >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned short >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< char >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< short >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned char >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned short >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, float, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, double, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, float, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, double, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, float, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, double, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, float, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, double, 2, 2, o, f, r \ - ); \ - else r = this->_DemangleImagePixel( 2, o ); \ - } \ - else if( dynamic_cast< itk::ImageBase< 3 >* >( o ) != NULL ) \ - { \ - cpPlugins_Image_Demangle( \ - itk::RGBPixel< char >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< short >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned char >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned short >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< char >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< short >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned char >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned short >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, float, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, double, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, float, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, double, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, float, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, double, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, float, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, double, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::DiffusionTensor3D< float >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::DiffusionTensor3D< double >, 3, o, f, r \ - ); \ - else r = this->_DemangleImagePixel( 3, o ); \ - } \ - else if( dynamic_cast< itk::ImageBase< 4 >* >( o ) != NULL ) \ - { \ - cpPlugins_Image_Demangle( \ - itk::RGBPixel< char >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< short >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned char >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned short >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< char >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< short >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned char >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned short >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, float, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, double, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, float, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, double, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, float, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, double, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, float, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, double, 4, 4, o, f, r \ - ); \ - else r = this->_DemangleImagePixel( 4, o ); \ - } \ - else \ - r = \ - std::string( #c ) + \ - std::string( ": Image dimension not supported." ); \ - return( r ); \ - } \ - std::string c::_DemangleImagePixel( \ - unsigned int d, itk::DataObject* o \ - ) \ - { \ - std::string r = ""; \ - if( d == 1 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< float >, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< double >, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::Offset< 1 >, 1, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 2 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< float >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< double >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::Offset< 2 >, 2, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 3 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< float >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< double >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::Offset< 3 >, 3, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 4 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< float >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< double >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::Offset< 4 >, 4, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else \ - r = \ - std::string( #c ) + \ - std::string( ": Image dimension not supported." ); \ - return( r ); \ - } - -// ------------------------------------------------------------------------- -#define cpPlugins_Image_Demangle_Methods_Code_Only_Scalars( c, f ) \ - std::string c::_DemangleImageDimension( itk::DataObject* o ) \ - { \ - std::string r = ""; \ - if( dynamic_cast< itk::ImageBase< 1 >* >( o ) != NULL ) \ - r = this->_DemangleImagePixel( 1, o ); \ - else if( dynamic_cast< itk::ImageBase< 2 >* >( o ) != NULL ) \ - r = this->_DemangleImagePixel( 2, o ); \ - else if( dynamic_cast< itk::ImageBase< 3 >* >( o ) != NULL ) \ - r = this->_DemangleImagePixel( 3, o ); \ - else if( dynamic_cast< itk::ImageBase< 4 >* >( o ) != NULL ) \ - r = this->_DemangleImagePixel( 4, o ); \ - else \ - r = \ - std::string( #c ) + \ - std::string( ": Image dimension not supported." ); \ - return( r ); \ - } \ - std::string c::_DemangleImagePixel( \ - unsigned int d, itk::DataObject* o \ - ) \ - { \ - std::string r = ""; \ - if( d == 1 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 1, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 2 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 2, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 3 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 3, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 4 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 4, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else \ - r = \ - std::string( #c ) + \ - std::string( ": Image dimension not supported." ); \ - return( r ); \ - } +#include #endif // __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__