3 # SUPERV Supervision : contains the implementation of interfaces of SuperVision described in SUPERV.idl
5 # Copyright (C) 2003 CEA/DEN, EDF R&D
9 # File : batchmode_SuperV.py
13 from batchmode_salome import orb
14 from batchmode_salome import lcc
15 from batchmode_salome import naming_service
16 from batchmode_salome import CORBA
17 from batchmode_salome import myStudy
18 import SALOME_ModuleCatalog
23 from LifeCycleCORBA import *
24 from SALOME_NamingServicePy import *
27 import SALOME_ModuleCatalog
28 from batchmode_salome import *
30 # from libSuperVision_Swig import SuperV_Swig
31 # print 'SuperV_Swig imported'
34 orb = CORBA.ORB_init([''], CORBA.ORB_ID)
35 #lcc = LifeCycleCORBA(orb)
36 while lcc._catalog == None:
37 lcc = LifeCycleCORBA(orb)
38 naming_service = SALOME_NamingServicePy_i(orb)
45 import SALOMEDS_Attributes_idl
47 # SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
48 # SuperVision.Swig = 1
49 # print 'SuperV_Swig created'
51 # SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
52 # SuperVision.Swig = 0
53 # print 'Supervision Component loaded'
55 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
59 while modulecatalog == None:
60 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
62 myBuilder = myStudy.NewBuilder()
63 father = myStudy.FindComponent("SUPERV")
65 father = myBuilder.NewComponent("SUPERV")
66 A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");
67 FName = A1._narrow(SALOMEDS.AttributeName)
68 #FName.SetValue("Supervision")
69 Comp = modulecatalog.GetComponent( "SUPERV" )
70 FName.SetValue(Comp._get_componentusername())
71 A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap");
72 aPixmap = A2._narrow(SALOMEDS.AttributePixMap);
73 aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
74 myBuilder.DefineComponentInstance(father,SuperVision)
77 def PortInputFloat(obj, x):
78 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
80 def PortInputLong(obj, x):
81 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
83 def PortInputObject(obj, x):
85 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
87 return obj.Input( SuperVision.AnyValue( x ) )
89 def PortInputString(obj, x):
90 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
92 def InputFloat(obj, nodein_port, x):
93 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
95 def InputLong(obj, nodein_port, x):
96 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
98 def InputObject(obj, nodein_port, x):
100 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
102 return obj.Input(nodein_port, SuperVision.AnyValue( x ) )
104 def InputString(obj, nodein_port, x):
105 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
109 dataflow = SuperVision.getGraph(ior)
111 itr = myStudy.NewChildIterator(father)
114 res,A=item.FindAttribute("AttributeName")
116 aName = A._narrow(SALOMEDS.AttributeName)
117 if aName.Value() == name :
118 res, A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
119 anIOR = A._narrow(SALOMEDS.AttributeIOR);
120 anIOR.SetValue(dataflow.getIOR())
123 obj = myBuilder.NewObject(father)
124 A=myBuilder.FindOrCreateAttribute(obj, "AttributeName")
125 aName=A._narrow(SALOMEDS.AttributeName)
127 A=myBuilder.FindOrCreateAttribute(obj, "AttributeIOR")
128 anIOR = A._narrow(SALOMEDS.AttributeIOR)
129 anIOR.SetValue(dataflow.getIOR())
131 typestring = re.compile(r"_[^_]+_([^_]+)_.*")
133 def getRealArgs(self,args):
139 types.append(typestring.match(self).group(1))
142 types.append(type(self))
143 realargs.append(self)
147 types.append(typestring.match(a).group(1))
150 types.append(type(a))
153 return tuple(types), tuple(realargs)
155 bs_AddInput_valuedict = {
156 (InstanceType, FloatType) : PortInputFloat,
157 (InstanceType, IntType) : PortInputLong,
158 (InstanceType, StringType) : PortInputString,
159 (InstanceType, InstanceType) : PortInputObject,
160 (InstanceType, StringType, FloatType) : InputFloat,
161 (InstanceType, StringType, IntType) : InputLong,
162 (InstanceType, StringType, StringType) : InputString,
163 (InstanceType, StringType, InstanceType) : InputObject,
164 (InstanceType, StringType, ListType) : InputObject,
168 def Args( aService , aNodeName , verbose ):
169 lenin = len( aService.ServiceinParameter )
170 infos = aNodeName + 'info = "'
171 infos = infos + 'NodeName : ' + aNodeName + '\\n'
172 infos = infos + 'ServiceName : ' + aService.ServiceName + '\\n'
173 infos = infos + 'PortNames : \\n'
174 defnames = aNodeName + " = " + "'" + aNodeName + "' ; "
177 argname = aNodeName + aService.ServiceinParameter[ i ].Parametername
178 valname = aNodeName + "\\\\"
179 valname = valname + aService.ServiceinParameter[ i ].Parametername
180 defnames = defnames + argname + " = " + "'" + valname + "' ; "
181 infos = infos + str(i) + '. ' + argname + ' : Input'
182 infos = infos + str(i) + ' '
183 infos = infos + aService.ServiceinParameter[ i ].Parametername + ' '
184 infos = infos + aService.ServiceinParameter[ i ].Parametertype + '\\n'
186 lenout = len( aService.ServiceoutParameter )
189 argname = aNodeName + aService.ServiceoutParameter[ i ].Parametername
190 valname = aNodeName + "\\\\"
191 valname = valname + aService.ServiceoutParameter[ i ].Parametername
192 defnames = defnames + argname + " = " + "'" + valname + "' ; "
193 infos = infos + str(lenin+i) + '. ' + argname + ' : Output'
194 infos = infos + str(i) + ' '
195 infos = infos + aService.ServiceoutParameter[ i ].Parametername + ' '
196 infos = infos + aService.ServiceoutParameter[ i ].Parametertype + '\\n'
199 defnames = defnames + infos
201 defnames = defnames + " ; print " + aNodeName + "info"
204 def Service_Swig( aCatalogService ) :
205 aService = SuperVision.Service()
206 aService.ServiceName = aCatalogService.ServiceName
208 while i < len( aCatalogService.ServiceinParameter ) :
209 p = SuperVision.ServicesParameter( aCatalogService.ServiceinParameter[i].Parametertype , aCatalogService.ServiceinParameter[i].Parametername )
210 SuperVision.AddInParameter( aService , p )
213 while i < len( aCatalogService.ServiceoutParameter ) :
214 p = SuperVision.ServicesParameter( aCatalogService.ServiceoutParameter[i].Parametertype , aCatalogService.ServiceoutParameter[i].Parametername )
215 SuperVision.AddOutParameter( aService , p )
219 ##########################################################
221 ##########################################################
222 def __init__( self , aNode , Verbose ):
224 self.N.Verbose = Verbose
228 return self.N.Service()
231 def CreationDate( self ):
232 return self.N.CreationDate()
233 def LastUpdateDate( self ):
234 return self.N.LastUpdateDate()
236 return self.N.Version()
238 return self.N.Author()
240 return self.N.Comment()
242 def SetName( self , aNewName ):
243 return self.N.SetName( aNewName )
244 def SetAuthor( self , anAuthor ):
245 return self.N.SetAuthor( anAuthor )
246 def SetComment( self , aComment ):
247 return self.N.SetComment( aComment )
250 print "Name ",self.N.Name()
251 if self.N.IsFactory() :
252 print "ComponentName ",self.N.GetComponentName()
253 print "InterfaceName ",self.N.GetInterfaceName()
254 if self.N.IsStreamGraph() :
255 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
256 print "Timeout",Timeout
257 print "DataStreamTrace",DataStreamTrace
258 print "DeltaTime",DeltaTime
259 aService = self.N.Service()
260 print "Service Name ",aService.ServiceName
261 lenin = len( aService.ServiceinParameter )
262 print " ",lenin," input argument(s) :"
265 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
267 lenout = len( aService.ServiceoutParameter )
268 print " ",lenout," output argument(s) :"
271 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
273 aKind = self.N.Kind()
274 print "KindOfNode",aKind
275 aFirstCreation = self.N.CreationDate()
276 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
277 aLastModification = self.N.LastUpdateDate()
278 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
279 print "Version ",self.N.Version()
280 print "Author ",self.N.Author()
281 if self.N.IsFactory() :
282 print "Container ",self.N.GetContainer()
283 print "Comment ",self.N.Comment()
284 print "Coords ",self.N.X()," ",self.N.Y()
285 def Port( self , aPortName ):
286 aPort = self.N.Port( aPortName )
288 myPort = Port( aPort , self.N.Verbose )
291 print "Error while creating the Port : ",aPortName
293 def Input( self , *args ):
294 types, realargs = getRealArgs(self.N,args)
295 fn = bs_AddInput_valuedict[types]
296 anInput = apply( fn, realargs)
298 myInput = Port( anInput , self.N.Verbose )
300 ErrMsg = "Failed to create the Input"
304 # def BusPort( self , InOutParameterName , InOutParameterType ):
305 # sts,inp,outp = self.N.BusPort( InOutParameterName ,
306 # InOutParameterType )
307 # inp = Port( inp , self.N.Verbose )
308 # outp = Port( outp , self.N.Verbose )
309 # return sts,inp,outp
310 # def BusPorts( self , InputParameterName , InputParameterType ,
311 # OutputParameterName , OutputParameterType ):
312 # sts,inp,outp = self.N.BusPorts( InputParameterName ,
313 # InputParameterType ,
314 # OutputParameterName ,
315 # OutputParameterType )
316 # inp = Port( inp , self.N.Verbose )
317 # outp = Port( outp , self.N.Verbose )
318 # return sts,inp,outp
319 def InStreamPort( self , aParameterName , aParameterType , aDependency ):
320 aPort = self.N.InStreamPort( aParameterName , aParameterType , aDependency )
322 myPort = StreamPort( aPort , self.N.Verbose )
325 print "Error while creating the Port : ",aParameterName
327 def OutStreamPort( self , aParameterName , aParameterType , aDependency ):
328 aPort = self.N.OutStreamPort( aParameterName , aParameterType , aDependency )
330 myPort = StreamPort( aPort , self.N.Verbose )
333 print "Error while creating the Port : ",aParameterName
335 def GetInPort( self , aParameterName ):
336 aPort = self.N.GetInPort( aParameterName )
338 myPort = Port( aPort , self.N.Verbose )
341 print "Error while creating the Port : ",aParameterName
343 def GetOutPort( self , aParameterName ):
344 aPort = self.N.GetOutPort( aParameterName )
346 myPort = Port( aPort , self.N.Verbose )
349 print "Error while creating the Port : ",aParameterName
351 def GetInStreamPort( self , aParameterName ):
352 aPort = self.N.GetInStreamPort( aParameterName )
354 myPort = StreamPort( aPort , self.N.Verbose )
357 print "Error while creating the Port : ",aParameterName
359 def GetOutStreamPort( self , aParameterName ):
360 aPort = self.N.GetOutStreamPort( aParameterName )
362 myPort = StreamPort( aPort , self.N.Verbose )
365 print "Error while creating the Port : ",aParameterName
368 ports = self.N.Ports()
370 while i < len( ports ) :
371 ports[ i ] = Port( ports[i] , self.N.Verbose )
374 def StreamPorts( self ):
375 ports = self.N.StreamPorts()
377 while i < len( ports ) :
378 ports[ i ] = StreamPort( ports[i] , self.N.Verbose )
381 def AllPorts( self ):
382 allports = self.N.Ports()
383 lenports = len( allports )
386 allports[ i ] = Port( allports[i] , self.N.Verbose )
388 ports = self.N.StreamPorts()
390 while i < len( ports ) :
391 allports.append( StreamPort( ports[i] , self.N.Verbose ) )
394 def ListPorts( self , *args ):
395 if len( args ) == 0 :
396 aName = self.N.Name()
399 ports = self.AllPorts()
403 portsname = ports[ 0 ].Name()
404 bs = portsname.find('\\')
406 portsname1,portsname2 = portsname.split('\\')
407 portsname = portsname1 + portsname2
408 if ports[ 0 ].IsInput():
409 listofports = 'I' + aName + portsname
411 listofports = 'O' + aName + portsname
413 while i < len( ports ) :
414 portsname = ports[ i ].Name()
415 bs = portsname.find('\\')
417 portsname1,portsname2 = portsname.split('\\')
418 portsname = portsname1 + portsname2
419 if ports[ i ].IsInput():
420 listofports = listofports + ',' + 'I' + aName + portsname
422 listofports = listofports + ',' + 'O' + aName + portsname
425 if len( ports ) == 1 :
426 listofports = "[" + listofports + "] = " + aName + ".AllPorts()"
428 listofports = listofports + " = " + aName + ".AllPorts()"
430 def PrintPorts( self ):
431 ports = self.AllPorts()
433 while i < len( ports ) :
435 if ports[ i ].IsInput() :
437 if ( ports[ i ].IsDataStream() ) & ( self.N.IsStreamGraph() == 0 ) :
438 if ports[ i ].IsInput() :
439 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = ports[ i ].Params()
440 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
442 numberofvalues = ports[ i ].NumberOfValues()
443 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),'NumberOfValues',numberofvalues
445 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
448 links = self.N.Links()
450 while i < len( links ) :
451 links[ i ] = Link( links[i] , self.N.Verbose )
454 def StreamLinks( self ) :
455 links = self.N.StreamLinks()
457 while i < len( links ) :
458 links[ i ] = StreamLink( links[i] , self.N.Verbose )
461 def AllLinks( self ) :
462 alllinks = self.N.Links()
463 lenlinks = len( alllinks )
466 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
468 links = self.N.StreamLinks()
470 while i < len( links ) :
471 alllinks.append( StreamLink( links[i] , self.N.Verbose ) )
474 def ListLinks( self , *args ):
475 links = self.AllLinks()
477 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
478 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
479 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
480 listoflinks = listoflinks + links[ 0 ].InPort().Name()
482 while i < len( links ) :
483 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
484 listoflinks = listoflinks + links[ i ].OutPort().Name()
485 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
486 listoflinks = listoflinks + links[ i ].InPort().Name()
489 if len( args ) == 0 :
490 aName = self.N.Name()
493 if len( links ) == 1 :
494 listoflinks = "[" + listoflinks + "] = " + aName + ".AllLinks()"
496 listoflinks = listoflinks + " = " + aName + ".AllLinks()"
498 def PrintLinks( self ):
499 links = self.AllLinks()
501 while i < len( links ) :
504 def IsStreamGraph( self ):
505 return self.N.IsStreamGraph()
507 return self.N.IsGraph()
509 return self.N.IsMacro()
510 def IsFlowMacro( self ):
511 return self.N.IsFlowMacro()
512 def IsStreamMacro( self ):
513 return self.N.IsStreamMacro()
514 def IsComputing( self ):
515 return self.N.IsComputing()
516 def IsFactory( self ):
517 return self.N.IsFactory()
518 def IsInLine( self ):
519 return self.N.IsInLine()
521 return self.N.IsGOTO()
523 return self.N.IsLoop()
524 def IsEndLoop( self ):
525 return self.N.IsEndLoop()
526 def IsSwitch( self ):
527 return self.N.IsSwitch()
528 def IsEndSwitch( self ):
529 return self.N.IsEndSwitch()
530 def GraphLevel( self ) :
531 return self.N.GraphLevel()
532 def SubGraph( self ):
533 return self.N.SubGraph()
534 def SubStreamGraph( self ):
535 return self.N.SubStreamGraph()
537 return self.N.Thread()
538 def IsWaiting( self ):
539 return self.N.IsWaiting()
540 def IsRunning( self ):
541 return self.N.IsRunning()
543 return self.N.IsDone()
544 def IsSuspended( self ):
545 return self.N.IsSuspended()
547 return self.N.State()
549 return self.N.Control()
550 def ControlClear( self ):
551 return self.N.ControlClear()
553 return self.N.ReadyW()
554 def RunningW( self ):
555 return self.N.RunningW()
557 return self.N.DoneW()
558 def SuspendedW( self ):
559 return self.N.SuspendedW()
561 return self.N.ReRun()
563 return self.N.ReStart()
564 def ReRunAt( self , aNodeName ):
565 return self.N.ReRunAt( aNodeName )
566 def ReStartAt( self , aNodeName ):
567 return self.N.ReStartAt( aNodeName )
572 def KillDone( self ):
573 return self.N.KillDone()
575 return self.N.Suspend()
576 def SuspendDone( self ):
577 return self.N.SuspendDone()
579 return self.N.Resume()
582 def Coords( self , X , Y ):
583 return self.N.Coords( X , Y )
591 return self.N.CpuUsed()
593 ##########################################################
595 ##########################################################
596 def __init__( self , aNode , Verbose ):
598 self.N.Verbose = Verbose
599 def GetComponentName( self ):
600 return self.N.GetComponentName()
601 def GetInterfaceName( self ):
602 return self.N._get_interfaceName()
603 def GetContainer( self ):
604 return self.N.GetContainer()
605 def SetComponentName( self , aComponentName ):
606 return self.N.SetComponentName( aComponentName )
607 def SetInterfaceName( self , anInterfaceName ):
608 return self.N.SetInterfaceName( anInterfaceName )
609 def SetContainer( self , aComputer ):
610 return self.N.SetContainer( aComputer )
612 ##########################################################
614 ##########################################################
615 def __init__( self , aNode , Verbose ):
617 self.N.Verbose = Verbose
618 def Edit( self , FuncName , PyFunc ) :
621 suf = str(random.randrange(1,10000))
622 file = '/tmp/' + FuncName + '_' + suf + '.py'
626 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
630 while ( i < len( PyFunc ) ) :
631 print i,'/',len( PyFunc ),PyFunc[ i ]
632 os.write( fd , PyFunc[ i ] + '\n' )
635 edit = '${EDITOR} ' + file
637 fd = os.open( file , os.O_RDONLY )
638 line = os.read( fd , 132 )
642 line = os.read( fd , 132 )
644 PyFunc = res.splitlines()
646 while i < len( PyFunc ) :
650 print "Open of",file,"failed."
652 def SetPyFunction( self , FuncName , aPyFunction ):
653 return self.N.SetPyFunction( FuncName , aPyFunction )
654 def PyFunction( self ):
655 return self.N.PyFunction()
656 def PyFuncName( self ):
657 return self.N.PyFuncName()
658 def InPort( self , aParameterName , aParameterType ):
659 aPort = self.N.InPort( aParameterName ,
662 myPort = Port( aPort , self.N.Verbose )
665 print "Error while creating the Port : ",aParameterName
667 def OutPort( self , aParameterName , aParameterType ):
668 aPort = self.N.OutPort( aParameterName ,
671 myPort = Port( aPort , self.N.Verbose )
674 print "Error while creating the Port : ",aParameterName
677 PyFunc = self.N.PyFunction()
678 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
679 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
681 ##########################################################
683 ##########################################################
684 def __init__( self , aNode , Verbose ):
686 self.N.Verbose = Verbose
687 def SetCoupled( self , anInLineNode ):
689 node = self.N.SetCoupled( anInLineNode )
694 node = self.N.Coupled()
697 node = INode( node , self.N.Verbose )
699 node = LNode( node , self.N.Verbose )
700 elif node.IsEndLoop() :
701 node = ELNode( node , self.N.Verbose )
702 elif node.IsSwitch() :
703 node = SNode( node , self.N.Verbose )
704 elif node.IsEndSwitch() :
705 node = ESNode( node , self.N.Verbose )
708 ##########################################################
710 ##########################################################
711 def __init__( self , aNode , Verbose ):
713 self.N.Verbose = Verbose
714 def SetPyInit( self , InitName , aPyFunction ):
715 return self.N.SetPyInit( InitName , aPyFunction )
717 return self.N.PyInit()
718 def PyInitName( self ) :
719 return self.N.PyInitName()
721 PyFunc = self.N.PyFunction()
722 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
723 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
724 def SetPyMore( self , MoreName , aPyFunction ):
725 return self.N.SetPyMore( MoreName , aPyFunction )
727 return self.N.PyMore()
728 def PyMoreName( self ) :
729 return self.N.PyMoreName()
731 PyMore = self.N.PyMore()
732 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
733 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
734 def SetPyNext( self , NextName , aPyFunction ):
735 return self.N.SetPyNext( NextName , aPyFunction )
737 return self.N.PyNext()
738 def PyNextName( self ) :
739 return self.N.PyNextName()
741 PyNext = self.N.PyNext()
742 PyNext = self.Edit( self.N.PyNextName() , PyNext )
743 self.N.SetPyNext( self.N.PyNextName() , PyNext )
745 ##########################################################
747 ##########################################################
748 def __init__( self , aNode , Verbose ):
750 self.N.Verbose = Verbose
752 ##########################################################
754 ##########################################################
755 def __init__( self , aNode , Verbose ):
757 self.N.Verbose = Verbose
759 ##########################################################
761 ##########################################################
762 def __init__( self , aNode , Verbose ):
764 self.N.Verbose = Verbose
766 ##########################################################
767 #class ServicesParameter_Swig :
768 ##########################################################
769 # def __init__( self , aServicesParameter ):
770 # self.Parametertype = aServicesParameter.Parametertype
771 # self.Parametername = aServicesParameter.Parametername
773 ##########################################################
775 ##########################################################
776 def __init__( self , aName ):
778 graph = SuperVision.Graph( aName )
781 graph = aName.G.Copy()
785 if graph.IsStreamGraph() :
786 aGraph = graph.ToStreamGraph()
788 graph = StreamGraph( aGraph )
790 print "Graph creation failed"
796 print "Graph creation failed"
797 def CNode( self , *args ):
798 if len( args ) == 1 :
801 aComponent = args[ 0 ]
802 anInterface = args[ 1 ]
804 NodeComponent = modulecatalog.GetComponent( aComponent )
805 aService = NodeComponent.GetService( anInterface , aService )
806 aNode = self.G.CNode( aService )
808 myNode = CNode( aNode , self.G.Verbose )
810 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
814 def Node( self , aComponent , anInterface , aService ):
815 #if SuperVision.Swig :
816 #aService = Service_Swig( aService )
817 return self.FNode( aComponent , anInterface , aService )
818 def FNode( self , aComponent , anInterface , aService ):
819 NodeComponent = modulecatalog.GetComponent( aComponent )
820 aService = NodeComponent.GetService( anInterface , aService )
821 #if SuperVision.Swig :
822 #aService = Service_Swig( aService )
823 aNode = self.G.FNode( aComponent , anInterface , aService )
825 myNode = FNode( aNode , self.G.Verbose )
827 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
831 def INode( self , FuncName , aPythonFunction ):
832 aNode = self.G.INode( FuncName , aPythonFunction )
834 myNode = INode( aNode , self.G.Verbose )
836 ErrMsg = "Failed to create a Node"
840 def GNode( self , FuncName , aPythonFunction , anINode ):
841 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
843 myNode = GNode( aNode , self.G.Verbose )
845 ErrMsg = "Failed to create a Node"
849 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
850 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
852 myNode = LNode( aNode , self.G.Verbose )
853 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
854 return myNode,myEndOfLoop
855 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
859 def SNode( self , FuncName , aPythonFunction ):
860 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
862 myNode = SNode( aNode , self.G.Verbose )
863 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
864 return myNode,myEndOfSwitch
865 ErrMsg = "Failed to create a Node"
869 # def LoopNode( self , aComponent , anInterface , aService , aNodeName ):
870 # NodeComponent = modulecatalog.GetComponent( aComponent )
871 # aService = NodeComponent.GetService( anInterface , aService )
872 # aNode,anEndNode = self.G.LoopNode( aComponent , anInterface , aService , aNodeName )
874 # myEndNode = anEndNode
876 # myNode = Node( aNode , self.G.Verbose )
877 # if anEndNode != None :
878 # myEndNode = Node( anEndNode , self.G.Verbose )
879 # if ( aNode != None ) & ( anEndNode != None ) :
880 # return myNode,myEndNode
881 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
882 # if self.G.Verbose :
884 # return aNode,anEndNode
885 # def SwitchNode( self , aComponent , anInterface , aService , aNodeName ):
886 # NodeComponent = modulecatalog.GetComponent( aComponent )
887 # aService = NodeComponent.GetService( anInterface , aService )
888 # aNode,anEndNode = self.G.SwitchNode( aComponent , anInterface , aService , aNodeName )
890 # myEndNode = anEndNode
892 # myNode = Node( aNode , self.G.Verbose )
893 # if anEndNode != None :
894 # myEndNode = Node( anEndNode , self.G.Verbose )
895 # if ( aNode != None ) & ( anEndNode != None ) :
896 # return myNode,myEndNode
897 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
898 # if self.G.Verbose :
900 # return aNode,anEndNode
901 # def LNode( self , aNodeName ):
902 # aNode = self.G.LNode( aNodeName )
904 # myNode = Node( aNode , self.G.Verbose )
906 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
907 # if self.G.Verbose :
910 # def LService( self , aComponent , anInterface , aService ):
911 # NodeComponent = modulecatalog.GetComponent( aComponent )
912 # aService = NodeComponent.GetService( anInterface , aService )
913 # aNode = self.G.LService( aComponent , anInterface , aService )
915 # myNode = Node( aNode , self.G.Verbose )
917 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
918 # if self.G.Verbose :
921 # def CNode( self , aNodeName ):
922 # aNode = self.G.CNode( aNodeName )
924 # myNode = Node( aNode , self.G.Verbose )
926 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
927 # if self.G.Verbose :
930 # def CService( self , aComponent , anInterface , aService ):
931 # NodeComponent = modulecatalog.GetComponent( aComponent )
932 # aService = NodeComponent.GetService( anInterface , aService )
933 # aNode = self.G.CService( aComponent , anInterface , aService )
935 # myNode = Node( aNode , self.G.Verbose )
937 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
938 # if self.G.Verbose :
941 def MNode( self , aGraphXml ):
942 aMNode = self.G.MNode( aGraphXml )
944 myMNode = MNode( aMNode , self.G.Verbose )
946 ErrMsg = "Failed to create a MNode"
950 def GraphMNode( self , aGraph ):
951 aGraphMNode = self.G.GraphMNode( aGraph.G )
952 if aGraphMNode != None :
953 myMNode = MNode( aGraphMNode , self.G.Verbose )
955 ErrMsg = "Failed to create a MNode"
959 def FlowObjRef( self ) :
960 aGraph = self.G.FlowObjRef()
962 myGraph = Graph( aGraph )
965 def StreamObjRef( self ) :
966 aGraph = self.G.StreamObjRef()
968 myGraph = StreamGraph( aGraph )
971 def PrintService( self , aComponent , anInterface , aService ):
972 NodeComponent = modulecatalog.GetComponent( aComponent )
973 aService = NodeComponent.GetService( anInterface , aService )
974 print "ServiceName ",aService.ServiceName," :"
975 lenin = len( aService.ServiceinParameter )
976 print " ",lenin," input argument(s) :"
979 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
981 lenout = len( aService.ServiceoutParameter )
982 print " ",lenout," output argument(s) :"
985 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
987 def Link( self , aFromNodePort , aToNodePort ):
988 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
990 myLink = Link( aLink , self.G.Verbose )
992 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
996 def Import( self , anXmlFileName ):
997 return self.G.Import( anXmlFileName )
998 def Export( self , anXmlFileName ):
999 return self.G.Export( anXmlFileName )
1000 def IsReadOnly( self ) :
1001 return self.G.IsReadOnly()
1002 def ComponentRef( self , aFactoryServer , aComponent ) :
1003 return self.G.ComponentRef( aFactoryServer , aComponent )
1004 def IsValid( self ):
1005 return self.G.IsValid()
1006 def IsExecutable( self ):
1007 return self.G.IsExecutable()
1008 def IsEditing( self ):
1009 return self.G.IsEditing()
1010 def IsExecuting( self ):
1011 return self.G.IsExecuting()
1012 def LevelMax( self ):
1013 return self.G.LevelMax()
1014 def ThreadsMax( self ):
1015 return self.G.ThreadsMax()
1016 def SubGraphsNumber( self ):
1017 return self.G.SubGraphsNumber()
1018 def LevelNodes( self , aLevel ):
1019 nodes = self.G.LevelNodes( aLevel )
1020 return self.nodesTuple( nodes )
1021 def Run( self , *args ):
1023 aService = self.Service()
1027 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
1028 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
1032 def Start( self , *args ):
1034 aService = self.Service()
1038 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
1039 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
1042 return self.G.Start()
1044 sts,aNode,anEvent,aState = self.G.Event()
1046 return sts,aNode,anEvent,aState
1047 def EventNoW( self ):
1048 sts,aNode,anEvent,aState = self.G.EventNoW()
1050 return sts,aNode,anEvent,aState
1052 sts,aNode,anEvent,aState = self.G.EventW()
1054 return sts,aNode,anEvent,aState
1057 sts,aNode,anEvent,aState = self.G.EventW()
1059 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
1061 def Threads( self ):
1062 return self.G.Threads()
1063 def SuspendedThreads( self ):
1064 return self.G.SuspendedThreads()
1065 def LastLevelDone( self ):
1066 return self.G.LastLevelDone()
1067 def Verbose( self , verbose ):
1068 preverbose = self.G.Verbose
1069 self.G.Verbose = verbose
1072 nodes = self.G.Nodes()
1073 return self.nodesTuple( nodes )
1074 def nodesTuple( self , nodes ) :
1075 n = len( nodes.CNodes )
1080 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
1083 n = len( nodes.FNodes )
1086 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
1089 n = len( nodes.INodes )
1092 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
1095 n = len( nodes.GNodes )
1098 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
1101 n = len( nodes.LNodes )
1104 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
1107 n = len( nodes.ELNodes )
1110 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
1113 n = len( nodes.SNodes )
1116 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
1119 n = len( nodes.ESNodes )
1122 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
1125 n = len( nodes.Graphs )
1128 pynodes.append( MNode( nodes.Graphs[i] , self.G.Verbose ) )
1132 def ListNodes( self , *args ):
1133 nodes = self.Nodes()
1136 listofnodes = nodes[ 0 ].Name()
1138 while i < len( nodes ) :
1139 listofnodes = listofnodes + ',' + nodes[ i ].Name()
1142 if len( args ) == 0 :
1143 aName = self.N.Name()
1146 if len( nodes ) == 1 :
1147 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
1149 listofnodes = listofnodes + " = " + aName + ".Nodes()"
1151 def PrintNodes( self ):
1152 nodes = self.Nodes()
1159 def PrintThreads( self ):
1160 nodes = self.Nodes()
1162 while i < len( nodes ) :
1163 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i]
1166 links = self.G.GLinks()
1168 linkslen = len( links )
1169 #print 'GLinks ',linkslen,'Links'
1170 while i < linkslen :
1171 links[ i ] = Link( links[i] , self.G.Verbose )
1173 def GStreamLinks( self ):
1174 streamlinks = self.G.GStreamLinks()
1176 #print 'GStreamLinks ',len( streamlinks ),'StreamLinks'
1177 while i < len( streamlinks ) :
1178 streamlinks[ i ] = StreamLink( streamlinks[i] , self.G.Verbose )
1181 def GAllLinks( self ) :
1182 alllinks = self.G.GLinks()
1183 lenlinks = len( alllinks )
1185 while i < lenlinks :
1186 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
1188 links = self.G.StreamLinks()
1190 while j < len(links) :
1191 alllinks.append( StreamLink( links[j] , self.N.Verbose ) )
1195 def ListLinks( self , *args ):
1196 links = self.GAllLinks()
1198 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
1199 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
1200 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
1201 listoflinks = listoflinks + links[ 0 ].InPort().Name()
1203 while i < len( links ) :
1204 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
1205 listoflinks = listoflinks + links[ i ].OutPort().Name()
1206 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
1207 listoflinks = listoflinks + links[ i ].InPort().Name()
1210 if len( args ) == 0 :
1211 aName = self.N.Name()
1214 if len( links ) == 1 :
1215 listoflinks = "[" + listoflinks + "] = " + aName + ".GAllLinks()"
1217 listoflinks = listoflinks + " = " + aName + ".GAllLinks()"
1219 def PrintLinks( self ):
1220 links = self.GAllLinks()
1222 while i < len( links ) :
1225 def SubGraphsNodes( self , ):
1226 graphs = self.G.SubGraphsNodes()
1229 while i < len( graphs ) :
1230 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
1231 outgraphs[ i ].Merge( graphs[i] )
1235 aCopy = self.G.Copy()
1237 myCopy = Graph( aCopy )
1239 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1243 def ToStreamGraph( self ):
1244 aGraph = self.G.ToStreamGraph()
1246 return StreamGraph( aGraph )
1248 def SubGraphsNodes( self , aSubGraphsNumber ):
1249 nodes = self.G.SubGraphsNodes( aSubGraphsNumber )
1250 return self.nodesTuple( nodes )
1251 def Merge( self , aGraph ):
1252 return self.G.Merge( aGraph.G )
1253 def Destroy( self ):
1256 ##########################################################
1257 class GraphE(Graph):
1258 ##########################################################
1259 def __init__( self , aName ):
1260 graph = SuperVision.GraphE( aName )
1265 def ToStreamGraph( self ):
1266 aGraph = self.G.ToStreamGraph()
1268 return StreamGraphE( aGraph )
1271 ##########################################################
1273 ##########################################################
1274 def __init__( self , aMNode , Verbose ):
1276 self.G.Verbose = Verbose
1278 self.N.Verbose = Verbose
1280 ##########################################################
1281 class StreamGraph(Graph):
1282 ##########################################################
1283 def __init__( self , aName ):
1285 graph = SuperVision.StreamGraph( aName )
1288 graph = aName.G.StreamCopy()
1297 print "StreamGraph creation failed"
1298 def StreamCopy( self ):
1299 aCopy = self.G.StreamCopy()
1301 myCopy = StreamGraph( aCopy )
1303 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1307 def StreamLink( self , anOutStreamPort , anInStreamPort ) :
1308 aStreamLink = self.G.StreamLink( anOutStreamPort.P , anInStreamPort.P )
1309 if aStreamLink!= None:
1310 myStreamLink = StreamLink( aStreamLink , self.G.Verbose )
1312 ErrMsg = "Failed to make a StreamLink in " + self.G.Name()
1316 def SetStreamParams( self , Timeout , DataStreamTrace , DeltaTime ):
1317 return self.G.SetStreamParams( Timeout , DataStreamTrace , DeltaTime )
1318 def StreamParams( self ):
1319 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
1320 return Timeout,DataStreamTrace,DeltaTime
1321 def ToFlowGraph( self ):
1322 return self.G.ToFlowGraph()
1323 def SubStreamGraphsNumber( self ):
1324 return self.G.SubStreamGraphsNumber()
1325 def SubStreamGraphsNodes( self , aSubStreamGraphsNumber ):
1326 nodes = self.G.SubStreamGraphsNodes( aSubStreamGraphsNumber )
1327 return self.nodesTuple( nodes )
1328 def StreamMerge( self , aStreamGraph ):
1329 return self.G.StreamMerge( aStreamGraph.G )
1331 ##########################################################
1332 class StreamGraphE(StreamGraph):
1333 ##########################################################
1334 def __init__( self , aName ):
1335 graph = SuperVision.StreamGraphE( aName )
1341 ##########################################################
1343 ##########################################################
1344 def __init__( self , aValue , Verbose ):
1346 self.V.Verbose = Verbose
1347 def ToString( self ):
1348 return self.V.ToString()
1350 return self.V.ToAny()
1351 def Destroy( self ):
1354 ##########################################################
1356 ##########################################################
1357 def __init__( self , aPort , Verbose ):
1359 self.P.Verbose = Verbose
1360 def Input( self , *args ):
1361 types, realargs = getRealArgs(self.P,args)
1362 fn = bs_AddInput_valuedict[types]
1363 anInput = apply( fn, realargs)
1366 aNode = self.P.Node()
1368 if aNode.IsComputing() :
1369 myNode = CNode( aNode , self.P.Verbose )
1370 elif aNode.IsFactory() :
1371 myNode = FNode( aNode , self.P.Verbose )
1372 elif aNode.IsInLine() :
1373 myNode = INode( aNode , self.P.Verbose )
1374 elif aNode.IsGOTO() :
1375 myNode = GNode( aNode , self.P.Verbose )
1376 elif aNode.IsLoop() :
1377 myNode = LNode( aNode , self.P.Verbose )
1378 elif aNode.IsEndLoop() :
1379 myNode = ELNode( aNode , self.P.Verbose )
1380 elif aNode.IsSwitch() :
1381 myNode = SNode( aNode , self.P.Verbose )
1382 elif aNode.IsEndSwitch() :
1383 myNode = ESNode( aNode , self.P.Verbose )
1389 return self.P.Name()
1391 return self.P.Type()
1393 aLink = self.P.Link()
1395 myLink = Link( aLink , self.P.Verbose )
1397 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1402 links = self.P.Links()
1404 while i < len( links ) :
1405 links[ i ] = Link( links[i] , self.P.Verbose )
1408 def PrintLinks( self ):
1409 links = self.P.Links()
1411 while i < len( links ) :
1412 Link( links[ i ] , self.P.Verbose ).Print()
1414 def IsInput( self ):
1415 return self.P.IsInput()
1416 def IsLinked( self ):
1417 return self.P.IsLinked()
1418 def HasInput( self ):
1419 return self.P.HasInput()
1421 return self.P.Kind()
1422 def IsParam( self ):
1423 return self.P.IsParam()
1425 return self.P.IsGate()
1427 return self.P.IsLoop()
1428 def IsInLine( self ):
1429 return self.P.IsInLine()
1430 def IsSwitch( self ):
1431 return self.P.IsSwitch()
1432 def IsEndSwitch( self ):
1433 return self.P.IsEndSwitch()
1434 def IsDataStream( self ):
1435 return self.P.IsDataStream()
1436 # def IsBus( self ):
1437 # return self.P.IsBus()
1439 return self.P.Done()
1441 return self.P.State()
1442 def ToString( self ):
1443 return self.P.ToString()
1445 return self.P.ToAny()
1447 if self.P.IsInput() :
1448 if self.P.IsLinked() :
1449 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1451 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1453 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1454 def Destroy( self ):
1457 ##########################################################
1458 class StreamPort(Port):
1459 ##########################################################
1460 def __init__( self , aPort , Verbose ):
1462 self.P.Verbose = Verbose
1463 def StreamLink( self ) :
1464 return self.P.StreamLink()
1465 def Dependency( self ) :
1466 return self.P.Dependency()
1467 def SetDependency( self , aDependency ) :
1468 return self.P.SetDependency( aDependency )
1469 def Params( self ) :
1470 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = self.P.Params()
1471 return sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
1472 def SetParams( self , aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation ) :
1473 return self.P.SetParams( aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation )
1474 def NumberOfValues( self ) :
1475 return self.P.NumberOfValues()
1476 def SetNumberOfValues( self , aNumberOfValues ) :
1477 return self.P.SetNumberOfValues( aNumberOfValues )
1479 ##########################################################
1481 ##########################################################
1482 def __init__( self , aLink , Verbose ):
1484 self.L.Verbose = Verbose
1485 def OutPort( self ):
1486 aPort = self.L.OutPort()
1488 myPort = Port( aPort , self.L.Verbose )
1491 print "Error while getting the Port : "
1494 aPort = self.L.InPort()
1496 myPort = Port( aPort , self.L.Verbose )
1499 print "Error while getting the Port : "
1502 anOutPort = self.L.OutPort()
1503 anOutPortName = anOutPort.Name()
1504 anOutPortKind = anOutPort.Kind()
1505 anOutPortValue = anOutPort.ToString()
1506 anOutNode = anOutPort.Node()
1507 anOutNodeName = anOutNode.Name()
1508 anInPort = self.L.InPort()
1509 anInPortName = anInPort.Name()
1510 anInPortKind = anInPort.Kind()
1511 anInNode = anInPort.Node()
1512 anInNodeName = anInNode.Name()
1513 print anOutNodeName,'(',anOutPortName,' ',anOutPortKind,') =',anOutPortValue,' --> ',anInNodeName,'(',anInPortName,')',' ',anInPortKind
1514 def CoordsSize( self ):
1515 return self.L.CoordsSize()
1516 def AddCoord( self , index , X , Y ):
1517 return self.L.AddCoord( index , X , Y )
1518 def ChangeCoord( self , index , X , Y ):
1519 return self.L.ChangeCoord( index , X , Y )
1520 def RemoveCoord( self , index ):
1521 return self.L.RemoveCoord( index )
1522 def Coords( self , index ):
1523 return self.L.Coords( index )
1524 def destroy( self ):
1529 ##########################################################
1530 class StreamLink(Link):
1531 ##########################################################
1532 def __init__( self , aLink , Verbose ):
1534 self.L.Verbose = Verbose
1535 def OutStreamPort( self ):
1536 aPort = self.L.OutStreamPort()
1538 myPort = StreamPort( aPort , self.L.Verbose )
1541 print "Error while getting the Port : "
1543 def InStreamPort( self ):
1544 aPort = self.L.InStreamPort()
1546 myPort = StreamPort( aPort , self.L.Verbose )
1549 print "Error while getting the Port : "