Salome HOME
[EDF27816] Management of double foreach and management of proxyfile lifecycle
[modules/yacs.git] / src / engine / ConditionInputPort.cxx
index 8cc4f3e95ae40dada169eb69ed16f195a06faf51..0929d11089be426c43d95edb04c67c0335ae6b14 100644 (file)
@@ -1,3 +1,22 @@
+// Copyright (C) 2006-2023  CEA, EDF
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
 #include "ConditionInputPort.hxx"
 #include "WhileLoop.hxx"
 #include "OutputPort.hxx"
@@ -54,16 +73,15 @@ bool ConditionInputPort::isLinkedOutOfScope() const
   return _outOfScopeBackLink!=0;
 }
 
-void ConditionInputPort::edNotifyReferencedBy(OutPort *fromPort)
+void ConditionInputPort::edNotifyReferencedBy(OutPort *fromPort, bool isLoopProof)
 {
   if(!((ComposedNode*)(_node))->isInMyDescendance(fromPort->getNode()))
     {
       if(_outOfScopeBackLink)
         throw Exception("ConditionInputPort::edNotifyReferenced : already linked from outside");
       _outOfScopeBackLink=fromPort;
-      return ;
     }
-  InputPort::edNotifyReferencedBy(fromPort);
+  InputPort::edNotifyReferencedBy(fromPort,isLoopProof);
 }
 
 void ConditionInputPort::edNotifyDereferencedBy(OutPort *fromPort)
@@ -81,12 +99,22 @@ void *ConditionInputPort::get() const
   return (void *)_value;
 }
 
-void ConditionInputPort::put(const void *data) throw(ConversionException)
+void ConditionInputPort::put(const void *data)
+{
+  put((Any*)data);
+}
+
+void ConditionInputPort::releaseData()
 {
-  Any *dataCst=(Any *)data;
   if(_value)
     _value->decrRef();
-  _value=dataCst;
+  _value=nullptr;
+}
+
+void ConditionInputPort::put(Any *data)
+{
+  ConditionInputPort::releaseData();
+  _value=data;
   _value->incrRef();
 }    
 
@@ -99,3 +127,9 @@ std::string ConditionInputPort::dump()
     xmldump="<value><boolean>false</boolean></value>\n";
   return xmldump;
 }
+
+std::string ConditionInputPort::getAsString()
+{
+  return (getValue() ? "True" : "False");
+}
+