]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Interface/ProcessObject.h
Integration of new functionalities into ProcessObject and DataObject
[cpPlugins.git] / lib / cpPlugins / Interface / ProcessObject.h
index aa7dea35fbf39d724e74ea8d066b27593f0518c4..4b2adc7db5c35e3fe962e37a7bdb1c5928d91774 100644 (file)
@@ -43,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:
@@ -54,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