Salome HOME
Merge branch 'V7_dev'
[modules/yacs.git] / src / engine / Bloc.hxx
index 7560f712492d06c922e4e929dd36e5a2fe3e1fd5..3cfec917263b5eab4445c9a4d2530a135dca5d40 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2015  CEA/DEN, EDF R&D
+// Copyright (C) 2006-2016  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -61,6 +61,7 @@ namespace YACS
       void findAllNodesStartingFrom(Node *start, std::set<Node *>& result, std::map<Node *, std::set<Node *> >& accelStr, LinkInfo& info) const;
       virtual std::string typeName() { return "YACS__ENGINE__Bloc"; }
       int getMaxLevelOfParallelism() const;
+      void removeRecursivelyRedundantCL();
     protected:
       bool areAllSubNodesFinished() const;
       bool areAllSubNodesDone() const;
@@ -70,6 +71,7 @@ namespace YACS
       YACS::Event updateStateOnFinishedEventFrom(Node *node);
       YACS::Event updateStateOnFailedEventFrom(Node *node, const Executor *execInst);
       void initComputation() const;
+      void performCFComputationsOnlyOneLevel(LinkInfo& info) const;
       void performCFComputations(LinkInfo& info) const;
       void destructCFComputations(LinkInfo& info) const;
       void checkControlDependancy(OutPort *start, InPort *end, bool cross,
@@ -110,8 +112,8 @@ namespace YACS
     template<>
     struct CFDirectionVisTraits<false>
     {
-      typedef std::map<OutGate *,bool>::iterator Iterator;
-      typedef std::map<OutGate *,bool>& Nexts;
+      typedef std::list< std::pair<OutGate *,bool> >::iterator Iterator;
+      typedef std::list< std::pair<OutGate *,bool> >& Nexts;
       static Nexts getNexts(Node *node) { return node->getInGate()->edMapOutGate(); }
     };