X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FProcessObject.h;h=4b2adc7db5c35e3fe962e37a7bdb1c5928d91774;hb=1adce86c283e253ec41f762652bc477d56d617a5;hp=362cd762461234eeefcd53ae2e8300dda9db9829;hpb=cf8ebcdb1e31f332e74569b2be5dfb5f5100df07;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/ProcessObject.h b/lib/cpPlugins/Interface/ProcessObject.h index 362cd76..4b2adc7 100644 --- a/lib/cpPlugins/Interface/ProcessObject.h +++ b/lib/cpPlugins/Interface/ProcessObject.h @@ -4,6 +4,7 @@ #include #include #include +#include #include namespace cpPlugins @@ -14,7 +15,7 @@ namespace cpPlugins /** */ - class ProcessObject + class cpPlugins_Interface_EXPORT ProcessObject : public Object { public: @@ -42,10 +43,26 @@ namespace cpPlugins 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: @@ -53,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