X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Fengine%2FNode.cxx;h=774e670e07f5ae76146b0f3763c355adfe3852d5;hb=f31c1aa1cf3481bf51166f0c4e3dd118bc3ab43b;hp=b8c40da7fb1cf92772c9738ef3a3342791d5d43f;hpb=88c5f67088445931a1598331e1faae6df0145c0b;p=modules%2Fyacs.git diff --git a/src/engine/Node.cxx b/src/engine/Node.cxx index b8c40da7f..774e670e0 100644 --- a/src/engine/Node.cxx +++ b/src/engine/Node.cxx @@ -1,4 +1,4 @@ -// 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 @@ -107,13 +107,49 @@ void Node::init(bool start) 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 @@ -141,12 +177,12 @@ void Node::setName(const std::string& name) * get the set of all nodes connected to the outGate */ -set Node::getOutNodes() const +list Node::getOutNodes() const { - set ret; - set inGates=_outGate.edSetInGate(); - for(set::iterator iter=inGates.begin();iter!=inGates.end();iter++) - ret.insert((*iter)->getNode()); + list ret; + list inGates=_outGate.edSetInGate(); + for(list::iterator iter=inGates.begin();iter!=inGates.end();iter++) + ret.push_back((*iter)->getNode()); return ret; } @@ -735,7 +771,7 @@ void Node::cleanNodes() 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();