From c9208a8ef7f32a620d9650908588320ff159a167 Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Tue, 17 Mar 2020 11:30:17 +0100 Subject: [PATCH] WIP --- src/engine/ForEachLoop.cxx | 8 +++++--- src/engine/NbBranches.cxx | 10 ++++++++++ src/engine/NbBranches.hxx | 3 +++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/engine/ForEachLoop.cxx b/src/engine/ForEachLoop.cxx index 76eebb5a7..bafdb85d6 100644 --- a/src/engine/ForEachLoop.cxx +++ b/src/engine/ForEachLoop.cxx @@ -526,7 +526,8 @@ void ForEachLoop::exUpdateState() { //internal graph update int i; - int nbOfBr(_nbOfBranches->getIntValue()),nbOfElts(_splitterNode.getNumberOfElements()),nbOfEltsDone(0); + int nbOfElts(_splitterNode.getNumberOfElements()),nbOfEltsDone(0); + int nbOfBr(_nbOfBranches->getNumberOfBranches(nbOfElts)); if(_passedData) { _passedData->checkCompatibilyWithNb(nbOfElts); @@ -1168,8 +1169,9 @@ list ForEachLoop::getProgressWeight() const int ForEachLoop::getNbOfElementsToBeProcessed() const { - int nbBranches = _nbOfBranches->getIntValue(); - return _splitterNode.getNumberOfElements() + int nbOfElems(_splitterNode.getNumberOfElements()); + int nbBranches = _nbOfBranches->getNumberOfBranches(nbOfElems); + return nbOfElems + (_initNode ? nbBranches:0) + (_finalizeNode ? nbBranches:0) ; } diff --git a/src/engine/NbBranches.cxx b/src/engine/NbBranches.cxx index bf7a8e119..fe7ae53d3 100644 --- a/src/engine/NbBranches.cxx +++ b/src/engine/NbBranches.cxx @@ -33,6 +33,11 @@ std::unique_ptr NbBranches::copy(Node *node) const return std::unique_ptr(new NbBranches(*this,node)); } +int NbBranches::getNumberOfBranches(int) const +{ + return this->getIntValue(); +} + bool NbBranches::isMyName(const std::string& name) const { return NbBranchesAbstract::IsBranchPortName(name); @@ -70,6 +75,11 @@ std::unique_ptr NoNbBranches::copy(Node *) const return std::unique_ptr(new NoNbBranches); } +int NoNbBranches::getNumberOfBranches(int nbOfElems) const +{ + return nbOfElems; +} + void NoNbBranches::exInit(bool start) { } diff --git a/src/engine/NbBranches.hxx b/src/engine/NbBranches.hxx index a9cca28f3..8268b4c7e 100644 --- a/src/engine/NbBranches.hxx +++ b/src/engine/NbBranches.hxx @@ -33,6 +33,7 @@ namespace YACS { public: virtual std::unique_ptr copy(Node *node) const = 0; + virtual int getNumberOfBranches(int nbOfElems) const = 0; virtual bool isMyName(const std::string& name) const = 0; virtual void exInit(bool start) = 0; virtual InputPort *getPort() const = 0; @@ -51,6 +52,7 @@ namespace YACS NbBranches(const NbBranches& other, Node *node):_nbOfBranches(other._nbOfBranches,node) { } bool isMyName(const std::string& name) const override; std::unique_ptr copy(Node *node) const override; + int getNumberOfBranches(int nbOfElems) const override; void exInit(bool start) override; InputPort *getPort() const override; bool isMultiplicitySpecified(unsigned& value) const override; @@ -65,6 +67,7 @@ namespace YACS public: NoNbBranches() = default; std::unique_ptr copy(Node *node) const override; + int getNumberOfBranches(int nbOfElems) const override; bool isMyName(const std::string& name) const override { return false; } void exInit(bool start) override; InputPort *getPort() const override; -- 2.39.2