From 13aaa782a7f5942f5072728201750c06afbdfb2d Mon Sep 17 00:00:00 2001 From: guigues Date: Tue, 9 Dec 2008 11:48:31 +0000 Subject: [PATCH] Bug fix in status propagation --- kernel/src/bbtkBlackBox.cxx | 59 +++++++++++++++++++---- kernel/src/bbtkBlackBoxInputConnector.cxx | 18 +++++-- kernel/src/bbtkConnection.cxx | 25 +++++++--- 3 files changed, 81 insertions(+), 21 deletions(-) diff --git a/kernel/src/bbtkBlackBox.cxx b/kernel/src/bbtkBlackBox.cxx index b7a7ec7..d0e93b5 100644 --- a/kernel/src/bbtkBlackBox.cxx +++ b/kernel/src/bbtkBlackBox.cxx @@ -2,8 +2,8 @@ Program: bbtk Module: $RCSfile: bbtkBlackBox.cxx,v $ Language: C++ - Date: $Date: 2008/12/08 12:53:45 $ - Version: $Revision: 1.32 $ + Date: $Date: 2008/12/09 11:48:31 $ + Version: $Revision: 1.33 $ =========================================================================*/ /* --------------------------------------------------------------------- @@ -572,6 +572,11 @@ namespace bbtk void BlackBox::bbSetStatusAndPropagate(BlackBoxInputConnector* c, IOStatus s) { + bbtkDebugMessageInc("change",5, + "=> BlackBox::bbSetStatusAndPropagate(input," + <SetStatus(s); OutputConnectorMapType::const_iterator o; @@ -590,10 +595,13 @@ namespace bbtk (c==bbGetInputConnectorMap().find("BoxExecute")->second)) && (bbCanReact() ) ) { - bbtkDebugMessage("modified",2, + bbtkDebugMessage("change",2, "-> Execution triggered by Reactive mode or BoxExecute input change"<() ); } + bbtkDebugMessageInc("change",5, + "<= BlackBox::bbSetStatusAndPropagate(input) [" + < BlackBox::bbSignalOutputModification(" < BlackBox::bbSignalOutputModification(" <& output, bool reaction) { - bbtkDebugMessageInc("process",5, + bbtkDebugMessageInc("change",5, "=> BlackBox::bbSignalOutputModification(vector of outputs) [" <GetInputDescriptor(i->first)->GetTypeInfo() // == typeid(Void) ) // continue; + bbtkDebugMessageDec("change",2, + bbGetName()<<"."<first + <<" ["<second<<"] " + <<" status before update = '" + <second->GetStatus()) + <<"'"<second->BackwardUpdate(); IOStatus t = i->second->GetStatus(); if (t > s) s = t; + bbtkDebugMessageDec("change",2, + bbGetName()<<"."<first + <<" ["<second<<"] " + <<" status before process = '" + <second->GetStatus()) + <<"'"< BlackBox::bbComputePostProcessStatus() [" + <second->SetStatus(UPTODATE); + bbtkDebugMessage("change",2, + bbGetName()<<"."<first<<" : " + << GetIOStatusString(t) << " -> " + << GetIOStatusString(i->second->GetStatus()) + << std::endl); } - + bbtkDebugMessage("change",2, + bbGetName()<<" new output status : " + << GetIOStatusString(new_output_status) + <second->SetStatus(new_output_status); } + + bbtkDebugMessageInc("process",4, + "<= BlackBox::bbComputePostProcessStatus() [" + < BlackBoxInputConnector::BackwardUpdate()" - < BlackBoxInputConnector::BackwardUpdate() : " + <<"calling connection BackwardUpdate" + <BackwardUpdate(); } + else + { + bbtkDebugMessage("process",9, + "==> BlackBoxInputConnector::BackwardUpdate() : " + <<"input Up-to-date or Modified : nothing to do" + < Connection::BackwardUpdate() [" <bbGetOutputConnector(mOutput).GetStatus() == OUTOFDATE) - s = OUTOFDATE, + { + s = OUTOFDATE; + } mTo->bbGetInputConnector(mInput).SetStatus(s); - - bbtkDebugMessage("process",5, + + bbtkDebugMessage("process",3, + " --> '"<bbGetName()<<"."<bbGetInputConnector(mInput)<<"] " + <<"' new status '" + < Connection::OnOutputChange("< Connection::OnOutputChange(" + <