3 # SUPERV Supervision : contains the implementation of interfaces of SuperVision described in SUPERV.idl
5 # Copyright (C) 2003 CEA/DEN, EDF R&D
13 from salome import orb
14 from salome import lcc
15 from salome import naming_service
16 from salome import CORBA
18 import SALOME_ModuleCatalog
21 from LifeCycleCORBA import *
22 from SALOME_NamingServicePy import *
25 import SALOME_ModuleCatalog
27 # from libSuperVision_Swig import SuperV_Swig
28 # print 'SuperV_Swig imported'
31 orb = CORBA.ORB_init([''], CORBA.ORB_ID)
32 lcc = LifeCycleCORBA(orb)
33 naming_service = SALOME_NamingServicePy_i(orb)
40 # SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
41 # SuperVision.Swig = 1
42 # print 'SuperV_Swig created'
44 # SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
45 # SuperVision.Swig = 0
46 # print 'Supervision Component loaded'
48 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
51 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
55 def PortInputFloat(obj, x):
56 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
58 def PortInputLong(obj, x):
59 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
61 def PortInputObject(obj, x):
63 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
65 return obj.Input( SuperVision.AnyValue( x ) )
67 def PortInputString(obj, x):
68 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
70 def InputFloat(obj, nodein_port, x):
71 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
73 def InputLong(obj, nodein_port, x):
74 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
76 def InputObject(obj, nodein_port, x):
78 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
80 return obj.Input(nodein_port, SuperVision.AnyValue( x ) )
82 def InputString(obj, nodein_port, x):
83 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
87 typestring = re.compile(r"_[^_]+_([^_]+)_.*")
89 def getRealArgs(self,args):
95 types.append(typestring.match(self).group(1))
98 types.append(type(self))
103 types.append(typestring.match(a).group(1))
106 types.append(type(a))
109 return tuple(types), tuple(realargs)
111 bs_AddInput_valuedict = {
112 (InstanceType, FloatType) : PortInputFloat,
113 (InstanceType, IntType) : PortInputLong,
114 (InstanceType, StringType) : PortInputString,
115 (InstanceType, InstanceType) : PortInputObject,
116 (InstanceType, StringType, FloatType) : InputFloat,
117 (InstanceType, StringType, IntType) : InputLong,
118 (InstanceType, StringType, StringType) : InputString,
119 (InstanceType, StringType, InstanceType) : InputObject,
120 (InstanceType, StringType, ListType) : InputObject,
124 def Args( aService , aNodeName , verbose ):
125 lenin = len( aService.ServiceinParameter )
126 infos = aNodeName + 'info = "'
127 infos = infos + 'NodeName : ' + aNodeName + '\\n'
128 infos = infos + 'ServiceName : ' + aService.ServiceName + '\\n'
129 infos = infos + 'PortNames : \\n'
130 defnames = aNodeName + " = " + "'" + aNodeName + "' ; "
133 argname = aNodeName + aService.ServiceinParameter[ i ].Parametername
134 valname = aNodeName + "\\\\"
135 valname = valname + aService.ServiceinParameter[ i ].Parametername
136 defnames = defnames + argname + " = " + "'" + valname + "' ; "
137 infos = infos + str(i) + '. ' + argname + ' : Input'
138 infos = infos + str(i) + ' '
139 infos = infos + aService.ServiceinParameter[ i ].Parametername + ' '
140 infos = infos + aService.ServiceinParameter[ i ].Parametertype + '\\n'
142 lenout = len( aService.ServiceoutParameter )
145 argname = aNodeName + aService.ServiceoutParameter[ i ].Parametername
146 valname = aNodeName + "\\\\"
147 valname = valname + aService.ServiceoutParameter[ i ].Parametername
148 defnames = defnames + argname + " = " + "'" + valname + "' ; "
149 infos = infos + str(lenin+i) + '. ' + argname + ' : Output'
150 infos = infos + str(i) + ' '
151 infos = infos + aService.ServiceoutParameter[ i ].Parametername + ' '
152 infos = infos + aService.ServiceoutParameter[ i ].Parametertype + '\\n'
155 defnames = defnames + infos
157 defnames = defnames + " ; print " + aNodeName + "info"
160 def Service_Swig( aCatalogService ) :
161 aService = SuperVision.Service()
162 aService.ServiceName = aCatalogService.ServiceName
164 while i < len( aCatalogService.ServiceinParameter ) :
165 p = SuperVision.ServicesParameter( aCatalogService.ServiceinParameter[i].Parametertype , aCatalogService.ServiceinParameter[i].Parametername )
166 SuperVision.AddInParameter( aService , p )
169 while i < len( aCatalogService.ServiceoutParameter ) :
170 p = SuperVision.ServicesParameter( aCatalogService.ServiceoutParameter[i].Parametertype , aCatalogService.ServiceoutParameter[i].Parametername )
171 SuperVision.AddOutParameter( aService , p )
175 ##########################################################
177 ##########################################################
178 def __init__( self , aNode , Verbose ):
180 self.N.Verbose = Verbose
184 return self.N.Service()
187 def CreationDate( self ):
188 return self.N.CreationDate()
189 def LastUpdateDate( self ):
190 return self.N.LastUpdateDate()
192 return self.N.Version()
194 return self.N.Author()
196 return self.N.Comment()
198 def SetName( self , aNewName ):
199 return self.N.SetName( aNewName )
200 def SetAuthor( self , anAuthor ):
201 return self.N.SetAuthor( anAuthor )
202 def SetComment( self , aComment ):
203 return self.N.SetComment( aComment )
206 print "Name ",self.N.Name()
207 if self.N.IsFactory() :
208 print "ComponentName ",self.N.GetComponentName()
209 print "InterfaceName ",self.N.GetInterfaceName()
210 if self.N.IsStreamGraph() :
211 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
212 print "Timeout",Timeout
213 print "DataStreamTrace",DataStreamTrace
214 print "DeltaTime",DeltaTime
215 aService = self.N.Service()
216 print "Service Name ",aService.ServiceName
217 lenin = len( aService.ServiceinParameter )
218 print " ",lenin," input argument(s) :"
221 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
223 lenout = len( aService.ServiceoutParameter )
224 print " ",lenout," output argument(s) :"
227 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
229 aKind = self.N.Kind()
230 print "KindOfNode",aKind
231 aFirstCreation = self.N.CreationDate()
232 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
233 aLastModification = self.N.LastUpdateDate()
234 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
235 print "Version ",self.N.Version()
236 print "Author ",self.N.Author()
237 if self.N.IsFactory() :
238 print "Container ",self.N.GetContainer()
239 print "Comment ",self.N.Comment()
240 print "Coords ",self.N.X()," ",self.N.Y()
241 def Port( self , aPortName ):
242 aPort = self.N.Port( aPortName )
244 myPort = Port( aPort , self.N.Verbose )
247 print "Error while creating the Port : ",aPortName
249 def Input( self , *args ):
250 types, realargs = getRealArgs(self.N,args)
251 fn = bs_AddInput_valuedict[types]
252 anInput = apply( fn, realargs)
254 myInput = Port( anInput , self.N.Verbose )
256 ErrMsg = "Failed to create the Input"
260 def InStreamPort( self , aParameterName , aParameterType , aDependency ):
261 aPort = self.N.InStreamPort( aParameterName , aParameterType , aDependency )
263 myPort = StreamPort( aPort , self.N.Verbose )
266 print "Error while creating the Port : ",aParameterName
268 def OutStreamPort( self , aParameterName , aParameterType , aDependency ):
269 aPort = self.N.OutStreamPort( aParameterName , aParameterType , aDependency )
271 myPort = StreamPort( aPort , self.N.Verbose )
274 print "Error while creating the Port : ",aParameterName
276 def GetInPort( self , aParameterName ):
277 aPort = self.N.GetInPort( aParameterName )
279 myPort = Port( aPort , self.N.Verbose )
282 print "Error while creating the Port : ",aParameterName
284 def GetOutPort( self , aParameterName ):
285 aPort = self.N.GetOutPort( aParameterName )
287 myPort = Port( aPort , self.N.Verbose )
290 print "Error while creating the Port : ",aParameterName
292 def GetInStreamPort( self , aParameterName ):
293 aPort = self.N.GetInStreamPort( aParameterName )
295 myPort = StreamPort( aPort , self.N.Verbose )
298 print "Error while creating the Port : ",aParameterName
300 def GetOutStreamPort( self , aParameterName ):
301 aPort = self.N.GetOutStreamPort( aParameterName )
303 myPort = StreamPort( aPort , self.N.Verbose )
306 print "Error while creating the Port : ",aParameterName
309 ports = self.N.Ports()
311 while i < len( ports ) :
312 ports[ i ] = Port( ports[i] , self.N.Verbose )
315 def StreamPorts( self ):
316 ports = self.N.StreamPorts()
318 while i < len( ports ) :
319 ports[ i ] = StreamPort( ports[i] , self.N.Verbose )
322 def AllPorts( self ):
323 allports = self.N.Ports()
324 lenports = len( allports )
327 allports[ i ] = Port( allports[i] , self.N.Verbose )
329 ports = self.N.StreamPorts()
331 while i < len( ports ) :
332 allports.append( StreamPort( ports[i] , self.N.Verbose ) )
335 def ListPorts( self , *args ):
336 if len( args ) == 0 :
337 aName = self.N.Name()
340 ports = self.AllPorts()
344 portsname = ports[ 0 ].Name()
345 bs = portsname.find('\\')
347 portsname1,portsname2 = portsname.split('\\')
348 portsname = portsname1 + portsname2
349 if ports[ 0 ].IsInput():
350 listofports = 'I' + aName + portsname
352 listofports = 'O' + aName + portsname
354 while i < len( ports ) :
355 portsname = ports[ i ].Name()
356 bs = portsname.find('\\')
358 portsname1,portsname2 = portsname.split('\\')
359 portsname = portsname1 + portsname2
360 if ports[ i ].IsInput():
361 listofports = listofports + ',' + 'I' + aName + portsname
363 listofports = listofports + ',' + 'O' + aName + portsname
366 if len( ports ) == 1 :
367 listofports = "[" + listofports + "] = " + aName + ".AllPorts()"
369 listofports = listofports + " = " + aName + ".AllPorts()"
371 def PrintPorts( self ):
372 ports = self.AllPorts()
374 while i < len( ports ) :
376 if ports[ i ].IsInput() :
378 if ( ports[ i ].IsDataStream() ) & ( self.N.IsStreamGraph() == 0 ) :
379 if ports[ i ].IsInput() :
380 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = ports[ i ].Params()
381 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
383 numberofvalues = ports[ i ].NumberOfValues()
384 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),'NumberOfValues',numberofvalues
386 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
389 links = self.N.Links()
391 while i < len( links ) :
392 links[ i ] = Link( links[i] , self.N.Verbose )
395 def StreamLinks( self ) :
396 links = self.N.StreamLinks()
398 while i < len( links ) :
399 links[ i ] = StreamLink( links[i] , self.N.Verbose )
402 def AllLinks( self ) :
403 alllinks = self.N.Links()
404 lenlinks = len( alllinks )
407 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
409 links = self.N.StreamLinks()
411 while i < len( links ) :
412 alllinks.append( StreamLink( links[i] , self.N.Verbose ) )
415 def ListLinks( self , *args ):
416 links = self.AllLinks()
418 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
419 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
420 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
421 listoflinks = listoflinks + links[ 0 ].InPort().Name()
423 while i < len( links ) :
424 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
425 listoflinks = listoflinks + links[ i ].OutPort().Name()
426 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
427 listoflinks = listoflinks + links[ i ].InPort().Name()
430 if len( args ) == 0 :
431 aName = self.N.Name()
434 if len( links ) == 1 :
435 listoflinks = "[" + listoflinks + "] = " + aName + ".AllLinks()"
437 listoflinks = listoflinks + " = " + aName + ".AllLinks()"
439 def PrintLinks( self ):
440 links = self.AllLinks()
442 while i < len( links ) :
445 def IsStreamGraph( self ):
446 return self.N.IsStreamGraph()
448 return self.N.IsGraph()
449 def IsComputing( self ):
450 return self.N.IsComputing()
451 def IsFactory( self ):
452 return self.N.IsFactory()
453 def IsInLine( self ):
454 return self.N.IsInLine()
456 return self.N.IsGOTO()
458 return self.N.IsLoop()
459 def IsEndLoop( self ):
460 return self.N.IsEndLoop()
461 def IsSwitch( self ):
462 return self.N.IsSwitch()
463 def IsEndSwitch( self ):
464 return self.N.IsEndSwitch()
465 def SubGraph( self ):
466 return self.N.SubGraph()
468 return self.N.Thread()
469 def IsWaiting( self ):
470 return self.N.IsWaiting()
471 def IsRunning( self ):
472 return self.N.IsRunning()
474 return self.N.IsDone()
475 def IsSuspended( self ):
476 return self.N.IsSuspended()
478 return self.N.State()
480 return self.N.Control()
481 def ControlClear( self ):
482 return self.N.ControlClear()
483 def AutoState( self ):
484 return self.N.AutoState()
486 return self.N.ReadyW()
487 def RunningW( self ):
488 return self.N.RunningW()
490 return self.N.DoneW()
491 def SuspendedW( self ):
492 return self.N.SuspendedW()
494 return self.N.ReRun()
496 return self.N.ReStart()
497 def ReRunAt( self , aNodeName ):
498 return self.N.ReRunAt( aNodeName )
499 def ReStartAt( self , aNodeName ):
500 return self.N.ReStartAt( aNodeName )
505 def KillDone( self ):
506 return self.N.KillDone()
508 return self.N.Suspend()
509 def SuspendDone( self ):
510 return self.N.SuspendDone()
512 return self.N.Resume()
515 def Coords( self , X , Y ):
516 return self.N.Coords( X , Y )
524 return self.N.CpuUsed()
526 ##########################################################
528 ##########################################################
529 def __init__( self , aNode , Verbose ):
531 self.N.Verbose = Verbose
532 def GetComponentName( self ):
533 return self.N.GetComponentName()
534 def GetInterfaceName( self ):
535 return self.N._get_interfaceName()
536 def GetContainer( self ):
537 return self.N.GetContainer()
538 def SetComponentName( self , aComponentName ):
539 return self.N.SetComponentName( aComponentName )
540 def SetInterfaceName( self , anInterfaceName ):
541 return self.N.SetInterfaceName( anInterfaceName )
542 def SetContainer( self , aComputer ):
543 return self.N.SetContainer( aComputer )
545 ##########################################################
547 ##########################################################
548 def __init__( self , aNode , Verbose ):
550 self.N.Verbose = Verbose
551 def Edit( self , FuncName , PyFunc ) :
554 suf = str(random.randrange(1,10000))
555 file = '/tmp/' + FuncName + '_' + suf + '.py'
559 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
563 while ( i < len( PyFunc ) ) :
564 print i,'/',len( PyFunc ),PyFunc[ i ]
565 os.write( fd , PyFunc[ i ] + '\n' )
568 edit = '${EDITOR} ' + file
570 fd = os.open( file , os.O_RDONLY )
571 line = os.read( fd , 132 )
575 line = os.read( fd , 132 )
577 PyFunc = res.splitlines()
579 while i < len( PyFunc ) :
583 print "Open of",file,"failed."
585 def SetPyFunction( self , FuncName , aPyFunction ):
586 return self.N.SetPyFunction( FuncName , aPyFunction )
587 def PyFunction( self ):
588 return self.N.PyFunction()
589 def PyFuncName( self ):
590 return self.N.PyFuncName()
591 def InPort( self , aParameterName , aParameterType ):
592 aPort = self.N.InPort( aParameterName ,
595 myPort = Port( aPort , self.N.Verbose )
598 print "Error while creating the Port : ",aParameterName
600 def OutPort( self , aParameterName , aParameterType ):
601 aPort = self.N.OutPort( aParameterName ,
604 myPort = Port( aPort , self.N.Verbose )
607 print "Error while creating the Port : ",aParameterName
610 PyFunc = self.N.PyFunction()
611 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
612 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
614 ##########################################################
616 ##########################################################
617 def __init__( self , aNode , Verbose ):
619 self.N.Verbose = Verbose
620 def SetCoupled( self , anInLineNode ):
622 node = self.N.SetCoupled( anInLineNode )
627 node = self.N.Coupled()
630 node = INode( node , self.N.Verbose )
632 node = LNode( node , self.N.Verbose )
633 elif node.IsEndLoop() :
634 node = ELNode( node , self.N.Verbose )
635 elif node.IsSwitch() :
636 node = SNode( node , self.N.Verbose )
637 elif node.IsEndSwitch() :
638 node = ESNode( node , self.N.Verbose )
641 ##########################################################
643 ##########################################################
644 def __init__( self , aNode , Verbose ):
646 self.N.Verbose = Verbose
647 def SetPyInit( self , InitName , aPyFunction ):
648 return self.N.SetPyInit( InitName , aPyFunction )
650 return self.N.PyInit()
651 def PyInitName( self ) :
652 return self.N.PyInitName()
654 PyFunc = self.N.PyFunction()
655 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
656 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
657 def SetPyMore( self , MoreName , aPyFunction ):
658 return self.N.SetPyMore( MoreName , aPyFunction )
660 return self.N.PyMore()
661 def PyMoreName( self ) :
662 return self.N.PyMoreName()
664 PyMore = self.N.PyMore()
665 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
666 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
667 def SetPyNext( self , NextName , aPyFunction ):
668 return self.N.SetPyNext( NextName , aPyFunction )
670 return self.N.PyNext()
671 def PyNextName( self ) :
672 return self.N.PyNextName()
674 PyNext = self.N.PyNext()
675 PyNext = self.Edit( self.N.PyNextName() , PyNext )
676 self.N.SetPyNext( self.N.PyNextName() , PyNext )
678 ##########################################################
680 ##########################################################
681 def __init__( self , aNode , Verbose ):
683 self.N.Verbose = Verbose
685 ##########################################################
687 ##########################################################
688 def __init__( self , aNode , Verbose ):
690 self.N.Verbose = Verbose
692 ##########################################################
694 ##########################################################
695 def __init__( self , aNode , Verbose ):
697 self.N.Verbose = Verbose
699 ##########################################################
700 #class ServicesParameter_Swig :
701 ##########################################################
702 # def __init__( self , aServicesParameter ):
703 # self.Parametertype = aServicesParameter.Parametertype
704 # self.Parametername = aServicesParameter.Parametername
706 ##########################################################
708 ##########################################################
709 def __init__( self , aName ):
711 graph = SuperVision.Graph( aName )
714 graph = aName.G.Copy()
718 if graph.IsStreamGraph() :
719 aGraph = graph.ToStreamGraph()
721 graph = StreamGraph( aGraph )
723 print "Graph creation failed"
729 print "Graph creation failed"
730 def CNode( self , *args ):
731 if len( args ) == 1 :
734 aComponent = args[ 0 ]
735 anInterface = args[ 1 ]
737 NodeComponent = modulecatalog.GetComponent( aComponent )
738 aService = NodeComponent.GetService( anInterface , aService )
739 aNode = self.G.CNode( aService )
741 myNode = CNode( aNode , self.G.Verbose )
743 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
747 def Node( self , aComponent , anInterface , aService ):
748 #if SuperVision.Swig :
749 #aService = Service_Swig( aService )
750 return self.FNode( aComponent , anInterface , aService )
751 def FNode( self , aComponent , anInterface , aService ):
752 NodeComponent = modulecatalog.GetComponent( aComponent )
753 aService = NodeComponent.GetService( anInterface , aService )
754 #if SuperVision.Swig :
755 #aService = Service_Swig( aService )
756 aNode = self.G.FNode( aComponent , anInterface , aService )
758 myNode = FNode( aNode , self.G.Verbose )
760 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
764 def INode( self , FuncName , aPythonFunction ):
765 aNode = self.G.INode( FuncName , aPythonFunction )
767 myNode = INode( aNode , self.G.Verbose )
769 ErrMsg = "Failed to create a Node"
773 def GNode( self , FuncName , aPythonFunction , anINode ):
774 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
776 myNode = GNode( aNode , self.G.Verbose )
778 ErrMsg = "Failed to create a Node"
782 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
783 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
785 myNode = LNode( aNode , self.G.Verbose )
786 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
787 return myNode,myEndOfLoop
788 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
792 def SNode( self , FuncName , aPythonFunction ):
793 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
795 myNode = SNode( aNode , self.G.Verbose )
796 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
797 return myNode,myEndOfSwitch
798 ErrMsg = "Failed to create a Node"
802 def PrintService( self , aComponent , anInterface , aService ):
803 NodeComponent = modulecatalog.GetComponent( aComponent )
804 aService = NodeComponent.GetService( anInterface , aService )
805 print "ServiceName ",aService.ServiceName," :"
806 lenin = len( aService.ServiceinParameter )
807 print " ",lenin," input argument(s) :"
810 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
812 lenout = len( aService.ServiceoutParameter )
813 print " ",lenout," output argument(s) :"
816 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
818 def Link( self , aFromNodePort , aToNodePort ):
819 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
821 myLink = Link( aLink , self.G.Verbose )
823 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
827 def Import( self , anXmlFileName ):
828 return self.G.Import( anXmlFileName )
829 def Export( self , anXmlFileName ):
830 return self.G.Export( anXmlFileName )
831 def IsReadOnly( self ) :
832 return self.G.IsReadOnly()
833 def ComponentRef( self , aFactoryServer , aComponent ) :
834 return self.G.ComponentRef( aFactoryServer , aComponent )
836 return self.G.IsValid()
837 def IsExecutable( self ):
838 return self.G.IsExecutable()
839 def IsEditing( self ):
840 return self.G.IsEditing()
841 def IsExecuting( self ):
842 return self.G.IsExecuting()
843 def LevelMax( self ):
844 return self.G.LevelMax()
845 def ThreadsMax( self ):
846 return self.G.ThreadsMax()
847 def GraphsNumber( self ):
848 return self.G.GraphsNumber()
849 def LevelNodes( self , aLevel ):
850 nodes = self.G.LevelNodes( aLevel )
851 return self.nodesTuple( nodes )
852 def Run( self , *args ):
854 aService = self.Service()
858 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
859 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
863 def Start( self , *args ):
865 aService = self.Service()
869 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
870 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
873 return self.G.Start()
875 sts,aNode,anEvent,aState = self.G.Event()
877 return sts,aNode,anEvent,aState
878 def EventNoW( self ):
879 sts,aNode,anEvent,aState = self.G.EventNoW()
881 return sts,aNode,anEvent,aState
883 sts,aNode,anEvent,aState = self.G.EventW()
885 return sts,aNode,anEvent,aState
888 sts,aNode,anEvent,aState = self.G.EventW()
890 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
893 return self.G.Threads()
894 def SuspendedThreads( self ):
895 return self.G.SuspendedThreads()
896 def LastLevelDone( self ):
897 return self.G.LastLevelDone()
898 def Verbose( self , verbose ):
899 preverbose = self.G.Verbose
900 self.G.Verbose = verbose
903 nodes = self.G.Nodes()
904 return self.nodesTuple( nodes )
905 def nodesTuple( self , nodes ) :
906 n = len( nodes.CNodes )
911 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
914 n = len( nodes.FNodes )
917 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
920 n = len( nodes.INodes )
923 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
926 n = len( nodes.GNodes )
929 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
932 n = len( nodes.LNodes )
935 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
938 n = len( nodes.ELNodes )
941 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
944 n = len( nodes.SNodes )
947 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
950 n = len( nodes.ESNodes )
953 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
957 def ListNodes( self , *args ):
961 listofnodes = nodes[ 0 ].Name()
963 while i < len( nodes ) :
964 listofnodes = listofnodes + ',' + nodes[ i ].Name()
967 if len( args ) == 0 :
968 aName = self.N.Name()
971 if len( nodes ) == 1 :
972 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
974 listofnodes = listofnodes + " = " + aName + ".Nodes()"
976 def PrintNodes( self ):
984 def PrintThreads( self ):
987 while i < len( nodes ) :
988 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i].AutoState()
991 links = self.G.GLinks()
993 linkslen = len( links )
994 #print 'GLinks ',linkslen,'Links'
996 links[ i ] = Link( links[i] , self.G.Verbose )
998 def GStreamLinks( self ):
999 streamlinks = self.G.GStreamLinks()
1001 #print 'GStreamLinks ',len( streamlinks ),'StreamLinks'
1002 while i < len( streamlinks ) :
1003 streamlinks[ i ] = StreamLink( streamlinks[i] , self.G.Verbose )
1006 def GAllLinks( self ) :
1007 alllinks = self.G.GLinks()
1008 lenlinks = len( alllinks )
1010 while i < lenlinks :
1011 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
1013 links = self.G.StreamLinks()
1015 while j < len(links) :
1016 alllinks.append( StreamLink( links[j] , self.N.Verbose ) )
1020 def ListLinks( self , *args ):
1021 links = self.GAllLinks()
1023 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
1024 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
1025 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
1026 listoflinks = listoflinks + links[ 0 ].InPort().Name()
1028 while i < len( links ) :
1029 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
1030 listoflinks = listoflinks + links[ i ].OutPort().Name()
1031 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
1032 listoflinks = listoflinks + links[ i ].InPort().Name()
1035 if len( args ) == 0 :
1036 aName = self.N.Name()
1039 if len( links ) == 1 :
1040 listoflinks = "[" + listoflinks + "] = " + aName + ".GAllLinks()"
1042 listoflinks = listoflinks + " = " + aName + ".GAllLinks()"
1044 def PrintLinks( self ):
1045 links = self.GAllLinks()
1047 while i < len( links ) :
1051 graphs = self.G.Graphs()
1054 while i < len( graphs ) :
1055 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
1056 outgraphs[ i ].Merge( graphs[i] )
1060 aCopy = self.G.Copy()
1062 myCopy = Graph( aCopy )
1064 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1068 def ToStreamGraph( self ):
1069 aGraph = self.G.ToStreamGraph()
1071 return StreamGraph( aGraph )
1073 def Merge( self , aGraph ):
1074 return self.G.Merge( aGraph.G )
1075 def Destroy( self ):
1078 ##########################################################
1079 class GraphE(Graph):
1080 ##########################################################
1081 def __init__( self , aName ):
1082 graph = SuperVision.GraphE( aName )
1087 def ToStreamGraph( self ):
1088 aGraph = self.G.ToStreamGraph()
1090 return StreamGraphE( aGraph )
1093 ##########################################################
1094 class StreamGraph(Graph):
1095 ##########################################################
1096 def __init__( self , aName ):
1098 graph = SuperVision.StreamGraph( aName )
1101 graph = aName.G.StreamCopy()
1110 print "StreamGraph creation failed"
1111 def StreamCopy( self ):
1112 aCopy = self.G.StreamCopy()
1114 myCopy = StreamGraph( aCopy )
1116 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1120 def StreamLink( self , anOutStreamPort , anInStreamPort ) :
1121 aStreamLink = self.G.StreamLink( anOutStreamPort.P , anInStreamPort.P )
1122 if aStreamLink!= None:
1123 myStreamLink = StreamLink( aStreamLink , self.G.Verbose )
1125 ErrMsg = "Failed to make a StreamLink in " + self.G.Name()
1129 def SetStreamParams( self , Timeout , DataStreamTrace , DeltaTime ):
1130 return self.G.SetStreamParams( Timeout , DataStreamTrace , DeltaTime )
1131 def StreamParams( self ):
1132 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
1133 return Timeout,DataStreamTrace,DeltaTime
1134 def ToFlowGraph( self ):
1135 return self.G.ToFlowGraph()
1137 ##########################################################
1138 class StreamGraphE(StreamGraph):
1139 ##########################################################
1140 def __init__( self , aName ):
1141 graph = SuperVision.StreamGraphE( aName )
1147 ##########################################################
1149 ##########################################################
1150 def __init__( self , aValue , Verbose ):
1152 self.V.Verbose = Verbose
1153 def ToString( self ):
1154 return self.V.ToString()
1156 return self.V.ToAny()
1157 def Destroy( self ):
1160 ##########################################################
1162 ##########################################################
1163 def __init__( self , aPort , Verbose ):
1165 self.P.Verbose = Verbose
1166 def Input( self , *args ):
1167 types, realargs = getRealArgs(self.P,args)
1168 fn = bs_AddInput_valuedict[types]
1169 anInput = apply( fn, realargs)
1172 aNode = self.P.Node()
1174 if aNode.IsComputing() :
1175 myNode = CNode( aNode , self.P.Verbose )
1176 elif aNode.IsFactory() :
1177 myNode = FNode( aNode , self.P.Verbose )
1178 elif aNode.IsInLine() :
1179 myNode = INode( aNode , self.P.Verbose )
1180 elif aNode.IsGOTO() :
1181 myNode = GNode( aNode , self.P.Verbose )
1182 elif aNode.IsLoop() :
1183 myNode = LNode( aNode , self.P.Verbose )
1184 elif aNode.IsEndLoop() :
1185 myNode = ELNode( aNode , self.P.Verbose )
1186 elif aNode.IsSwitch() :
1187 myNode = SNode( aNode , self.P.Verbose )
1188 elif aNode.IsEndSwitch() :
1189 myNode = ESNode( aNode , self.P.Verbose )
1195 return self.P.Name()
1197 return self.P.Type()
1199 aLink = self.P.Link()
1201 myLink = Link( aLink , self.P.Verbose )
1203 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1208 links = self.P.Links()
1210 while i < len( links ) :
1211 links[ i ] = Link( links[i] , self.P.Verbose )
1214 def PrintLinks( self ):
1215 links = self.P.Links()
1217 while i < len( links ) :
1218 Link( links[ i ] , self.P.Verbose ).Print()
1220 def IsInput( self ):
1221 return self.P.IsInput()
1222 def IsLinked( self ):
1223 return self.P.IsLinked()
1224 def HasInput( self ):
1225 return self.P.HasInput()
1227 return self.P.Kind()
1228 def IsParam( self ):
1229 return self.P.IsParam()
1231 return self.P.IsGate()
1233 return self.P.IsLoop()
1234 def IsInLine( self ):
1235 return self.P.IsInLine()
1236 def IsSwitch( self ):
1237 return self.P.IsSwitch()
1238 def IsEndSwitch( self ):
1239 return self.P.IsEndSwitch()
1240 def IsDataStream( self ):
1241 return self.P.IsDataStream()
1242 # def IsBus( self ):
1243 # return self.P.IsBus()
1245 return self.P.Done()
1247 return self.P.State()
1248 def ToString( self ):
1249 return self.P.ToString()
1251 return self.P.ToAny()
1253 if self.P.IsInput() :
1254 if self.P.IsLinked() :
1255 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1257 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1259 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1260 def Destroy( self ):
1263 ##########################################################
1264 class StreamPort(Port):
1265 ##########################################################
1266 def __init__( self , aPort , Verbose ):
1268 self.P.Verbose = Verbose
1269 def StreamLink( self ) :
1270 return self.P.StreamLink()
1271 def Dependency( self ) :
1272 return self.P.Dependency()
1273 def SetDependency( self , aDependency ) :
1274 return self.P.SetDependency( aDependency )
1275 def Params( self ) :
1276 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = self.P.Params()
1277 return sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
1278 def SetParams( self , aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation ) :
1279 return self.P.SetParams( aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation )
1280 def NumberOfValues( self ) :
1281 return self.P.NumberOfValues()
1282 def SetNumberOfValues( self , aNumberOfValues ) :
1283 return self.P.SetNumberOfValues( aNumberOfValues )
1285 ##########################################################
1287 ##########################################################
1288 def __init__( self , aLink , Verbose ):
1290 self.L.Verbose = Verbose
1291 def OutPort( self ):
1292 aPort = self.L.OutPort()
1294 myPort = Port( aPort , self.L.Verbose )
1297 print "Error while getting the Port : "
1300 aPort = self.L.InPort()
1302 myPort = Port( aPort , self.L.Verbose )
1305 print "Error while getting the Port : "
1308 anOutPort = self.L.OutPort()
1309 anOutPortName = anOutPort.Name()
1310 anOutPortKind = anOutPort.Kind()
1311 anOutPortValue = anOutPort.ToString()
1312 anOutNode = anOutPort.Node()
1313 anOutNodeName = anOutNode.Name()
1314 anInPort = self.L.InPort()
1315 anInPortName = anInPort.Name()
1316 anInPortKind = anInPort.Kind()
1317 anInNode = anInPort.Node()
1318 anInNodeName = anInNode.Name()
1319 print anOutNodeName,'(',anOutPortName,' ',anOutPortKind,') =',anOutPortValue,' --> ',anInNodeName,'(',anInPortName,')',' ',anInPortKind
1320 def CoordsSize( self ):
1321 return self.L.CoordsSize()
1322 def AddCoord( self , index , X , Y ):
1323 return self.L.AddCoord( index , X , Y )
1324 def ChangeCoord( self , index , X , Y ):
1325 return self.L.ChangeCoord( index , X , Y )
1326 def RemoveCoord( self , index ):
1327 return self.L.RemoveCoord( index )
1328 def Coords( self , index ):
1329 return self.L.Coords( index )
1330 def destroy( self ):
1335 ##########################################################
1336 class StreamLink(Link):
1337 ##########################################################
1338 def __init__( self , aLink , Verbose ):
1340 self.L.Verbose = Verbose
1341 def OutStreamPort( self ):
1342 aPort = self.L.OutStreamPort()
1344 myPort = StreamPort( aPort , self.L.Verbose )
1347 print "Error while getting the Port : "
1349 def InStreamPort( self ):
1350 aPort = self.L.InStreamPort()
1352 myPort = StreamPort( aPort , self.L.Verbose )
1355 print "Error while getting the Port : "