]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkBlackBoxOutputConnector.cxx
*** empty log message ***
[bbtk.git] / kernel / src / bbtkBlackBoxOutputConnector.cxx
index b09f262d046e8305318f5081cd994c778213218c..789cda41ffe91f058e491db6f424ccfc8351f9e6 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/10 09:33:18 $
+  Version:   $Revision: 1.11 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
 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,41 @@ 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 )
+  {
+    IOStatus s = OUTOFDATE; //mStatus;
+    //if (s==UPTODATE) s=MODIFIED;
+    
+    bbtkDebugMessage("change",2,
+                    "==> BlackBoxOutputConnector::SignalChange("
+                    <<box->bbGetFullName()<<",'"
+                    <<output<<"','"<<GetIOStatusString(s)<<"') ["
+                    <<this<<"]"
+                    <<std::endl);
+    
+    //    std::cout<<"BlackBoxOutputConnector::SignalChange("
+    //      <<box->bbGetFullName()<<",'"
+    //      <<output<<"')"<<std::endl;
+    mChangeSignal(box,output,s);
+    
+    bbtkDebugMessage("change",2,
+                    "<== BlackBoxOutputConnector::SignalChange("
+                    <<box->bbGetFullName()<<",'"
+                    <<output<<"','"<<GetIOStatusString(s)<<"') ["
+                    <<this<<"]"
+                    <<std::endl);
+  }
+  //======================================================================
+ /*
   void BlackBoxOutputConnector::SetModifiedStatus()
   {
     bbtkDebugMessage("modified",2,
@@ -122,9 +158,64 @@ 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)
+  { 
+    //    std::cout << "BlackBoxOutputConnector::AddChangeObserver" << std::endl;
+    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