]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Interface/ProcessObject.cxx
MAC compilation issues solved... Now some tests please
[cpPlugins.git] / lib / cpPlugins / Interface / ProcessObject.cxx
index f012f5701d3131a7b86d5f5acedf615a59137d99..72897d6729a615ca3368a85a62c434297e8063cf 100644 (file)
@@ -7,6 +7,20 @@
 #include <cpPlugins/Interface/SimpleMPRWidget.h>
 #endif // cpPlugins_Interface_QT4
 
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::ProcessObject::
+SetITK( itk::LightObject* o )
+{
+  // Polymorphism: do nothing -> this is a filter!!!
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::ProcessObject::
+SetVTK( vtkObjectBase* o )
+{
+  // Polymorphism: do nothing -> this is a filter!!!
+}
+
 // -------------------------------------------------------------------------
 std::set< std::string > cpPlugins::Interface::ProcessObject::
 GetInputsNames( ) const
@@ -43,10 +57,10 @@ GetNumberOfOutputs( ) const
 
 // -------------------------------------------------------------------------
 cpPlugins::Interface::
-ProcessObjectPort& cpPlugins::Interface::ProcessObject::
+OutputProcessObjectPort& cpPlugins::Interface::ProcessObject::
 GetOutput( const std::string& id )
 {
-  static ProcessObjectPort null_port;
+  static OutputProcessObjectPort null_port;
   auto i = this->m_Outputs.find( id );
   if( i == this->m_Outputs.end( ) )
   {
@@ -59,10 +73,10 @@ GetOutput( const std::string& id )
 
 // -------------------------------------------------------------------------
 const cpPlugins::Interface::
-ProcessObjectPort& cpPlugins::Interface::ProcessObject::
+OutputProcessObjectPort& cpPlugins::Interface::ProcessObject::
 GetOutput( const std::string& id ) const
 {
-  static const ProcessObjectPort null_port;
+  static const OutputProcessObjectPort null_port;
   auto i = this->m_Outputs.find( id );
   if( i == this->m_Outputs.end( ) )
     return( null_port );
@@ -72,7 +86,7 @@ GetOutput( const std::string& id ) const
 
 // -------------------------------------------------------------------------
 bool cpPlugins::Interface::ProcessObject::
-SetInput( const std::string& id, const ProcessObjectPort& port )
+SetInput( const std::string& id, const OutputProcessObjectPort& port )
 {
   auto i = this->m_Inputs.find( id );
   if( i != this->m_Inputs.end( ) )
@@ -106,7 +120,7 @@ DisconnectOutputs( )
   auto i = this->m_Outputs.begin( );
   for( ; i != this->m_Outputs.end( ); ++i )
     if( i->second.IsValid( ) )
-      i->second->DisconnectPipeline( );
+      i->second->DisconnectFromPipeline( );
   this->Modified( );
 }
 
@@ -138,7 +152,14 @@ Update( )
   bool need_to_update = false;
   for( ; i != this->m_Inputs.end( ) && r == ""; ++i )
   {
-    if( i->second.IsValid( ) )
+    bool iv = i->second.IsValid( );
+    bool ir = i->second.IsRequired( );
+    if( !iv && ir )
+      r =
+        "ProcessObject: Required input \"" +
+        i->first + "@" + this->GetClassName( ) +
+        "\" is not valid (=NULL).";
+    if( iv && r == "" )
     {
       Self* src = dynamic_cast< Self* >( i->second->GetSource( ) );
       if( src != NULL )
@@ -200,13 +221,13 @@ cpPlugins::Interface::ProcessObject::
 
 // -------------------------------------------------------------------------
 void cpPlugins::Interface::ProcessObject::
-_AddInput( const std::string& name )
+_AddInput( const std::string& name, bool required )
 {
-  typedef typename _TDataContainer::value_type _TValue;
   auto i = this->m_Inputs.find( name );
   if( i == this->m_Inputs.end( ) )
   {
-    i = this->m_Inputs.insert( _TValue( name, NULL ) ).first;
+    InputProcessObjectPort new_port( required );
+    this->m_Inputs[ name ] = new_port;
     this->Modified( );
 
   } // fi