char * &_Comment ,
bool &_HeadNode ,
bool &_GeneratedName ,
+ int &_DataStreamInPortsNumber ,
+ int &_DataStreamOutPortsNumber ,
int &_ConnectedInPortsNumber ,
int &_DecrConnectedInPortsNumber,
int &_LinkedNodesSize ,
_HeadNode = false ;
_GeneratedName = false ;
+ _DataStreamInPortsNumber = 0 ;
+ _DataStreamOutPortsNumber = 0 ;
+
_ConnectedInPortsNumber = 0 ;
_DecrConnectedInPortsNumber = 0 ;
_LinkedNodesSize = 0 ;
_Comment ,
_HeadNode ,
_GeneratedName ,
+ _DataStreamInPortsNumber ,
+ _DataStreamOutPortsNumber ,
_ConnectedInPortsNumber ,
_DecrConnectedInPortsNumber ,
_LinkedNodesSize ,
_Comment ,
_HeadNode ,
_GeneratedName ,
+ _DataStreamInPortsNumber ,
+ _DataStreamOutPortsNumber ,
_ConnectedInPortsNumber ,
_DecrConnectedInPortsNumber ,
_LinkedNodesSize ,
_Name = new char[strlen(aNodeName)+1];
strcpy(_Name , aNodeName);
+ _DataStreamInPortsNumber = 0 ;
+ _DataStreamOutPortsNumber = 0 ;
+
_ConnectedInPortsNumber = 0 ;
_DecrConnectedInPortsNumber = 0 ;
_LinkedNodesSize = 0 ;
return Info ;
}
+void GraphBase::ComputingNode::DelInPort( const char * InputParameterName ) {
+ if ( GetChangeInPort( InputParameterName )->IsDataStream() ) {
+ _DataStreamInPortsNumber-- ;
+ }
+ GraphBase::PortsOfNode::DelInPort( InputParameterName ) ;
+}
+void GraphBase::ComputingNode::DelOutPort( const char * OutputParameterName ) {
+ if ( GetChangeOutPort( OutputParameterName )->IsDataStream() ) {
+ _DataStreamOutPortsNumber-- ;
+ }
+ GraphBase::PortsOfNode::DelOutPort( OutputParameterName ) ;
+}
+
GraphBase::InPort * GraphBase::ComputingNode::AddInPort( const char * InputParameterName ,
const char * InputParameterType ) {
return GraphBase::PortsOfNode::AddInPort( _ORB , NamePtr() ,
const ListOfFuncName FuncNames ,
const ListOfPythonFunctions PythonFunctions ,
int XCoordinate , int YCoordinate ) const {
+ cdebug_in << "SaveXML Node " << Name() << endl ;
QDomElement node = Graph.createElement( "node" ) ;
info.appendChild( node ) ;
QDomElement componentname = Graph.createElement( "component-name" ) ;
service.appendChild(servicename) ;
servicename.appendChild( aField ) ;
-// f << Tabs << " <inParameter-list>" << endl ;
QDomElement inParameterlist = Graph.createElement("inParameter-list") ;
service.appendChild(inParameterlist) ;
unsigned int i;
+ GraphBase::ComputingNode * aNode = (GraphBase::ComputingNode * ) this ;
for ( i = 0 ; i < ServiceInParameter().length() ; i++ ) {
-// f << Tabs << " <inParameter>" << endl ;
- QDomElement inParameter = Graph.createElement("inParameter") ;
- inParameterlist.appendChild(inParameter) ;
-// f << Tabs << " <inParameter-type>"
-// << ServiceInParameter()[i].Parametertype << "</inParameter-type>"
-// << endl ;
- QDomElement inParametertype = Graph.createElement("inParameter-type") ;
- // mpv: Linux 8.0 compiler compatibility
-// aField = Graph.createTextNode( (char *)ServiceInParameter()[i].Parametertype ) ;
- if ( strlen( ServiceInParameter()[i].Parametertype ) ) {
- aField = Graph.createTextNode( strdup( ServiceInParameter()[i].Parametertype ) ) ;
- }
- else {
- aField = Graph.createTextNode( "?" ) ;
- }
- inParameter.appendChild(inParametertype) ;
- inParametertype.appendChild( aField ) ;
-// f << Tabs << " <inParameter-name>"
-// << ServiceInParameter()[i].Parametername << "</inParameter-name>"
-// << endl ;
- QDomElement inParametername = Graph.createElement("inParameter-name") ;
- // mpv: Linux 8.0 compiler compatibility
-// aField = Graph.createTextNode( (char *) ServiceInParameter()[i].Parametername ) ;
- if ( strlen( ServiceInParameter()[i].Parametername ) ) {
- aField = Graph.createTextNode( strdup(ServiceInParameter()[i].Parametername) ) ;
- }
- else {
- aField = Graph.createTextNode( "?" ) ;
+ const GraphBase::InPort * anInPort ;
+ anInPort = aNode->GetInPort( ServiceInParameter()[i].Parametername ) ;
+ if ( !anInPort->IsDataStream() ) {
+ cdebug << "SaveXML " << i << ". " << ServiceInParameter()[i].Parametername
+ << " InParameterPort " << anInPort->Kind() << endl ;
+ QDomElement inParameter = Graph.createElement("inParameter") ;
+ inParameterlist.appendChild(inParameter) ;
+ QDomElement inParametertype = Graph.createElement("inParameter-type") ;
+ if ( strlen( ServiceInParameter()[i].Parametertype ) ) {
+ aField = Graph.createTextNode( strdup( ServiceInParameter()[i].Parametertype ) ) ;
+ }
+ else {
+ aField = Graph.createTextNode( "?" ) ;
+ }
+ inParameter.appendChild(inParametertype) ;
+ inParametertype.appendChild( aField ) ;
+ QDomElement inParametername = Graph.createElement("inParameter-name") ;
+ if ( strlen( ServiceInParameter()[i].Parametername ) ) {
+ aField = Graph.createTextNode( strdup(ServiceInParameter()[i].Parametername) ) ;
+ }
+ else {
+ aField = Graph.createTextNode( "?" ) ;
+ }
+ inParameter.appendChild(inParametername) ;
+ inParametername.appendChild( aField ) ;
}
- inParameter.appendChild(inParametername) ;
- inParametername.appendChild( aField ) ;
-// f << Tabs << " </inParameter>" << endl ;
}
-// f << Tabs << " </inParameter-list>" << endl ;
-// f << Tabs << " <outParameter-list>" << endl ;
QDomElement outParameterlist = Graph.createElement("outParameter-list") ;
service.appendChild(outParameterlist) ;
for ( i = 0 ; i < ServiceOutParameter().length() ; i++ ) {
-// f << Tabs << " <outParameter>" << endl ;
- QDomElement outParameter = Graph.createElement("outParameter") ;
- outParameterlist.appendChild(outParameter) ;
-// f << Tabs << " <outParameter-type>"
-// << ServiceOutParameter()[i].Parametertype << "</outParameter-type>"
-// << endl ;
- QDomElement outParametertype = Graph.createElement("outParameter-type") ;
- // mpv: Linux 8.0 compiler compatibility
-// aField = Graph.createTextNode( (char *) ServiceOutParameter()[i].Parametertype ) ;
- if ( strlen( ServiceOutParameter()[i].Parametertype ) ) {
- aField = Graph.createTextNode( strdup(ServiceOutParameter()[i].Parametertype) ) ;
- }
- else {
- aField = Graph.createTextNode( "?" ) ;
- }
- outParameter.appendChild(outParametertype) ;
- outParametertype.appendChild( aField ) ;
-// f << Tabs << " <outParameter-name>"
-// << ServiceOutParameter()[i].Parametername << "</outParameter-name>"
-// << endl ;
- QDomElement outParametername = Graph.createElement("outParameter-name") ;
- // mpv: Linux 8.0 compiler compatibility
-// aField = Graph.createTextNode( (char *) ServiceOutParameter()[i].Parametername ) ;
- if ( strlen( ServiceOutParameter()[i].Parametername ) ) {
- aField = Graph.createTextNode( strdup(ServiceOutParameter()[i].Parametername) ) ;
- }
- else {
- aField = Graph.createTextNode( "?" ) ;
+ const GraphBase::OutPort * anOutPort ;
+ anOutPort = aNode->GetOutPort( ServiceOutParameter()[i].Parametername ) ;
+ if ( !anOutPort->IsDataStream() ) {
+ cdebug << "SaveXML " << i << ". " << ServiceOutParameter()[i].Parametername
+ << " OutParameterPort " << anOutPort->Kind() << endl ;
+ QDomElement outParameter = Graph.createElement("outParameter") ;
+ outParameterlist.appendChild(outParameter) ;
+ QDomElement outParametertype = Graph.createElement("outParameter-type") ;
+ if ( strlen( ServiceOutParameter()[i].Parametertype ) ) {
+ aField = Graph.createTextNode( strdup(ServiceOutParameter()[i].Parametertype) ) ;
+ }
+ else {
+ aField = Graph.createTextNode( "?" ) ;
+ }
+ outParameter.appendChild(outParametertype) ;
+ outParametertype.appendChild( aField ) ;
+ QDomElement outParametername = Graph.createElement("outParameter-name") ;
+ if ( strlen( ServiceOutParameter()[i].Parametername ) ) {
+ aField = Graph.createTextNode( strdup(ServiceOutParameter()[i].Parametername) ) ;
+ }
+ else {
+ aField = Graph.createTextNode( "?" ) ;
+ }
+ outParameter.appendChild(outParametername) ;
+ outParametername.appendChild( aField ) ;
}
- outParameter.appendChild(outParametername) ;
- outParametername.appendChild( aField ) ;
-// f << Tabs << " </outParameter>" << endl ;
}
-// f << Tabs << " </outParameter-list>" << endl ;
-// f << Tabs << "</service>" << endl ;
-// f << Tabs << "<Parameter-list>" << endl ;
- QDomElement Parameterlist = Graph.createElement("Parameter-list") ;
- node.appendChild( Parameterlist ) ;
-#if 0
- if ( IsInLineNode() || IsGOTONode() ||
- IsLoopNode() || IsEndLoopNode() ||
- IsSwitchNode() || IsEndSwitchNode() ) {
- unsigned int i;
- for ( i = 0 ; i < GetNodeInPortsSize() ; i++ ) {
- const InPort * anInPort = GetNodeInPort( i ) ;
- if ( anInPort->IsBus() ) {
- f << Tabs << " <inParameter>" << endl ;
- f << Tabs << " <inParameter-type>"
- << anInPort->PortType() << "</inParameter-type>"
- << endl ;
- f << Tabs << " <inParameter-name>"
- << anInPort->PortName() << "</inParameter-name>"
- << endl ;
- f << Tabs << " </inParameter>" << endl ;
- const OutPort * anOutPort = GetNodeOutPort( anInPort->PortIndex() ) ;
- f << Tabs << " <outParameter>" << endl ;
- f << Tabs << " <outParameter-type>"
- << anOutPort->PortType() << "</outParameter-type>"
- << endl ;
- f << Tabs << " <outParameter-name>"
- << anOutPort->PortName() << "</outParameter-name>"
- << endl ;
- f << Tabs << " </outParameter>" << endl ;
+ QDomElement DataStreamlist = Graph.createElement("DataStream-list") ;
+ node.appendChild( DataStreamlist ) ;
+ for ( i = 0 ; i < ServiceInParameter().length() ; i++ ) {
+ const GraphBase::InPort * anInPort ;
+ anInPort = aNode->GetInPort( ServiceInParameter()[i].Parametername ) ;
+ if ( anInPort->IsDataStream() ) {
+ cdebug << "SaveXML " << ServiceInParameter()[i].Parametername
+ << " InDataStreamPort " << anInPort->Kind() << endl ;
+ QDomElement inParameter = Graph.createElement("inParameter") ;
+ DataStreamlist.appendChild(inParameter) ;
+ QDomElement inParametertype = Graph.createElement("inParameter-type") ;
+ if ( strlen( ServiceInParameter()[i].Parametertype ) ) {
+ aField = Graph.createTextNode( strdup( ServiceInParameter()[i].Parametertype ) ) ;
+ }
+ else {
+ aField = Graph.createTextNode( "?" ) ;
}
+ inParameter.appendChild(inParametertype) ;
+ inParametertype.appendChild( aField ) ;
+ QDomElement inParametername = Graph.createElement("inParameter-name") ;
+ if ( strlen( ServiceInParameter()[i].Parametername ) ) {
+ aField = Graph.createTextNode( strdup(ServiceInParameter()[i].Parametername) ) ;
+ }
+ else {
+ aField = Graph.createTextNode( "?" ) ;
+ }
+ inParameter.appendChild(inParametername) ;
+ inParametername.appendChild( aField ) ;
+ }
+ }
+ for ( i = 0 ; i < ServiceOutParameter().length() ; i++ ) {
+ const GraphBase::OutPort * anOutPort ;
+ anOutPort = aNode->GetOutPort( ServiceOutParameter()[i].Parametername ) ;
+ if ( anOutPort->IsDataStream() ) {
+ cdebug << "SaveXML " << ServiceOutParameter()[i].Parametername
+ << " OutDataStreamPort " << anOutPort->Kind() << endl ;
+ QDomElement outParameter = Graph.createElement("outParameter") ;
+ DataStreamlist.appendChild(outParameter) ;
+ QDomElement outParametertype = Graph.createElement("outParameter-type") ;
+ if ( strlen( ServiceOutParameter()[i].Parametertype ) ) {
+ aField = Graph.createTextNode( strdup(ServiceOutParameter()[i].Parametertype) ) ;
+ }
+ else {
+ aField = Graph.createTextNode( "?" ) ;
+ }
+ outParameter.appendChild(outParametertype) ;
+ outParametertype.appendChild( aField ) ;
+ QDomElement outParametername = Graph.createElement("outParameter-name") ;
+ if ( strlen( ServiceOutParameter()[i].Parametername ) ) {
+ aField = Graph.createTextNode( strdup(ServiceOutParameter()[i].Parametername) ) ;
+ }
+ else {
+ aField = Graph.createTextNode( "?" ) ;
+ }
+ outParameter.appendChild(outParametername) ;
+ outParametername.appendChild( aField ) ;
}
}
-#endif
// f << Tabs << "</Parameter-list>" << endl ;
// f << Tabs << "<PyFunction-list>" << endl ;
aField = Graph.createTextNode( aYCoordinate ) ;
node.appendChild( yposition ) ;
yposition.appendChild( aField ) ;
+ cdebug_out << "SaveXML Node " << Name() << endl ;
return true ;
}
<< anInPort->PortType() << "' )" << endl ;
}
}
+// for ( i = 0 ; i < GetNodeOutPortsSize() ; i++ ) {
+// const GraphBase::OutPort * anOutPort = GetNodeOutPort(i) ;
+// if ( anOutPort->IsInLine() || anOutPort->IsSwitch() ) {
+// f << Name() << ".OutPort( '" << anOutPort->PortName()
+// << "' , '" << anOutPort->PortType() << "' )" << endl ;
+// }
+// }
+ }
+ if ( !IsDataFlowNode() ) {
+ int i ;
+ for ( i = 0 ; i < GetNodeInPortsSize() ; i++ ) {
+ const GraphBase::InPort * anInPort = GetNodeInPort(i) ;
+ if ( anInPort->IsDataStream() ) {
+ f << Name() << ".InDataStreamPort( '" << anInPort->PortName() << "' , '"
+ << anInPort->PortType() << "' )" << endl ;
+ }
+ }
for ( i = 0 ; i < GetNodeOutPortsSize() ; i++ ) {
const GraphBase::OutPort * anOutPort = GetNodeOutPort(i) ;
- if ( anOutPort->IsInLine() || anOutPort->IsSwitch() ) {
- f << Name() << ".OutPort( '" << anOutPort->PortName()
+ if ( anOutPort->IsDataStream() ) {
+ f << Name() << ".OutDataStreamPort( '" << anOutPort->PortName()
<< "' , '" << anOutPort->PortType() << "' )" << endl ;
}
}