X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FProcessObject.h;h=4b2adc7db5c35e3fe962e37a7bdb1c5928d91774;hb=1adce86c283e253ec41f762652bc477d56d617a5;hp=31379136eeb73f5d519420f9e8795c38593629ed;hpb=8c23766af88a29c3e830299dffc4b95d9fe61df9;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/ProcessObject.h b/lib/cpPlugins/Interface/ProcessObject.h index 3137913..4b2adc7 100644 --- a/lib/cpPlugins/Interface/ProcessObject.h +++ b/lib/cpPlugins/Interface/ProcessObject.h @@ -3,6 +3,8 @@ #include #include +#include +#include #include namespace cpPlugins @@ -13,7 +15,7 @@ namespace cpPlugins /** */ - class ProcessObject + class cpPlugins_Interface_EXPORT ProcessObject : public Object { public: @@ -34,12 +36,33 @@ namespace cpPlugins 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 ) const; + virtual DataObject* GetOutput( unsigned int idx ); virtual std::string Update( ); + virtual void DisconnectOutputs( ); protected: + 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( ); + } + virtual std::string _GenerateData( ) = 0; protected: @@ -47,7 +70,8 @@ namespace cpPlugins TParameters m_Parameters; std::vector< const DataObject* > m_Inputs; - std::vector< DataObject* > m_Outputs; + std::vector< DataObject* > m_Outputs; + bool m_OutputsDisconnected; }; } // ecapseman