From: Ovidiu Mircescu Date: Tue, 15 Sep 2015 15:55:11 +0000 (+0200) Subject: Manage initnode and finalizenode in the foreachloop progress bar. X-Git-Tag: V7_7_0b1~1^2 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=d43f5989bbbd14821954b71167be3477ddc2980a;p=modules%2Fyacs.git Manage initnode and finalizenode in the foreachloop progress bar. There is also some text format where tab was used for indentation. --- diff --git a/src/engine/AnyInputPort.hxx b/src/engine/AnyInputPort.hxx index 7978410c5..d329635c8 100644 --- a/src/engine/AnyInputPort.hxx +++ b/src/engine/AnyInputPort.hxx @@ -39,7 +39,7 @@ namespace YACS void exSaveInit(); void exRestoreInit(); Any *getValue() const { return _value; } - int getIntValue() const { return _value->getIntValue(); } + int getIntValue() const { return _value ? _value->getIntValue():0; } void put(Any *data); void *get() const; virtual std::string getAsString(); diff --git a/src/engine/ComposedNode.cxx b/src/engine/ComposedNode.cxx index 6475ef03b..69870fa47 100644 --- a/src/engine/ComposedNode.cxx +++ b/src/engine/ComposedNode.cxx @@ -1139,13 +1139,13 @@ list ComposedNode::getAllRecursiveNodes() */ list ComposedNode::getProgressWeight() const { - list ret; - list setOfNode=edGetDirectDescendants(); - for(list::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++) - { - list myCurrentSet=((ComposedNode*)(*iter))->getProgressWeight(); - ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end()); - } + list ret; + list setOfNode=edGetDirectDescendants(); + for(list::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++) + { + list myCurrentSet=((ComposedNode*)(*iter))->getProgressWeight(); + ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end()); + } return ret; } diff --git a/src/engine/ElementaryNode.cxx b/src/engine/ElementaryNode.cxx index e628ae636..a2dd127df 100644 --- a/src/engine/ElementaryNode.cxx +++ b/src/engine/ElementaryNode.cxx @@ -554,14 +554,14 @@ list ElementaryNode::getRecursiveConstituents() const */ list ElementaryNode::getProgressWeight() const { - list ret; - ProgressWeight myWeight; - myWeight.weightTotal=1; - if (getState() == YACS::DONE) - myWeight.weightDone=1; - else - myWeight.weightDone=0; - ret.push_back(myWeight); + list ret; + ProgressWeight myWeight; + myWeight.weightTotal=1; + if (getState() == YACS::DONE) + myWeight.weightDone=1; + else + myWeight.weightDone=0; + ret.push_back(myWeight); return ret; } diff --git a/src/engine/ForEachLoop.cxx b/src/engine/ForEachLoop.cxx index 371bb8de3..3b9dec62c 100644 --- a/src/engine/ForEachLoop.cxx +++ b/src/engine/ForEachLoop.cxx @@ -741,6 +741,7 @@ YACS::Event ForEachLoop::updateStateForInitNodeOnFinishedEventFrom(Node *node, u _execNodes[id]->exUpdateState(); _nbOfEltConsumed++; _initializingCounter--; + _currentIndex++; if (_initializingCounter == 0) _initNode->setState(DONE); return YACS::NOEVENT; @@ -1110,27 +1111,29 @@ std::string ForEachLoop::getProgress() const */ list ForEachLoop::getProgressWeight() const { - list ret; - list setOfNode=edGetDirectDescendants(); - int elemDone=getCurrentIndex(); - int elemTotal=getNbOfElementsToBeProcessed(); - for(list::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++) - { - list myCurrentSet=(*iter)->getProgressWeight(); - for(list::iterator iter=myCurrentSet.begin();iter!=myCurrentSet.end();iter++) - { - (*iter).weightDone=((*iter).weightTotal) * elemDone; - (*iter).weightTotal*=elemTotal; - } - ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end()); - - } - return ret; + list ret; + list setOfNode=edGetDirectDescendants(); + int elemDone=getCurrentIndex(); + int elemTotal=getNbOfElementsToBeProcessed(); + for(list::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++) + { + list myCurrentSet=(*iter)->getProgressWeight(); + for(list::iterator iter=myCurrentSet.begin();iter!=myCurrentSet.end();iter++) + { + (*iter).weightDone=((*iter).weightTotal) * elemDone; + (*iter).weightTotal*=elemTotal; + } + ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end()); + } + return ret; } int ForEachLoop::getNbOfElementsToBeProcessed() const { - return _splitterNode.getNumberOfElements(); + int nbBranches = _nbOfBranches.getIntValue(); + return _splitterNode.getNumberOfElements() + + (_initNode ? nbBranches:0) + + (_finalizeNode ? nbBranches:0) ; } /*! diff --git a/src/engine/ForLoop.cxx b/src/engine/ForLoop.cxx index 94e3167b2..140a94982 100644 --- a/src/engine/ForLoop.cxx +++ b/src/engine/ForLoop.cxx @@ -296,21 +296,20 @@ std::string ForLoop::getProgress() const */ list ForLoop::getProgressWeight() const { - list ret; - list setOfNode=edGetDirectDescendants(); - int nbStepsDone=getNbOfTurns(); - int nbStepsTotal=getNbSteps(); - for(list::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++) - { - list myCurrentSet=(*iter)->getProgressWeight(); - for(list::iterator iter=myCurrentSet.begin();iter!=myCurrentSet.end();iter++) - { - (*iter).weightDone=((*iter).weightTotal) * nbStepsDone; - (*iter).weightTotal*=nbStepsTotal; - } - ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end()); - - } - return ret; + list ret; + list setOfNode=edGetDirectDescendants(); + int nbStepsDone=getNbOfTurns(); + int nbStepsTotal=getNbSteps(); + for(list::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++) + { + list myCurrentSet=(*iter)->getProgressWeight(); + for(list::iterator iter=myCurrentSet.begin();iter!=myCurrentSet.end();iter++) + { + (*iter).weightDone=((*iter).weightTotal) * nbStepsDone; + (*iter).weightTotal*=nbStepsTotal; + } + ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end()); + } + return ret; } diff --git a/src/engine/Proc.cxx b/src/engine/Proc.cxx index 7e777d22f..2eaaddaeb 100644 --- a/src/engine/Proc.cxx +++ b/src/engine/Proc.cxx @@ -232,17 +232,17 @@ std::string Proc::getNodeProgress(int numId) int Proc::getGlobalProgressPercent() { - list weightList = getProgressWeight(); - int weightDone = 0; - int weightTotal = 0; - int progressPercent = 0; - for(list::const_iterator iter=weightList.begin();iter!=weightList.end();iter++) - { - weightDone += (*iter).weightDone; - weightTotal += (*iter).weightTotal; - } + list weightList = getProgressWeight(); + int weightDone = 0; + int weightTotal = 0; + int progressPercent = 0; + for(list::const_iterator iter=weightList.begin();iter!=weightList.end();iter++) + { + weightDone += (*iter).weightDone; + weightTotal += (*iter).weightTotal; + } if (weightTotal > 0) - progressPercent = int(float(weightDone) / float(weightTotal) * 100); + progressPercent = int(float(weightDone) / float(weightTotal) * 100); return progressPercent; } diff --git a/src/engine/Switch.cxx b/src/engine/Switch.cxx index c196cc2db..571d6a126 100644 --- a/src/engine/Switch.cxx +++ b/src/engine/Switch.cxx @@ -587,25 +587,25 @@ int Switch::getMaxCase() */ list Switch::getProgressWeight() const { - list ret; - list setOfNode=edGetDirectDescendants(); - if (getState() == YACS::DONE) - { - for(list::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++) - { - if (getEffectiveState(*iter) == YACS::DONE) - ret=(*iter)->getProgressWeight(); - } - } - else - { - for(list::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++) + list ret; + list setOfNode=edGetDirectDescendants(); + if (getState() == YACS::DONE) + { + for(list::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++) + { + if (getEffectiveState(*iter) == YACS::DONE) + ret=(*iter)->getProgressWeight(); + } + } + else + { + for(list::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++) { - list myCurrentSet=(*iter)->getProgressWeight(); - ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end()); + list myCurrentSet=(*iter)->getProgressWeight(); + ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end()); } - } - return ret; + } + return ret; } bool Switch::edAddChild(Node *node) throw(YACS::Exception)