Salome HOME
WIP
[modules/yacs.git] / src / engine / ElementaryNode.cxx
index 129deaa1d701bbbc0466d8e007ea257854cb7697..d227016b9bfb3542e7209a44ed99752a91644b43 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2006-2019  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
@@ -47,11 +47,13 @@ using namespace std;
 ElementaryNode::ElementaryNode(const std::string& name):
   Node(name),
   _createDatastreamPorts(false),
-  _multi_port_node(false)
+  _multi_port_node(false),
+  _weight()
 {
+  _weight.setDefaultElementary();
 }
 
-ElementaryNode::ElementaryNode(const ElementaryNode& other, ComposedNode *father):Node(other,father)
+ElementaryNode::ElementaryNode(const ElementaryNode& other, ComposedNode *father):Node(other,father), _weight(other._weight)
 {
   _createDatastreamPorts = other._createDatastreamPorts;
   _multi_port_node = other._multi_port_node;
@@ -433,10 +435,10 @@ void ElementaryNode::getReadyTasks(std::vector<Task *>& tasks)
           std::string input_port_name = (*iter1)->getName();
           // Get Port Name in master node
           InputPort * master_port = getInputPort(input_port_name);
-          for (std::set<OutPort *>::const_iterator itt=master_port->_backLinks.begin(); itt!=master_port->_backLinks.end();itt++)
+          for (auto itt : master_port->_backLinks)
           {
             // Connect dataflow
-            getProc()->edAddDFLink((*itt),(*iter1));
+            getProc()->edAddDFLink(itt.first,(*iter1));
           }
         }
 
@@ -892,3 +894,10 @@ void ElementaryNode::getCoupledNodes(std::set<Task*>& coupledSet)
     }
 }
 
+void ElementaryNode::setWeight(double elementaryWeight)
+{
+  if(elementaryWeight<=0.)
+    throw Exception("ElementaryNode::setWeight : invalid input value !");
+  _weight.setElementaryWeight(elementaryWeight);
+}
+