+ //==================================================================
+ /// Computes the final IOStatus of inputs and outputs after processing
+ void BlackBox::bbComputePostProcessStatus()
+ {
+ bbtkDebugMessageInc("process",4,
+ "=> BlackBox::bbComputePostProcessStatus() ["
+ <<bbGetFullName()<<"]"
+ <<std::endl);
+
+ IOStatus new_output_status = UPTODATE;
+ if (bbBoxProcessModeIsAlways()) new_output_status = OUTOFDATE;
+
+ // Update the input statuses
+ InputConnectorMapType::iterator i;
+ for ( i = bbGetInputConnectorMap().begin();
+ i!= bbGetInputConnectorMap().end(); ++i)
+ {
+ IOStatus t = i->second->GetStatus();
+ if (t == OUTOFDATE) new_output_status = OUTOFDATE;
+ // A previously MODIFIED status turns to UPTODATE
+ if (t==MODIFIED) i->second->SetStatus(UPTODATE);
+ bbtkDebugMessage("change",2,
+ bbGetName()<<"."<<i->first<<" : "
+ << GetIOStatusString(t) << " -> "
+ << GetIOStatusString(i->second->GetStatus())
+ << std::endl);
+ }
+ bbtkDebugMessage("change",2,
+ bbGetName()<<" new output status : "
+ << GetIOStatusString(new_output_status)
+ <<std::endl);
+ // Update the output statuses
+ OutputConnectorMapType::iterator o;
+ for ( o = bbGetOutputConnectorMap().begin();
+ o!= bbGetOutputConnectorMap().end(); ++o)
+ {
+ o->second->SetStatus(new_output_status);
+ }
+
+ bbtkDebugMessageInc("process",4,
+ "<= BlackBox::bbComputePostProcessStatus() ["
+ <<bbGetFullName()<<"]"
+ <<std::endl);
+
+ }
+ //==================================================================
+