Salome HOME
*** empty log message ***
[modules/superv.git] / src / GraphBase / DataFlowBase_Graph.hxx
index d3b640a9fbb178eadd0b7c1e445ec83e9eba169f..ebb7354323b01d60405fc80eedb2f283b0c23efe 100644 (file)
@@ -57,10 +57,9 @@ namespace GraphBase {
       vector<ComputingNode *>  _GraphNodes ;
 
 // _SortedNodes[ _LevelsNumber ] : topological sort from 0 to _LevelsNumber
-// _SortedNodes[ _level ][ _NodesNumber[ _level ] ] : _NodesNumber[ _level ] Nodes
+// _SortedNodes[ _level ][ _NodesNumber[ _level ] ] : _NodesNumber[ _level ] Nodes in the level
       int                              _LevelsNumber ;
       int                              _ThreadsMax ;
-      int                              _GraphsNumber ;
       vector<int >                     _NodesNumber ;
       vector<vector<ComputingNode *> > _SortedNodes ;
 
@@ -73,6 +72,24 @@ namespace GraphBase {
       vector<ComputingNode *>  _QueueNodes ;
       bool                     _ParallelExecutionNodes ;
 
+// For generated NodeNames with ServiceName : number of Nodes using
+// the same ServiceName. It is not the same Service if it belongs to
+// a different Interface and/or a different Component ...
+      map< string , GraphBase::Service * > _MapOfServiceNames ;
+
+// Total number of SubGraphs
+      int                              _SubGraphsNumber ;
+// _SubGraphs[ SubGraphNumero ] [ NodeNumero ]
+// SubGraphNumero : [ 0 , _SubGraphsSize [ ; NodeNumero : [ 0 , _SubGraphs[ SubGraphNumero ].size() [
+      int                              _SubGraphsSize ;
+      vector<vector<ComputingNode *> > _SubGraphs ;
+
+// _SubStreamGraphs[ SubStreamGraphNumero ] [ NodeNumero ]
+// SubStreamGraphNumero : [ 0 , _SubStreamGraphsSize [
+// NodeNumero : [ 0 , _SubStreamGraphs[ SubStreamGraphNumero ].size() [
+//      int                              _SubStreamGraphsSize ;
+//      vector<vector<ComputingNode *> > _SubStreamGraphs ;
+
       bool AddLink( GraphBase::ComputingNode *fromNode ,
                     GraphBase::OutPort *fromPort ,
                     GraphBase::ComputingNode *toNode ,
@@ -138,6 +155,7 @@ namespace GraphBase {
            } ;
       void DelGraphNodeIndex( const char *name ) {
            _MapOfGraphNodes.erase( name ) ; } ;
+
       const GraphBase::ComputingNode * GetGraphNode( const int index ) const {
             const ComputingNode * aNode = GetChangeGraphNode( index ) ;
             return aNode ; } ;
@@ -284,18 +302,25 @@ namespace GraphBase {
       bool CreateService() ;
       bool InLineServices() ;
 
-      bool Sort() ;
+      bool Sort( int & SubStreamGraphsNumber ) ;
       bool ComputingNodes() const ;
       bool LinkLoopNodes(bool & NewLink ) ;
       bool DataServerNodes() const ;
   
       long LevelMax() {
            return _LevelsNumber + 1 ; } ;
+
+      map< string , GraphBase::Service * > MapOfServiceNames() ;
+      GraphBase::Service * GetServiceOfMap( char * name ) ;
+      bool SetServiceOfMap( GraphBase::Service * aService ) ;
+      int GetServiceNameNumber( SALOME_ModuleCatalog::Service aService ) ;
+
       SUPERV::ListOfStrings * LevelNodes(long aLevel ) ;
       long ThreadsMax() {
            return _ThreadsMax ; } ;
-      long GraphsNumber() {
-           return _GraphsNumber ; } ;
+
+      long SubGraphsNumber() {
+           return _SubGraphsNumber ; } ;
 
       int NodesNumber(const int aLevel ) {
           return _NodesNumber[ aLevel ] ; } ;