From: Anthony Geay Date: Thu, 1 Oct 2015 16:44:30 +0000 (+0200) Subject: Change implementation of getMaxLevelOfPara. X-Git-Tag: V8_0_pre~21 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=d7fbbabe5e1878abb6d0513ece99a9d94bcd07dc;p=modules%2Fyacs.git Change implementation of getMaxLevelOfPara. --- diff --git a/src/engine/Bloc.cxx b/src/engine/Bloc.cxx index 6395112b5..a3dcd3899 100644 --- a/src/engine/Bloc.cxx +++ b/src/engine/Bloc.cxx @@ -25,6 +25,7 @@ #include "OutputDataStreamPort.hxx" #include "ElementaryNode.hxx" #include "Visitor.hxx" +#include "SetOfPoints.hxx" #include #include @@ -452,37 +453,15 @@ void Bloc::accept(Visitor* visitor) */ int Bloc::getMaxLevelOfParallelism() const { - std::set s(_setOfNode.begin(),_setOfNode.end()); - for(std::set::const_iterator it=s.begin();it!=s.end();it++) - (*it)->_colour=White; - std::vector levs; - while(!s.empty()) + std::vector< std::list > r(splitIntoIndependantGraph()); + int ret(0); + for(std::vector< std::list >::const_iterator it=r.begin();it!=r.end();it++) { - Node *seed(*(s.begin())); - int myCurLev(0); - while(seed) - { - s.erase(seed); - std::set ingates(seed->getOutGate()->edSetInGate()); - int myCurLev2(seed->getMaxLevelOfParallelism()); - for(std::set::const_iterator it=ingates.begin();it!=ingates.end();it++) - { - Node *curNode((*it)->getNode()); - curNode->_colour=Grey; - myCurLev2=std::max(curNode->getMaxLevelOfParallelism(),myCurLev2); - } - myCurLev=std::max(myCurLev,myCurLev2); - seed=0; - for(std::set::const_iterator it=s.begin();it!=s.end();it++) - if((*it)->_colour==Grey) - { - seed=*it; - break; - } - } - levs.push_back(myCurLev); + SetOfPoints sop(*it); + sop.simplify(); + ret+=sop.getMaxLevelOfParallelism(); } - return std::accumulate(levs.begin(),levs.end(),0); + return ret; } /*!