X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FProcessObject.h;h=a9779282c8a59e37973504e1ec04730a4bf2a5ae;hb=05b92946cf3e01d93bdf5f317df943baaac9ebda;hp=4b2adc7db5c35e3fe962e37a7bdb1c5928d91774;hpb=1adce86c283e253ec41f762652bc477d56d617a5;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/ProcessObject.h b/lib/cpPlugins/Interface/ProcessObject.h index 4b2adc7..a977928 100644 --- a/lib/cpPlugins/Interface/ProcessObject.h +++ b/lib/cpPlugins/Interface/ProcessObject.h @@ -1,37 +1,35 @@ #ifndef __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ -#include -#include -#include +#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; + typedef ProcessObject Self; + typedef Object Superclass; + typedef itk::SmartPointer< Self > Pointer; + typedef itk::SmartPointer< const Self > ConstPointer; public: - ProcessObject( ); - virtual ~ProcessObject( ); + itkTypeMacro( ProcessObject, Object ); + public: virtual std::string GetClassName( ) const; - virtual const TParameters& GetDefaultParameters( ) const; - virtual void SetParameters( const TParameters& params ); + virtual std::string GetClassType( ) const; + virtual const Parameters& GetDefaultParameters( ) const; + virtual void SetParameters( const Parameters& params ); virtual unsigned int GetNumberOfInputs( ) const; virtual unsigned int GetNumberOfOutputs( ) const; @@ -39,39 +37,42 @@ namespace cpPlugins virtual void SetNumberOfInputs( unsigned int n ); virtual void SetNumberOfOutputs( unsigned int n ); - virtual void SetInput( unsigned int idx, const DataObject* dobj ); + virtual void SetInput( unsigned int idx, DataObject* dobj ); virtual DataObject* GetOutput( unsigned int idx ); virtual std::string Update( ); virtual void DisconnectOutputs( ); protected: + ProcessObject( ); + virtual ~ProcessObject( ); + virtual itk::DataObject* _GetInput( unsigned int idx ); virtual void _SetOutput( unsigned int idx, itk::DataObject* dobj ); - virtual void _DeleteOutputs( ); template< class O > - void _MakeOutput( unsigned int idx ) - { - if( idx >= this->m_Outputs.size( ) ) - return; - - if( !( this->m_OutputsDisconnected ) ) - if( this->m_Outputs[ idx ] != NULL ) - delete this->m_Outputs[ idx ]; - - this->m_Outputs[ idx ] = new 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 ); + } virtual std::string _GenerateData( ) = 0; + private: + // Purposely not implemented + ProcessObject( const Self& ); + Self& operator=( const Self& ); + protected: - TParameters m_DefaultParameters; - TParameters m_Parameters; + itk::ProcessObject::Pointer m_RealProcessObject; + Parameters m_DefaultParameters; + Parameters m_Parameters; - std::vector< const DataObject* > m_Inputs; - std::vector< DataObject* > m_Outputs; - bool m_OutputsDisconnected; + std::vector< DataObject::Pointer > m_Inputs; + std::vector< DataObject::Pointer > m_Outputs; }; } // ecapseman