]> SALOME platform Git repositories - modules/superv.git/blobdiff - src/GraphBase/DataFlowBase_Graph.cxx
Salome HOME
Control of creation of links only between FlowPorts or StreamPorts.
[modules/superv.git] / src / GraphBase / DataFlowBase_Graph.cxx
index 427db40b164152fc0c5b4e3c5ee79543f7a94bde..0993b2d46803276982f9865ddc8a4496a01e42d8 100644 (file)
@@ -759,6 +759,16 @@ bool GraphBase::Graph::AddLink( GraphBase::ComputingNode *fromNode ,
     cdebug << "AddLink toPort not found." << endl ;
     return false ;
   }
+  if ( ( fromPort->IsDataStream() && !toPort->IsDataStream() ) ||
+       ( !fromPort->IsDataStream() && toPort->IsDataStream() ) ) {
+    cdebug << "AddLink fromPort/toPort Stream/Flow. ERROR" << endl ;
+    return false ;
+  }
+  if ( fromPort->IsDataStream() && fromPort->Dependency() == SALOME_ModuleCatalog::DATASTREAM_TEMPORAL &&
+       toPort->Dependency() == SALOME_ModuleCatalog::DATASTREAM_ITERATIVE ) {
+    cdebug << "AddLink fromPort/toPort Stream DATASTREAM_TEMPORAL --> DATASTREAM_ITERATIVE. ERROR" << endl ;
+    return false ;
+  }
 
   cdebug_in << "GraphBase::Graph::AddLink(" << fromNode->Name() << "("
             << fromPort->PortName() << ") ---> " << toNode->Name() << "("
@@ -883,6 +893,8 @@ bool GraphBase::Graph::AddLink( GraphBase::ComputingNode *fromNode ,
            << fromPort->Kind() << " -> " << toNode->Name() << " " << " "
            << toPort->PortName() << " " << toPort->Kind() << endl;
     fromPort->PortStatus( PortConnected );
+// Nodes may be linked ONLY if Ports are NOT DataStream for topological sort of node
+// =================================================================================
     if ( !fromPort->IsDataStream() && !toPort->IsDataStream() ) {
       fromNode->AddLink( toNode ) ;
     }
@@ -1640,6 +1652,8 @@ bool GraphBase::Graph::Sort() {
       cdebug << "Sort Node [" << i << "] " << GraphNodes( i )->Name() << " initial count " << _CnxInPortsNumber[ i ] << endl ;
     }
     
+// Nodes are linked ONLY if Ports are NOT DataStream for topological sort of node
+// ==============================================================================
     while ( NotSortedNumber ) {
       NewSorted = false ;
       
@@ -1757,6 +1771,7 @@ bool GraphBase::Graph::Sort() {
       }
     }
 
+// Computation of independent SubGraphs which have NO link between them
     bool Graphs = true ;
     while ( Graphs ) {
       for ( i = 0 ; i <= _LevelsNumber ; i++ ) {