#ifndef __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ #include #include #include #include #include namespace cpPlugins { namespace Interface { class DataObject; /** */ class cpPlugins_Interface_EXPORT ProcessObject : public Object { public: typedef ProcessObject Self; typedef Object Superclass; typedef std::pair< std::string, std::string > TParameter; typedef std::map< std::string, TParameter > TParameters; public: ProcessObject( ); virtual ~ProcessObject( ); virtual std::string GetClassName( ) const; virtual const TParameters& GetDefaultParameters( ) const; virtual void SetParameters( const TParameters& params ); virtual unsigned int GetNumberOfInputs( ) const; virtual unsigned int GetNumberOfOutputs( ) const; virtual void SetNumberOfInputs( unsigned int n ); virtual void SetNumberOfOutputs( unsigned int n ); virtual void SetInput( unsigned int idx, const DataObject* dobj ); virtual DataObject* GetOutput( unsigned int idx ); virtual std::string Update( ); protected: virtual itk::DataObject* _GetInput( unsigned int idx ); virtual void _SetOutput( unsigned int idx, itk::DataObject* dobj ); virtual std::string _GenerateData( ) = 0; protected: TParameters m_DefaultParameters; TParameters m_Parameters; std::vector< const DataObject* > m_Inputs; std::vector< DataObject > m_Outputs; }; } // ecapseman } // ecapseman #endif // __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ // eof - $RCSfile$