From 845c8aaba059914ce6bf40188d17ab4fd32211fa Mon Sep 17 00:00:00 2001 From: rahuel Date: Tue, 30 Aug 2005 06:44:34 +0000 Subject: [PATCH] Methods moved here --- src/GraphBase/DataFlowBase_StreamNode.cxx | 87 ++++++++++++++++++----- src/GraphBase/DataFlowBase_StreamNode.hxx | 57 +++++++++++++-- 2 files changed, 120 insertions(+), 24 deletions(-) diff --git a/src/GraphBase/DataFlowBase_StreamNode.cxx b/src/GraphBase/DataFlowBase_StreamNode.cxx index fb0a7a1..fcef948 100644 --- a/src/GraphBase/DataFlowBase_StreamNode.cxx +++ b/src/GraphBase/DataFlowBase_StreamNode.cxx @@ -11,6 +11,7 @@ using namespace std; +#include "DataFlowBase_Graph.hxx" #include "DataFlowBase_StreamNode.hxx" GraphBase::StreamNode::StreamNode() : @@ -66,15 +67,44 @@ 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 ) { @@ -125,7 +155,9 @@ void GraphBase::StreamNode::AddLinkedNode( GraphBase::StreamNode * ToNode ) { _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++ ; @@ -133,7 +165,8 @@ void GraphBase::StreamNode::AddLinkedNode( GraphBase::StreamNode * ToNode ) { 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 @@ -146,7 +179,9 @@ void GraphBase::StreamNode::AddLinkedNode( GraphBase::StreamNode * ToNode ) { 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++ ; @@ -154,7 +189,8 @@ void GraphBase::StreamNode::AddLinkedNode( GraphBase::StreamNode * ToNode ) { 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 @@ -195,9 +231,10 @@ bool GraphBase::StreamNode::RemoveLinkedNode( GraphBase::StreamNode * ToNode , } 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 " @@ -213,6 +250,10 @@ bool GraphBase::StreamNode::RemoveLinkedNode( GraphBase::StreamNode * ToNode , _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 @@ -220,16 +261,21 @@ bool GraphBase::StreamNode::RemoveLinkedNode( GraphBase::StreamNode * ToNode , } 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 ; @@ -247,6 +293,11 @@ bool GraphBase::StreamNode::RemoveLinkedNode( GraphBase::StreamNode * ToNode , 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() << " --> " diff --git a/src/GraphBase/DataFlowBase_StreamNode.hxx b/src/GraphBase/DataFlowBase_StreamNode.hxx index 63398c7..2f2270c 100644 --- a/src/GraphBase/DataFlowBase_StreamNode.hxx +++ b/src/GraphBase/DataFlowBase_StreamNode.hxx @@ -158,18 +158,49 @@ namespace GraphBase { 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 ; @@ -183,9 +214,21 @@ namespace GraphBase { 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 ] ; } ; @@ -212,9 +255,11 @@ namespace GraphBase { 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 ; -- 2.39.2