Salome HOME
Manage initnode and finalizenode in the foreachloop progress bar. refact_meth_progress_calculation
authorOvidiu Mircescu <ovidiu.mircescu@edf.fr>
Tue, 15 Sep 2015 15:55:11 +0000 (17:55 +0200)
committerOvidiu Mircescu <ovidiu.mircescu@edf.fr>
Tue, 15 Sep 2015 15:55:11 +0000 (17:55 +0200)
There is also some text format where tab was used for indentation.

src/engine/AnyInputPort.hxx
src/engine/ComposedNode.cxx
src/engine/ElementaryNode.cxx
src/engine/ForEachLoop.cxx
src/engine/ForLoop.cxx
src/engine/Proc.cxx
src/engine/Switch.cxx

index 7978410c5a20b65f2c2eaeda9ea394101d3e82bf..d329635c8e15f8831ab3a0691f456662958266c2 100644 (file)
@@ -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();
index 6475ef03b25d7aa89d957adf72965ecc6b34531e..69870fa47361573d05655d249615ade665cdeb68 100644 (file)
@@ -1139,13 +1139,13 @@ list<Node *> ComposedNode::getAllRecursiveNodes()
  */
 list<ProgressWeight> ComposedNode::getProgressWeight() const
 {
-       list<ProgressWeight> ret;
-       list<Node *> setOfNode=edGetDirectDescendants();
-       for(list<Node *>::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++)
-               {
-                 list<ProgressWeight> myCurrentSet=((ComposedNode*)(*iter))->getProgressWeight();
-                       ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end());
-               }
+  list<ProgressWeight> ret;
+  list<Node *> setOfNode=edGetDirectDescendants();
+  for(list<Node *>::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++)
+    {
+      list<ProgressWeight> myCurrentSet=((ComposedNode*)(*iter))->getProgressWeight();
+      ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end());
+    }
   return ret;
 }
 
index e628ae6369d6b5b35cbd6e7f85b3fc1ce4a1d148..a2dd127df25324571d0b3591038c75fd6c90e9a0 100644 (file)
@@ -554,14 +554,14 @@ list<ElementaryNode *> ElementaryNode::getRecursiveConstituents() const
  */
 list<ProgressWeight> ElementaryNode::getProgressWeight() const
 {
-       list<ProgressWeight> ret;
-       ProgressWeight myWeight;
-       myWeight.weightTotal=1;
-       if (getState() == YACS::DONE)
-         myWeight.weightDone=1;
-       else
-               myWeight.weightDone=0;
-       ret.push_back(myWeight);
+  list<ProgressWeight> ret;
+  ProgressWeight myWeight;
+  myWeight.weightTotal=1;
+  if (getState() == YACS::DONE)
+    myWeight.weightDone=1;
+  else
+    myWeight.weightDone=0;
+  ret.push_back(myWeight);
   return ret;
 }
 
index 371bb8de3c272b99c9e6d2a4f5b33e274fa84d0d..3b9dec62cb8baa4e7fe63f4971cda31e067cb6ab 100644 (file)
@@ -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<ProgressWeight> ForEachLoop::getProgressWeight() const
 {
-       list<ProgressWeight> ret;
-       list<Node *> setOfNode=edGetDirectDescendants();
-       int elemDone=getCurrentIndex();
-       int elemTotal=getNbOfElementsToBeProcessed();
-       for(list<Node *>::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++)
-         {
-                 list<ProgressWeight> myCurrentSet=(*iter)->getProgressWeight();
-                       for(list<ProgressWeight>::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<ProgressWeight> ret;
+  list<Node *> setOfNode=edGetDirectDescendants();
+  int elemDone=getCurrentIndex();
+  int elemTotal=getNbOfElementsToBeProcessed();
+  for(list<Node *>::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++)
+    {
+      list<ProgressWeight> myCurrentSet=(*iter)->getProgressWeight();
+      for(list<ProgressWeight>::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) ;
 }
 
 /*!
index 94e3167b22e52d95e6bafabe67736b5442652a8f..140a949828c5c75c5e11deefbbf7797294a1b09c 100644 (file)
@@ -296,21 +296,20 @@ std::string ForLoop::getProgress() const
  */
 list<ProgressWeight> ForLoop::getProgressWeight() const
 {
-       list<ProgressWeight> ret;
-       list<Node *> setOfNode=edGetDirectDescendants();
-       int nbStepsDone=getNbOfTurns();
-       int nbStepsTotal=getNbSteps();
-       for(list<Node *>::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++)
-         {
-                 list<ProgressWeight> myCurrentSet=(*iter)->getProgressWeight();
-                       for(list<ProgressWeight>::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<ProgressWeight> ret;
+  list<Node *> setOfNode=edGetDirectDescendants();
+  int nbStepsDone=getNbOfTurns();
+  int nbStepsTotal=getNbSteps();
+  for(list<Node *>::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++)
+    {
+      list<ProgressWeight> myCurrentSet=(*iter)->getProgressWeight();
+        for(list<ProgressWeight>::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;
 }
 
index 7e777d22f99b8e5783a102408f51ac679bae57f7..2eaaddaebe1799ec09b25fb53ee6be51f3f25c23 100644 (file)
@@ -232,17 +232,17 @@ std::string Proc::getNodeProgress(int numId)
 
 int Proc::getGlobalProgressPercent()
 {
-       list<ProgressWeight> weightList = getProgressWeight();
-       int weightDone = 0;
-       int weightTotal = 0;
-       int progressPercent = 0;
-       for(list<ProgressWeight>::const_iterator iter=weightList.begin();iter!=weightList.end();iter++)
-         {
-                 weightDone += (*iter).weightDone;
-                       weightTotal += (*iter).weightTotal;
-         }
+  list<ProgressWeight> weightList = getProgressWeight();
+  int weightDone = 0;
+  int weightTotal = 0;
+  int progressPercent = 0;
+  for(list<ProgressWeight>::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;
 }
 
index c196cc2db6c788f1784f9b100ce9d82aa5bb8178..571d6a1266bde6a79f187b0e48c806fa30c03be1 100644 (file)
@@ -587,25 +587,25 @@ int Switch::getMaxCase()
  */
 list<ProgressWeight> Switch::getProgressWeight() const
 {
-       list<ProgressWeight> ret;
-       list<Node *> setOfNode=edGetDirectDescendants();
-       if (getState() == YACS::DONE)
-         {
-                 for(list<Node *>::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++)
-             {
-                     if (getEffectiveState(*iter) == YACS::DONE)
-                         ret=(*iter)->getProgressWeight();
-             }
-         }
-       else
-         {
-           for(list<Node *>::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++)
+  list<ProgressWeight> ret;
+  list<Node *> setOfNode=edGetDirectDescendants();
+  if (getState() == YACS::DONE)
+    {
+      for(list<Node *>::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++)
+      {
+        if (getEffectiveState(*iter) == YACS::DONE)
+          ret=(*iter)->getProgressWeight();
+      }
+    }
+  else
+    {
+      for(list<Node *>::const_iterator iter=setOfNode.begin();iter!=setOfNode.end();iter++)
         {
-                 list<ProgressWeight> myCurrentSet=(*iter)->getProgressWeight();
-                 ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end());
+          list<ProgressWeight> myCurrentSet=(*iter)->getProgressWeight();
+          ret.insert(ret.end(),myCurrentSet.begin(),myCurrentSet.end());
         }
-         }
-       return ret;
+    }
+  return ret;
 }
 
 bool Switch::edAddChild(Node *node) throw(YACS::Exception)