Salome HOME
Fix for bug IPAL9558 : Maintainance Mandrake porting: black rectangle in table view.
[modules/superv.git] / src / GraphBase / DataFlowBase_InPort.hxx
index 497270dc01440c50b6f5c5ca57a11484ba172329..89217ab92de84f71768599827720291c1d53288c 100644 (file)
@@ -37,21 +37,20 @@ namespace GraphBase {
 
   class InPort : public Port {
 
-    SUPERV::GraphState   _State ;
-    OutPort *            _OutPort ;
-    OutPort *            _InitialOutPort ;
+    private:
+
+      SUPERV::GraphState   _PortState ;
+      OutPort *            _OutPort ;
+      OutPort *            _InitialOutPort ;
+      bool                 _BranchOfSwitchLinked ; // For Check from Branches to EndOfSwitch links
 
     public:   
 
-      InPort() {
-           cout << "InPort()" << endl ;
-           _State = SUPERV::UndefinedState ;
-           _OutPort = NULL ;
-           _InitialOutPort = NULL ;
-      } ;
+      InPort() ;
       InPort( const char *const * NodeName  ,
               const SALOME_ModuleCatalog::ServicesParameter aserviceParameter ,
-              const SUPERV::KindOfPort aKind = SUPERV::ServiceParameter ) ;
+              const SUPERV::KindOfPort aKind = SUPERV::ServiceParameter ,
+              const SALOME_ModuleCatalog::DataStreamDependency aDependency = SALOME_ModuleCatalog::DATASTREAM_UNDEFINED ) ;
       virtual ~InPort() {
          cdebug << "GraphBase::InPort::~InPort " << PortName() << endl ; } ;
       virtual void destroy() {
@@ -60,31 +59,32 @@ namespace GraphBase {
          cdebug << "GraphBase::InPort::destroy " << PortName() << " "
                 << NodeName() << endl ; } ;
 
-      void State( SUPERV::GraphState aState ) {
+      void PortState( SUPERV::GraphState aPortState ) {
 //           cdebug << pthread_self() << " " << PortName() << " from "
 //                  << NodeName() << " SUPERV::GraphState " << _State << " "
-//                  << " --> " << aState << " _EndSwitchPort "
+//                  << " --> " << aPortState << " _EndSwitchPort "
 //                  << IsEndSwitch() << endl ;
-           _State = aState ; } ;
-      SUPERV::GraphState State() { return _State ; } ;
+           _PortState = aPortState ; } ;
+      SUPERV::GraphState PortState() { return _PortState ; } ;
 
       OutPort * GetOutPort() {
            return _OutPort ; } ;
       OutPort * GetOutPort() const {
            return _OutPort ; } ;
-      bool IsConnected() const ;
+      const StatusOfPort PortStatus() const ;
+
+      bool IsNotConnected() const ;
+//      bool IsConnected() const ;
+      bool IsPortConnected() const ;
       bool IsDataConnected() const ;
+      bool IsExternConnected() const ;
+
       bool AddOutPort( OutPort * anOutPort ) {
            if ( _OutPort )
              return false ;
            _OutPort = anOutPort ;
            return true ; } ;
-      bool ChangeOutPort( OutPort * anOutPort ) {
-           if ( _InitialOutPort == NULL ) {
-             _InitialOutPort = _OutPort ;
-          }
-           _OutPort = anOutPort ;
-           return true ; } ;
+      bool ChangeOutPort( OutPort * anOutPort ) ;
       bool InitialOutPort() {
            if ( _InitialOutPort ) {
              _OutPort = _InitialOutPort ;
@@ -92,11 +92,16 @@ namespace GraphBase {
              return true ;
           }
            return false ; } ;
-      bool RemoveOutPort() {
-           if ( _OutPort == NULL )
-             return false ;
-           _OutPort = NULL ;
-           return RemoveCoords() ; } ;
+      bool RemoveOutPort() ;
+
+      bool BranchOfSwitchLinked( bool aInPortLinked ) {
+           if ( aInPortLinked && _BranchOfSwitchLinked ) {
+             return false ; // Already setted
+          }
+           _BranchOfSwitchLinked = aInPortLinked ;
+           return true ; } ;
+      bool BranchOfSwitchLinked() {
+           return _BranchOfSwitchLinked ; } ;
 
       void StringValue(ostream & f ) const ;
 
@@ -106,4 +111,6 @@ namespace GraphBase {
 
 ostream & operator<< (ostream &,const GraphBase::InPort &);
 
+ostream & operator<< (ostream &,const SUPERV::GraphState &);
+
 #endif