using namespace std;
+#include "DataFlowBase_Graph.hxx"
#include "DataFlowBase_StreamNode.hxx"
GraphBase::StreamNode::StreamNode() :
}
bool GraphBase::StreamNode::Name( const char * aName) {
- cdebug_in << "GraphBase::StreamNode::Name " << _Name << endl;
- if ( _Name ) {
+ bool RetVal ;
+ char * aGraphName = "" ;
+ bool aNodeWithThatName ;
+ if ( IsDataFlowNode() || IsDataStreamNode() ) {
+ aGraphName = Name() ;
+ aNodeWithThatName = ((GraphBase::Graph * ) this)->GetGraphNode( aName ) ;
+ }
+ else if ( GraphOfNode() ) {
+ aGraphName = GraphOfNode()->Name() ;
+ aNodeWithThatName = GraphOfNode()->GetGraphNode( aName ) ;
+ }
+ cdebug_in << "GraphBase::StreamNode::Name from '" << _Name << "' to '" << aName
+ << "' in Graph '" << aGraphName << "' IsGraph "
+ << ( IsDataFlowNode() || IsDataStreamNode() ) << endl ;
+ if ( strcmp( aName , aGraphName ) && !aNodeWithThatName ) {
cdebug << "GraphBase::StreamNode::ReName " << _Name << " --> " << aName << endl ;
- delete [] _Name ;
+ if ( _Name ) {
+ delete [] _Name ;
+ }
+ _Name = new char[strlen(aName)+1] ;
+ strcpy( _Name , aName ) ;
+ RetVal = true ;
+ }
+ else {
+ if ( !strcmp( aName , Name() ) ) {
+//ReName of the graph with the same name :
+ cdebug << "GraphBase::StreamNode::ReName '" << Name() << "' to '" << aName
+ << "' with same name" << endl ;
+ RetVal = true ;
+ }
+ else {
+ cdebug << "GraphBase::StreamNode::ReName ERROR '" << Name() << "' to '" << aName
+ << "' already exists" << endl ;
+ RetVal = false ;
+ }
}
- _Name = new char[strlen(aName)+1] ;
- strcpy( _Name , aName ) ;
- cdebug_out << "GraphBase::StreamNode::Name " << _Name << endl;
- return true ;
+ cdebug_out << "GraphBase::StreamNode::Name " << aName << " " << RetVal << endl;
+ return RetVal ;
}
void GraphBase::StreamNode::SetSubStreamGraph( int SubStreamGraphsNumber , int & RetVal ) {
_LinkedNodes.resize( _LinkedNodesSize+1 ) ;
_LinkedInPortsNumber.resize( _LinkedNodesSize+1 ) ;
_LinkedNodes[ _LinkedNodesSize ] = ToNode ;
- _LinkedInPortsNumber[ _LinkedNodesSize ] = 1 ;
+ _LinkedInPortsNumber[ _LinkedNodesSize ] = 0 ;
+ IncrLinkedInPortsNumber( _LinkedNodesSize ) ;
+// _LinkedInPortsNumber[ _LinkedNodesSize ] = 1 ;
SetLinkedNodeIndex( ToNode->Name() , _LinkedNodesSize ) ;
index = _LinkedNodesSize ;
_LinkedNodesSize++ ;
else {
cdebug << Name() << "->GraphBase::StreamNode::AddLinkedNode( " << ToNode->Name()
<< " ) old LinkedNode " << _LinkedNodes[index ]->Name() << endl ;
- _LinkedInPortsNumber[ index ] += 1 ;
+ IncrLinkedInPortsNumber( index ) ;
+// _LinkedInPortsNumber[ index ] += 1 ;
}
cdebug << Name() << "->GraphBase::StreamNode::AddLinkedNode( " << ToNode->Name()
<< " ) LinkedNodesSize " << _LinkedNodesSize << " [ " << index
ToNode->_LinkedFromNodes.resize( ToNode->_LinkedFromNodesSize+1 ) ;
ToNode->_LinkedFromInPortsNumber.resize( ToNode->_LinkedFromNodesSize+1 ) ;
ToNode->_LinkedFromNodes[ ToNode->_LinkedFromNodesSize ] = this ;
- ToNode->_LinkedFromInPortsNumber[ ToNode->_LinkedFromNodesSize ] = 1 ;
+ ToNode->_LinkedFromInPortsNumber[ ToNode->_LinkedFromNodesSize ] = 0 ;
+ ToNode->IncrLinkedFromInPortsNumber( ToNode->_LinkedFromNodesSize ) ;
+// ToNode->_LinkedFromInPortsNumber[ ToNode->_LinkedFromNodesSize ] = 1 ;
ToNode->SetLinkedFromNodeIndex( Name() , ToNode->_LinkedFromNodesSize ) ;
index = ToNode->_LinkedFromNodesSize ;
ToNode->_LinkedFromNodesSize++ ;
else {
cdebug << Name() << "->GraphBase::StreamNode::AddLinkedFromNode( " << ToNode->Name()
<< " ) old LinkedFromNode " << ToNode->_LinkedFromNodes[index ]->Name() << endl ;
- ToNode->_LinkedFromInPortsNumber[ index ] += 1 ;
+ ToNode->IncrLinkedFromInPortsNumber( index ) ;
+// ToNode->_LinkedFromInPortsNumber[ index ] += 1 ;
}
cdebug << ToNode->Name() << "->GraphBase::StreamNode::AddLinkedFromNode( " << Name()
<< " ) LinkedFromNodesSize " << ToNode->_LinkedFromNodesSize << " [ " << index
}
if ( index >= 0 ) {
cdebug << "GraphBase::StreamNode::RemoveLinkedNode to " << ToNode->Name() << " from "
- << Name() << " index : " << index << " LinkedInPortsNumber "
+ << Name() << " index : " << index << " " << ToNode->Name() << "->LinkedInPortsNumber "
<< _LinkedInPortsNumber[ index ] << " - 1" << endl ;
- _LinkedInPortsNumber[ index ] -= 1 ;
+ DecrLinkedInPortsNumber( index ) ;
+// _LinkedInPortsNumber[ index ] -= 1 ;
if ( _LinkedInPortsNumber[ index ] == 0 ) {
_LinkedNodesSize-- ;
cdebug << "GraphBase::StreamNode::RemoveLinkedNode new LinkedNodesSize "
_LinkedNodes.resize( _LinkedNodesSize+1 ) ;
_LinkedInPortsNumber.resize( _LinkedNodesSize+1 ) ;
}
+ else {
+ cdebug << "StreamNode::RemoveLinkedNode to " << ToNode->Name() << " from "
+ << Name() << " " << ToNode->Name() << "->LinkedInPortsNumber # 0 " << endl ;
+ }
}
else {
cdebug << "StreamNode::RemoveLinkedNode index Error " << ToNode->Name() << " <-- " << Name() << " : " << index
}
int fromindex = 0 ;
fromindex = -1 ;
- if ( ToNode->_LinkedFromNodesSize ) {
+ if ( ToNode->LinkedFromNodesSize() ) {
+// if ( ToNode->_LinkedFromNodesSize ) {
fromindex = ToNode->GetLinkedFromNodeIndex( Name() ) ;
}
if ( fromindex >= 0 ) {
cdebug << "GraphBase::StreamNode::RemoveLinkedFromNode from " << ToNode->Name() << " to "
- << Name() << " index : " << fromindex << " LinkedFromInPortsNumber "
+ << Name() << " index : " << fromindex << " " << ToNode->Name()
+ << "->LinkedFromInPortsNumber "
<< ToNode->_LinkedFromInPortsNumber[ fromindex ] << " - 1" << endl ;
- ToNode->_LinkedFromInPortsNumber[ fromindex ] -= 1 ;
- if ( ToNode->_LinkedFromInPortsNumber[ fromindex ] == 0 ) {
- ToNode->_LinkedFromNodesSize-- ;
+// ToNode->_LinkedFromInPortsNumber[ fromindex ] -= 1 ;
+ ToNode->DecrLinkedFromInPortsNumber( fromindex ) ;
+ if ( ToNode->LinkedFromInPortsNumber( fromindex ) == 0 ) {
+// if ( ToNode->_LinkedFromInPortsNumber[ fromindex ] == 0 ) {
+ ToNode->DecrLinkedFromNodesSize() ;
+// ToNode->_LinkedFromNodesSize-- ;
cdebug << "GraphBase::StreamNode::RemoveLinkedFromNode new LinkedFromNodesSize "
<< ToNode->_LinkedFromNodesSize << " " << Name() << " removed from "
<< " linkedFromnodes of " << ToNode->Name() << endl ;
ToNode->_LinkedFromNodes.resize( ToNode->_LinkedFromNodesSize+1 ) ;
ToNode->_LinkedFromInPortsNumber.resize( ToNode->_LinkedFromNodesSize+1 ) ;
}
+ else {
+ cdebug << "StreamNode::RemoveLinkedFromNode from " << ToNode->Name()
+ << "->LinkedFromInPortsNumber "
+ << ToNode->_LinkedFromInPortsNumber[ fromindex ] << " # 0" << endl ;
+ }
}
else if ( DoLinkedFromNode ) {
cdebug << "StreamNode::RemoveLinkedFromNode index Error " << ToNode->Name() << " --> "
int LinkedNodesSize() const { return _LinkedNodesSize ; } ;
const int LinkedInPortsNumber( int i ) const { return _LinkedInPortsNumber[ i ] ; } ;
+ void IncrLinkedInPortsNumber( int i ) {
+ cdebug << Name() << "->IncrLinkedInPortsNumber LinkedInPortsNumber --> "
+ << _LinkedInPortsNumber[ i ] + 1 << endl ;
+ _LinkedInPortsNumber[ i ]++ ; } ;
+ void DecrLinkedInPortsNumber( int i ) {
+ cdebug << Name() << "->DecrLinkedInPortsNumber LinkedInPortsNumber --> "
+ << _LinkedInPortsNumber[ i ] - 1 << endl ;
+ _LinkedInPortsNumber[ i ]-- ; } ;
StreamNode * LinkedNodes( int i ) const { return _LinkedNodes[ i ] ; } ;
int GetLinkedFromNodeIndex( const char * name ) {
int index = _MapOfLinkedFromNodes[ name ] -1 ;
if ( index >= 0 ) {
- cdebug << "GetLinkedFromNodeIndex of " << name
+ cdebug << "StreamNode::GetLinkedFromNodeIndex of " << name
<< " in _MapOfLinkedFromNodes : "
<< index << " FromNode " << hex << (void *) _LinkedFromNodes[ index ]
<< dec << " '" << _LinkedFromNodes[ index ]->Name() << "'"
<< endl ;
}
+ else {
+ cdebug << "StreamNode::GetLinkedFromNodeIndex of " << name
+ << " in _MapOfLinkedFromNodes not found. Known nodes :" << endl ;
+#if 0
+ map< string , int >::iterator aMapOfLinkedFromNodesIterator1 ;
+ int iifrom = 0 ;
+ for ( aMapOfLinkedFromNodesIterator1 = ToNode->_MapOfLinkedFromNodes.begin() ;
+ aMapOfLinkedFromNodesIterator1 != ToNode->_MapOfLinkedFromNodes.end() &&
+ iifrom < ToNode->_LinkedFromNodesSize ; aMapOfLinkedFromNodesIterator1++ ) {
+ if ( aMapOfLinkedFromNodesIterator1->second ) {
+ cdebug << "_MapOfLinkedFromNodes" << iifrom++ << " of " << ToNode->Name() << " : "
+ << aMapOfLinkedFromNodesIterator1->first << " --> "
+ << aMapOfLinkedFromNodesIterator1->second << " "
+ << ToNode->_LinkedFromNodes[ aMapOfLinkedFromNodesIterator1->second - 1 ]->Name()
+ << endl ;
+ }
+ else {
+ cdebug << "_MapOfLinkedFromNodes" << iifrom << " of " << ToNode->Name() << " : "
+ << aMapOfLinkedFromNodesIterator1->second - 1 << endl ;
+ }
+ }
+#endif
+ }
return index ; } ;
void SetLinkedFromNodeIndex( const char * name , const int index ) {
_MapOfLinkedFromNodes[ name ] = index +1 ;
void DelLinkedFromNodeIndex( const char * name ) {
_MapOfLinkedFromNodes.erase( name ) ; } ;
- int LinkedFromNodesSize() const { return _LinkedFromNodesSize ; } ;
-
- const int LinkedFromInPortsNumber( int i ) const { return _LinkedFromInPortsNumber[ i ] ; } ;
+ int LinkedFromNodesSize() const {
+ return _LinkedFromNodesSize ; } ;
+ void DecrLinkedFromNodesSize() {
+ _LinkedFromNodesSize-- ; } ;
+
+ const int LinkedFromInPortsNumber( int i ) const {
+ return _LinkedFromInPortsNumber[ i ] ; } ;
+ void IncrLinkedFromInPortsNumber( int i ) {
+ cdebug << Name() << "->IncrLinkedFromInPortsNumber LinkedFromInPortsNumber --> "
+ << _LinkedFromInPortsNumber[ i ] + 1 << endl ;
+ _LinkedFromInPortsNumber[ i ]++ ; } ;
+ void DecrLinkedFromInPortsNumber( int i ) {
+ cdebug << Name() << "->DecrLinkedFromInPortsNumber LinkedFromInPortsNumber --> "
+ << _LinkedFromInPortsNumber[ i ] - 1 << endl ;
+ _LinkedFromInPortsNumber[ i ]-- ; } ;
StreamNode * LinkedFromNodes( int i ) const { return _LinkedFromNodes[ i ] ; } ;
int LinkedStreamNodesSize() const { return _LinkedStreamNodesSize ; } ;
- const int LinkedInStreamPortsNumber( int i ) const { return _LinkedInStreamPortsNumber[ i ] ; } ;
+ const int LinkedInStreamPortsNumber( int i ) const {
+ return _LinkedInStreamPortsNumber[ i ] ; } ;
- StreamNode * LinkedStreamNodes( int i ) const { return _LinkedStreamNodes[ i ] ; } ;
+ StreamNode * LinkedStreamNodes( int i ) const {
+ return _LinkedStreamNodes[ i ] ; } ;
bool BranchOfSwitchDone( bool aNodeDoneInBranchOfSwitch ) {
bool prevalue = _NodeDoneInBranchOfSwitch ;