]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkBlackBoxOutputConnector.cxx
* Major changes on IOStatus update / propagation
[bbtk.git] / kernel / src / bbtkBlackBoxOutputConnector.cxx
index b09f262d046e8305318f5081cd994c778213218c..8024663d81f4734857e704d718bfea3bdf893b94 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkBlackBoxOutputConnector.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/10/17 08:18:12 $
-  Version:   $Revision: 1.8 $
+  Date:      $Date: 2008/12/08 12:54:00 $
+  Version:   $Revision: 1.9 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
 namespace bbtk
 {
 
+  //======================================================================
   BlackBoxOutputConnector::BlackBoxOutputConnector() 
-  // : mStatus(MODIFIED)
+    : mStatus(OUTOFDATE)
   {
     bbtkDebugMessage("Kernel",9,"BlackBoxOutputConnector::BlackBoxOutputConnector()"<<std::endl);
   }
+  //======================================================================
 
+
+  //======================================================================
   BlackBoxOutputConnector::~BlackBoxOutputConnector() 
   {
     bbtkDebugMessage("Kernel",9,
@@ -65,18 +69,21 @@ namespace bbtk
                     "<== BlackBoxOutputConnector::~BlackBoxOutputConnector()"
                     <<std::endl);
   }
+  //======================================================================
 
+  //======================================================================
   ///
   void BlackBoxOutputConnector::SetConnection(Connection* c)
   {
     bbtkDebugMessage("Kernel",9,"BlackBoxOutputConnector::SetConnection("
                     <<c<<")"<<std::endl);
     mConnection.push_back(c);
+    //    AddChangeObserver(boost::bind(&Connection::SignalChange,c));
   }
+  //======================================================================
 
 
-
-  ///
+  //======================================================================
   void BlackBoxOutputConnector::UnsetConnection(Connection* c)
   {
     bbtkDebugMessageInc("Kernel",9,"BlackBoxOutputConnector::UnsetConnection("
@@ -102,12 +109,35 @@ namespace bbtk
        bbtkInternalError("BlackBoxOutputConnector::UnsetConnection("<<c<<") : connection is absent from connections list");
       }
     mConnection.erase(i);
+    //    RemoveChangeObserver(boost::bind(&Connection::SignalChange,c));
 
     bbtkDebugDecTab("Kernel",9);
   }
-
+  //======================================================================
 
   
+   //======================================================================
+  void BlackBoxOutputConnector::SignalChange( BlackBox::Pointer box,
+                                             const std::string& output )
+  {
+    bbtkDebugMessage("change",2,
+                    "==> BlackBoxOutputConnector::SignalChange("
+                    <<box->bbGetFullName()<<",'"
+                    <<output<<"','"<<GetIOStatusString(mStatus)<<"') ["
+                    <<this<<"]"
+                    <<std::endl);
+
+    mChangeSignal(box,output,mStatus);
+
+    bbtkDebugMessage("change",2,
+                    "<== BlackBoxOutputConnector::SignalChange("
+                    <<box->bbGetFullName()<<",'"
+                    <<output<<"','"<<GetIOStatusString(mStatus)<<"') ["
+                    <<this<<"]"
+                    <<std::endl);
+  }
+  //======================================================================
+ /*
   void BlackBoxOutputConnector::SetModifiedStatus()
   {
     bbtkDebugMessage("modified",2,
@@ -122,9 +152,63 @@ namespace bbtk
     
     
    }
+  */
+  /*
+  //======================================================================
+  void BlackBoxOutputConnector::SetChangeTime(const ChangeTime& t)
+  {
+    bbtkDebugMessage("change",2,
+                    "==> BlackBoxOutputConnector::SetChangeTime("<<t<<") ["
+                    <<this<<"]"
+                    <<std::endl);
+    if (mChangeTime.Set(t))
+      {
+       mChangeSignal(this);
+      }
+    bbtkDebugMessage("change",2,
+                    "<== BlackBoxOutputConnector::SetChangeTime("<<t<<") ["
+                    <<this<<"]"
+                    <<std::endl);
+  }
+  //======================================================================
+  */
+  /*
+ //======================================================================
+  void BlackBoxOutputConnector::SetChangeTimeToCurrentTime()
+  {
+    bbtkDebugMessage("change",2,
+                    "==> BlackBoxOutputConnector::SetChangeTimetoCurrentTime() ["
+                    <<this<<"]"
+                    <<std::endl);
+    mChangeTime.Set(ChangeTime::GetCurrentTime());
+    mChangeSignal(this);
+    
+    bbtkDebugMessage("change",2,
+                    "<==> BlackBoxOutputConnector::SetChangeTimetoCurrentTime() ["
+                    <<this<<"]"
+                    <<std::endl);
+  }
+  //======================================================================
+  */
 
 
+  //======================================================================
+  void BlackBoxOutputConnector::AddChangeObserver(OutputChangeCallbackType f)
+  { 
+    mChangeSignal.connect(f); 
+  }
+  //======================================================================
+  
+  //======================================================================
+  /// Removes the function f from the list of functions to call when 
+  /// the output changes (TO WRITE)
+  void BlackBoxOutputConnector::RemoveChangeObserver(OutputChangeCallbackType f)
+  { 
+    bbtkError("BlackBoxOutputConnector::RemoveChangeObserver not implemented");
+    
+    //mChangeSignal.disconnect(f);
+  }
+  //======================================================================
 }
 // namespace bbtk