]> SALOME platform Git repositories - modules/superv.git/blob - src/GraphBase/DataFlowBase_InPort.cxx
Salome HOME
DCQ:prepare 2.0.0
[modules/superv.git] / src / GraphBase / DataFlowBase_InPort.cxx
1 //  SUPERV GraphBase : contains fondamental classes for Services, Input Ports, Output Ports Links and Nodes.
2 //
3 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
5 // 
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. 
10 // 
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. 
15 // 
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 
19 // 
20 //  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
21 //
22 //
23 //
24 //  File   : DataFlowBase_InPort.cxx
25 //  Author : Jean Rahuel, CEA
26 //  Module : SUPERV
27 //  $Header:
28
29 using namespace std;
30 #include "DataFlowBase_InPort.hxx"
31 #include "DataFlowBase_OutPort.hxx"
32
33 char ** _PortStateName ;
34
35 GraphBase::InPort::InPort() :
36            Port() {
37   _State = SUPERV::UndefinedState ;
38   _OutPort = NULL ;
39   _InitialOutPort = NULL ;
40 }
41
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   _State = SUPERV::UndefinedState ;
49   _OutPort = NULL ;
50   _InitialOutPort = NULL ;
51 }
52
53 //GraphBase::InPort::~InPort() {
54 //  cout << "InPort::~InPort()" << endl ;
55 //}
56
57 const StatusOfPort GraphBase::InPort::PortStatus() const {
58   if ( GetOutPort() ) {
59     return GetOutPort()->PortStatus() ;
60   }
61   return NotConnected ;
62 }
63
64 bool GraphBase::InPort::IsNotConnected() const {
65   return ( GetOutPort() == NULL || GetOutPort()->IsNotConnected() ) ;
66 }
67
68 //bool GraphBase::InPort::IsConnected() const {
69 //  return ( GetOutPort() && ( GetOutPort()->IsPortConnected() || GetOutPort()->IsExternConnected() ) ) ;
70 //}
71
72 bool GraphBase::InPort::IsPortConnected() const {
73   return ( GetOutPort() && GetOutPort()->IsPortConnected() ) ;
74 }
75
76 bool GraphBase::InPort::IsDataConnected() const {
77   return ( GetOutPort() && GetOutPort()->IsDataConnected() ) ;
78 }
79
80 bool GraphBase::InPort::IsExternConnected() const {
81   return ( GetOutPort() && GetOutPort()->IsExternConnected() ) ;
82 }
83
84 void GraphBase::InPort::StringValue(ostream & f ) const {
85   if ( GetOutPort() )
86     GetOutPort()->StringValue( f ) ;
87   else
88     f << "(undefined)" ;
89 }
90
91 bool GraphBase::InPort::RemoveOutPort() {
92 // Before to return the real status, callers should be checked ...
93   if ( _OutPort == NULL ) {
94     cdebug << "InPort::RemoveOutPort no OutPort in InPort " << PortName() << " of " << NodeName() << endl ;
95     return false ;
96   }
97   cdebug << "InPort::RemoveOutPort " << _OutPort->NodeName() << "(" << _OutPort->PortName() << ") --> "
98          << NodeName() << "(" << PortName() << ") in InPort " << PortName() << " of " << NodeName() << endl ;
99   _OutPort = NULL ;
100   if ( !IsEndSwitch() ) {
101     RemoveCoords() ;
102   }
103   return true ;
104 }
105
106 ostream & operator<< (ostream &f ,const GraphBase::InPort &P) {
107   f << P.PortName() << ", " << "type : " << P.PortType() << ", " << P.PortStatus() << ", " ;
108   f << "from Node " << P.NodeName() << ", ";
109   f << "kind " << P.Kind() << ", ";
110   f << "Status " << P.PortStatus() << ", ";
111   GraphBase::OutPort * anOutPort = P.GetOutPort() ;
112   if ( anOutPort ) {
113     f << "Linked from OutPort " << anOutPort->PortName() << ", " << "type : " << anOutPort->PortType() << ", " ;
114     f << "from Node " << anOutPort->NodeName() << ", ";
115     f << "kind " << anOutPort->Kind() << ", ";
116     f << "Status " << anOutPort->PortStatus() << ", ";
117   }
118   return f;
119 }
120
121 ostream & operator<< (ostream &f ,const SUPERV::GraphState & aState ) {
122   switch (aState) {
123   case SUPERV::UndefinedState :
124     f << "UndefinedState";
125     break;
126   case SUPERV::NoState :
127     f << "NoState";
128     break;
129   case SUPERV::EditingState :
130     f << "EditingState";
131     break;
132   case SUPERV::SuspendState :
133     f << "SuspendState";
134     break;
135   case SUPERV::WaitingState :
136     f << "WaitingState";
137     break;
138   case SUPERV::ReadyState :
139     f << "ReadyState";
140     break;
141   case SUPERV::SuspendReadyState :
142     f << "SuspendReadyState";
143     break;
144   case SUPERV::RunningState :
145     f << "RunningState";
146     break;
147   case SUPERV::DoneState :
148     f << "DoneState";
149     break;
150   case SUPERV::ErrorState :
151     f << "ErrorState";
152     break;
153   case SUPERV::SuspendDoneState :
154     f << "SuspendDoneState";
155     break;
156   case SUPERV::SuspendErroredState :
157     f << "SuspendErroredState";
158     break;
159   case SUPERV::KillState :
160     f << "KillState";
161     break;
162   case SUPERV::StopState :
163     f << "StopState";
164     break;
165   case SUPERV::ReRunState :
166     f << "ReRunState";
167     break;
168   case SUPERV::ReStartState :
169     f << "ReStartState";
170     break;
171   default :
172     f << "SUPERV::GraphState_?";
173     break;
174   }
175
176   return f;
177 }
178