#include <map>
#include <string>
+#include <itkDataObject.h>
+#include <cpPlugins/Interface/cpPlugins_Interface_Export.h>
#include <cpPlugins/Interface/Object.h>
namespace cpPlugins
/**
*/
- class ProcessObject
+ class cpPlugins_Interface_EXPORT ProcessObject
: public Object
{
public:
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:
TParameters m_Parameters;
std::vector< const DataObject* > m_Inputs;
- std::vector< DataObject* > m_Outputs;
+ std::vector< DataObject* > m_Outputs;
+ bool m_OutputsDisconnected;
};
} // ecapseman