1 // SUPERV GraphBase : contains fondamental classes for Services, Input Ports, Output Ports Links and Nodes.
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
24 // File : DataFlowBase_InPort.cxx
25 // Author : Jean Rahuel, CEA
30 #include "DataFlowBase_InPort.hxx"
31 #include "DataFlowBase_OutPort.hxx"
33 char ** _PortStateName ;
35 GraphBase::InPort::InPort() :
37 _PortState = SUPERV::UndefinedState ;
39 _InitialOutPort = NULL ;
42 GraphBase::InPort::InPort(
43 const char *const * Name ,
44 const SALOME_ModuleCatalog::ServicesParameter aserviceParameter ,
45 const SUPERV::KindOfPort aKind ,
46 const SALOME_ModuleCatalog::DataStreamDependency aDependency ) :
47 Port( Name , aserviceParameter , aKind , aDependency ) {
48 _PortState = SUPERV::UndefinedState ;
50 _InitialOutPort = NULL ;
53 //GraphBase::InPort::~InPort() {
54 // cout << "InPort::~InPort()" << endl ;
57 const StatusOfPort GraphBase::InPort::PortStatus() const {
59 return GetOutPort()->PortStatus() ;
64 bool GraphBase::InPort::IsNotConnected() const {
65 return ( GetOutPort() == NULL || GetOutPort()->IsNotConnected() ) ;
68 //bool GraphBase::InPort::IsConnected() const {
69 // return ( GetOutPort() && ( GetOutPort()->IsPortConnected() || GetOutPort()->IsExternConnected() ) ) ;
72 bool GraphBase::InPort::IsPortConnected() const {
73 return ( GetOutPort() && GetOutPort()->IsPortConnected() ) ;
76 bool GraphBase::InPort::IsDataConnected() const {
77 return ( GetOutPort() && GetOutPort()->IsDataConnected() ) ;
80 bool GraphBase::InPort::IsExternConnected() const {
81 return ( GetOutPort() && GetOutPort()->IsExternConnected() ) ;
84 void GraphBase::InPort::StringValue(ostream & f ) const {
86 GetOutPort()->StringValue( f ) ;
91 bool GraphBase::InPort::ChangeOutPort( OutPort * anOutPort ) {
93 // cdebug << "InPort::ChangeOutPort OutPort of InPort " << NodeName() << "( "
94 // << PortName() << " ) : " << _OutPort->NodeName() << "( "
95 // << _OutPort->PortName() << " ) changed to " << anOutPort->NodeName()
96 // << "( " << anOutPort->PortName() << " )" << endl ;
97 // cout << "InPort::ChangeOutPort OutPort of InPort " << NodeName() << "( "
98 // << PortName() << " ) : " << _OutPort->NodeName() << "( "
99 // << _OutPort->PortName() << " ) changed to " << anOutPort->NodeName()
100 // << "( " << anOutPort->PortName() << " )" << endl ;
102 if ( _InitialOutPort == NULL ) {
103 _InitialOutPort = _OutPort ;
105 _OutPort = anOutPort ;
109 bool GraphBase::InPort::RemoveOutPort() {
110 // Before to return the real status, callers should be checked ...
111 if ( _OutPort == NULL ) {
112 cdebug << "InPort::RemoveOutPort no OutPort in InPort " << PortName() << " of " << NodeName() << endl ;
115 cdebug << "InPort::RemoveOutPort " << _OutPort->NodeName() << "(" << _OutPort->PortName() << ") --> "
116 << NodeName() << "(" << PortName() << ") in InPort " << PortName() << " of " << NodeName() << endl ;
118 if ( !IsEndSwitch() ) {
122 Kind( SUPERV::InLineParameter ) ;
127 ostream & operator<< (ostream &f ,const GraphBase::InPort &P) {
128 f << P.PortName() << ", " << "type : " << P.PortType() << ", " << P.PortStatus() << ", " ;
129 f << "from Node " << P.NodeName() << ", ";
130 f << "kind " << P.Kind() << ", ";
131 f << "Status " << P.PortStatus() << ", ";
132 GraphBase::OutPort * anOutPort = P.GetOutPort() ;
134 f << "Linked from OutPort " << anOutPort->PortName() << ", " << "type : " << anOutPort->PortType() << ", " ;
135 f << "from Node " << anOutPort->NodeName() << ", ";
136 f << "kind " << anOutPort->Kind() << ", ";
137 f << "Status " << anOutPort->PortStatus() << ", ";
142 ostream & operator<< (ostream &f ,const SUPERV::GraphState & aPortState ) {
143 switch (aPortState) {
144 case SUPERV::UndefinedState :
145 f << "UndefinedState";
147 case SUPERV::NoState :
150 case SUPERV::EditingState :
153 case SUPERV::SuspendState :
156 case SUPERV::WaitingState :
159 case SUPERV::ReadyState :
162 case SUPERV::SuspendReadyState :
163 f << "SuspendReadyState";
165 case SUPERV::RunningState :
168 case SUPERV::DoneState :
171 case SUPERV::ErrorState :
174 case SUPERV::SuspendDoneState :
175 f << "SuspendDoneState";
177 case SUPERV::SuspendErroredState :
178 f << "SuspendErroredState";
180 case SUPERV::KillState :
183 case SUPERV::StopState :
187 f << "SUPERV::GraphState_?";