-// Copyright (C) 2006-2014 CEA/DEN, EDF R&D
+// Copyright (C) 2006-2015 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
setState(YACS::READY);
}
+/*!
+ * This method clones \a this by :
+ *
+ * - deep copying nodes, links, ports, types
+ * - containers are either deep copied or shallow copied depending on _isAttachedOnCloning attribute.
+ * - component are either deep copied or shallow copied depending on _isAttachedOnCloning attribute.
+ *
+ * So \b this \b method \b clone \b is \b dedicated \b for \b DynParaLoop \b class \b or \b subclasses.
+ * It \b should \b not \b be \b used \b elsewhere, because
+ * _isAttachedOnCloning attribute is an attribute in the engine not for GUI/TUI aspects.
+ * For GUI/TUI manipulation cloneWithoutCompAndContDeepCpy method should be used preferably.
+ *
+ * \param [in] father - The new father of the returned clone.
+ * \param [in] editionOnly ignored
+ *
+ * \sa cloneWithoutCompAndContDeepCpy
+ */
Node *Node::clone(ComposedNode *father, bool editionOnly) const
{
- Node *ret=simpleClone(father,editionOnly);
+ Node *ret(simpleClone(father,editionOnly));
ret->performDuplicationOfPlacement(*this);
return ret;
}
+/*!
+ * This method clones \a this by :
+ * - deep copying nodes, links, ports, types
+ * - shallow copy containers
+ * - shallow copy components
+ *
+ * So this method simply ignores isAttachedOnCloning attribute for both containers and components.
+ * So this method is dedicated for the GUI/TUI users.
+ *
+ * \param [in] father - The new father of the returned clone.
+ * \param [in] editionOnly ignored
+ */
+Node *Node::cloneWithoutCompAndContDeepCpy(ComposedNode *father, bool editionOnly) const
+{
+ Node *ret(simpleClone(father,editionOnly));
+ ret->performShallowDuplicationOfPlacement(*this);
+ return ret;
+}
+
//! Change the name of the node
/*!
* raise an exception if the name is already used in the scope of its father
* get the set of all nodes connected to the outGate
*/
-set<Node *> Node::getOutNodes() const
+list<Node *> Node::getOutNodes() const
{
- set<Node *> ret;
- set<InGate *> inGates=_outGate.edSetInGate();
- for(set<InGate *>::iterator iter=inGates.begin();iter!=inGates.end();iter++)
- ret.insert((*iter)->getNode());
+ list<Node *> ret;
+ list<InGate *> inGates=_outGate.edSetInGate();
+ for(list<InGate *>::iterator iter=inGates.begin();iter!=inGates.end();iter++)
+ ret.push_back((*iter)->getNode());
return ret;
}
void Node::resetState(int level)
{
DEBTRACE("Node::resetState " << getName() << "," << level << "," << _state);
- if(_state==YACS::ERROR || _state==YACS::FAILED)
+ if(_state==YACS::ERROR || _state==YACS::FAILED || _state==YACS::ACTIVATED)
{
setState(YACS::READY);
InGate* inGate = getInGate();