cdebug << "GraphEditor::OutNode::LoadDataFlow() LoadDatas GraphNodesSize " << Graph()->GraphNodesSize() << endl;
RetVal = LoadDatas( aMapOfNodes , (*aDataFlow).Datas ) ;
}
- cdebug_out << "GraphEditor::OutNode::LoadDataFlow done GraphNodesSize " << Graph()->GraphNodesSize() << endl;
+ cdebug_out << "GraphEditor::OutNode::LoadDataFlow done GraphNodesSize " << Graph()->GraphNodesSize()
+ << " RetVal " << RetVal << endl;
return RetVal ;
}
bool GraphEditor::OutNode::LoadLinks(map< string , int > & aMapOfNodes ,
const GraphBase::ListOfSLinks &aListOfLinks ) {
bool RetVal = true ;
+ bool RetAddLink ;
cdebug_in << "GraphEditor::OutNode::LoadLinks" << endl ;
// MESSAGE( "GraphEditor::OutNode::LoadLinks" );
int i , j ;
<< aLink.ToServiceParameterName.c_str() << " )" << endl ;
if ( Graph()->GetGraphNode( aMapOfNodes[ aLinkFromNodeName->c_str() ] ) &&
Graph()->GetGraphNode( aMapOfNodes[ aLinkToNodeName->c_str() ] ) ) {
-// GraphBase::ComputingNode * aFromNode = (GraphBase::ComputingNode * ) Graph()->GetGraphNode( aMapOfNodes[ aLinkFromNodeName->c_str() ] ) ;
-// const GraphBase::OutPort * anOutPort = aFromNode->GetOutPort( aLink.FromServiceParameterName.c_str() ) ;
- RetVal = AddLink( Graph()->GetGraphNode( aMapOfNodes[ aLinkFromNodeName->c_str() ] )->Name() ,
- aLink.FromServiceParameterName.c_str() ,
- Graph()->GetGraphNode( aMapOfNodes[ aLinkToNodeName->c_str() ] )->Name() ,
- aLink.ToServiceParameterName.c_str() ) ;
-// , *anOutPort->Value() ) ;
+//JR 08.02.2005 : Rule of CEA : a bad graph may be stored in a xml
+ RetAddLink = AddLink( Graph()->GetGraphNode( aMapOfNodes[ aLinkFromNodeName->c_str() ] )->Name() ,
+ aLink.FromServiceParameterName.c_str() ,
+ Graph()->GetGraphNode( aMapOfNodes[ aLinkToNodeName->c_str() ] )->Name() ,
+ aLink.ToServiceParameterName.c_str() ) ;
}
else {
RetVal = false ;
}
-// aLink.aLinkValue ) ;
- if ( !RetVal )
- break ;
- else {
+ if ( RetVal && RetAddLink ) {
for ( j = 0 ; j < (int ) aLink.aListOfCoords.size() ; j++ ) {
RetVal = AddLinkCoord( Graph()->GetGraphNode( aMapOfNodes[ aLinkFromNodeName->c_str() ] )->Name() ,
aLink.FromServiceParameterName.c_str() ,
delete aLinkFromNodeName ;
delete aLinkToNodeName ;
}
- cdebug_out << "GraphEditor::OutNode::LoadLinks" << endl ;
+ cdebug_out << "GraphEditor::OutNode::LoadLinks " << RetVal << endl ;
return RetVal ;
}
bool GraphEditor::OutNode::LoadDatas(map< string , int > & aMapOfNodes ,
const GraphBase::ListOfSLinks &aListOfDatas ) {
bool RetVal = true ;
+ bool RetAddLink ;
cdebug_in << "GraphEditor::OutNode::LoadDatas" << endl ;
// MESSAGE( "GraphEditor::OutNode::LoadDatas" );
int i ;
// << aMapOfNodes[ aLinkFromNodeName->c_str() ] << endl ;
// cout << " " << aLink.ToNodeName.c_str() << " "
// << aMapOfNodes[ aLinkToNodeName->c_str() ] << endl ;
- RetVal = Graph()->AddInputData( Graph()->GetGraphNode( aMapOfNodes[ aLinkToNodeName->c_str() ] )->Name() ,
- aLink.ToServiceParameterName.c_str() ,
- aLink.aLinkValue ) ;
+ RetAddLink = Graph()->AddInputData( Graph()->GetGraphNode( aMapOfNodes[ aLinkToNodeName->c_str() ] )->Name() ,
+ aLink.ToServiceParameterName.c_str() ,
+ aLink.aLinkValue ) ;
delete aLinkFromNodeName ;
delete aLinkToNodeName ;
if ( !RetVal )
break ;
}
- cdebug_out << "GraphEditor::OutNode::LoadDatas" << endl ;
+ cdebug_out << "GraphEditor::OutNode::LoadDatas " << RetVal << endl ;
return RetVal ;
}
// cout << "GraphEditor::OutNode::SaveXML " << xml << endl ;
// f << xml << endl ;
// }
- cdebug_out << "GraphEditor::OutNode::SaveXml" << endl;
+ cdebug_out << "GraphEditor::OutNode::SaveXml " << test << endl;
return test;
}
if ( aNodeName ) {
delete [] aNodeName ;
}
- int num = Graph()->GetServiceNameNumber( NodeService ) ;
+// int num = Graph()->GetServiceNameNumber( NodeService ) ;
+ char * aServiceName = (CORBA::String_member ) NodeService.ServiceName ;
+ int num = Graph()->GetNewServiceInstanceNumber( aServiceName ) ;
ostringstream astr ;
astr << num << ends ;
const char * n_instance = astr.str().c_str() ;
for ( i = 0 ; i < NodeService.ServiceinDataStreamParameter.length() ; i++ ) {
GraphBase::InDataStreamPort * aDataStreamPort ;
aDataStreamPort = Nd->ComputingNode()->AddInDataStreamPort(
- my_strdup( NodeService.ServiceinDataStreamParameter[i].Parametername ) ,
+//JR 17.02.2005 Memory Leak my_strdup( NodeService.ServiceinDataStreamParameter[i].Parametername ) ,
+ NodeService.ServiceinDataStreamParameter[i].Parametername ,
NodeService.ServiceinDataStreamParameter[i].Parametertype ,
NodeService.ServiceinDataStreamParameter[i].Parameterdependency ,
SUPERV::DataStreamParameter ) ;
for ( i = 0 ; i < NodeService.ServiceoutDataStreamParameter.length() ; i++ ) {
GraphBase::OutDataStreamPort * aDataStreamPort ;
aDataStreamPort = Nd->ComputingNode()->AddOutDataStreamPort(
- my_strdup( NodeService.ServiceoutDataStreamParameter[i].Parametername ) ,
+//JR 17.02.2005 Memory Leak my_strdup( NodeService.ServiceoutDataStreamParameter[i].Parametername ) ,
+ NodeService.ServiceoutDataStreamParameter[i].Parametername ,
NodeService.ServiceoutDataStreamParameter[i].Parametertype ,
NodeService.ServiceoutDataStreamParameter[i].Parameterdependency ,
SUPERV::DataStreamParameter ) ;
cdebug << "ERROR NodeName is NULL or already exists." << endl ;
}
// delete [] aNodeName ;
- cdebug_out << "GraphEditor::OutNode::AddNode" << endl;
_Valid = false ;
+ if ( Nd == NULL ) {
+ cdebug_out << "GraphEditor::OutNode::AddNode : NULL" << endl;
+ }
+ else {
+ cdebug_out << "GraphEditor::OutNode::AddNode : " << Nd << " " << Nd->Name() << endl;
+ }
return Nd ;
}
return RetVal ;
}
-bool GraphEditor::OutNode::Valid() {
+//JR Optional parameter kLoopSwitch (default = true) :
+//In some cases we do not need to check the validity of loops and switchs
+bool GraphEditor::OutNode::Valid(bool kLoopSwitch ) {
if ( _Valid )
return true ;
if ( Graph()->IsDataStreamNode() ) {
StreamGraph()->SubStreamGraphsNumber( SubStreamGraphsNumber ) ;
}
- if ( !Graph()->ValidLoops() ) {
- cdebug_out << "This DataFlow have not valid Loops." << endl ;
- return false ;
+
+ Graph()->InLineServices() ;
+
+ if ( kLoopSwitch ) {
+ if ( !Graph()->ValidLoops() ) {
+ cdebug_out << "This DataFlow have not valid Loops." << endl ;
+ return false ;
+ }
+ if ( !Graph()->ValidSwitchs() ) {
+ cdebug_out << "This DataFlow have not valid Switchs." << endl ;
+ return false ;
+ }
}
// CreateService() ;
- Graph()->InLineServices() ;
-
Graph()->ComputingNodes() ;
- _Valid = true ;
+ if ( kLoopSwitch ) {
+ _Valid = true ;
+ }
cdebug_out << "GraphEditor::OutNode::Valid " << _Valid << endl;
- return _Valid ;
+ return true ;
}
bool GraphEditor::OutNode::Executable() {
return _Executable ;
}
-const CORBA::Any *GraphEditor::OutNode::GetInData(
+//JR 30.03.2005const CORBA::Any *GraphEditor::OutNode::GetInData(
+const CORBA::Any GraphEditor::OutNode::GetInData(
const char * ToNodeName ,
const char * ToParameterName ) {
// cdebug_in << "GraphEditor::OutNode::GetInData " << ToNodeName
// << " " << ToParameterName << endl ;
- const CORBA::Any * retdata = Graph()->PortInData( ToNodeName , ToParameterName ) ;
+//JR 30.03.2005 const CORBA::Any * retdata = Graph()->PortInData( ToNodeName , ToParameterName ) ;
+ const CORBA::Any retdata = Graph()->PortInData( ToNodeName , ToParameterName ) ;
// cdebug_out << "GraphEditor::OutNode::GetInData" << endl ;
return retdata ;
}
-const CORBA::Any *GraphEditor::OutNode::GetOutData(
+//JR 30.03.2005const CORBA::Any *GraphEditor::OutNode::GetOutData(
+const CORBA::Any GraphEditor::OutNode::GetOutData(
const char * FromNodeName ,
const char * FromParameterName ) {
// cdebug_in << "GraphEditor::OutNode::GetOutData " << FromNodeName
// << " " << FromParameterName << endl ;
- const CORBA::Any * retdata = Graph()->PortOutData( FromNodeName , FromParameterName ) ;
+//JR 30.03.2005 const CORBA::Any * retdata = Graph()->PortOutData( FromNodeName , FromParameterName ) ;
+ const CORBA::Any retdata = Graph()->PortOutData( FromNodeName , FromParameterName ) ;
// cdebug_out << "GraphEditor::OutNode::GetOutData" << endl ;
return retdata ;
}
bool GraphEditor::OutNode::SavePY( ostream & f , bool importSuperV ) {
int i ;
int j ;
+ const GraphBase::ListOfSLinks * Links ;
if ( importSuperV ) {
f << endl << "# Generated python file of Graph " << Graph()->Name() << endl << endl ;
}
}
- const GraphBase::ListOfSLinks * Links = Graph()->GetLinks() ;
+ Links = Graph()->GetLinks() ;
// bool intervar ;
// map< string , int > aMapOfOutPorts ;
first = true ;