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
17 import SALOME_ModuleCatalog
20 from LifeCycleCORBA import *
21 from SALOME_NamingServicePy import *
24 import SALOME_ModuleCatalog
26 # from libSuperVision_Swig import SuperV_Swig
27 # print 'SuperV_Swig imported'
30 orb = CORBA.ORB_init([''], CORBA.ORB_ID)
31 lcc = LifeCycleCORBA(orb)
32 naming_service = SALOME_NamingServicePy_i(orb)
39 # SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
40 # SuperVision.Swig = 1
41 # print 'SuperV_Swig created'
43 # SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","Supervision")
44 # SuperVision.Swig = 0
45 # print 'Supervision Component loaded'
47 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","Supervision")
50 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
54 def PortInputFloat(obj, x):
55 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
57 def PortInputLong(obj, x):
58 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
60 def PortInputObject(obj, x):
62 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
64 return obj.Input( SuperVision.AnyValue( x ) )
66 def PortInputString(obj, x):
67 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
69 def InputFloat(obj, nodein_port, x):
70 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
72 def InputLong(obj, nodein_port, x):
73 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
75 def InputObject(obj, nodein_port, x):
77 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
79 return obj.Input(nodein_port, SuperVision.AnyValue( x ) )
81 def InputString(obj, nodein_port, x):
82 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
86 typestring = re.compile(r"_[^_]+_([^_]+)_.*")
88 def getRealArgs(self,args):
94 types.append(typestring.match(self).group(1))
97 types.append(type(self))
102 types.append(typestring.match(a).group(1))
105 types.append(type(a))
108 return tuple(types), tuple(realargs)
110 bs_AddInput_valuedict = {
111 (InstanceType, FloatType) : PortInputFloat,
112 (InstanceType, IntType) : PortInputLong,
113 (InstanceType, StringType) : PortInputString,
114 (InstanceType, InstanceType) : PortInputObject,
115 (InstanceType, StringType, FloatType) : InputFloat,
116 (InstanceType, StringType, IntType) : InputLong,
117 (InstanceType, StringType, StringType) : InputString,
118 (InstanceType, StringType, InstanceType) : InputObject,
119 (InstanceType, StringType, ListType) : InputObject,
123 def Args( aService , aNodeName , verbose ):
124 lenin = len( aService.ServiceinParameter )
125 infos = aNodeName + 'info = "'
126 infos = infos + 'NodeName : ' + aNodeName + '\\n'
127 infos = infos + 'ServiceName : ' + aService.ServiceName + '\\n'
128 infos = infos + 'PortNames : \\n'
129 defnames = aNodeName + " = " + "'" + aNodeName + "' ; "
132 argname = aNodeName + aService.ServiceinParameter[ i ].Parametername
133 valname = aNodeName + "\\\\"
134 valname = valname + aService.ServiceinParameter[ i ].Parametername
135 defnames = defnames + argname + " = " + "'" + valname + "' ; "
136 infos = infos + str(i) + '. ' + argname + ' : Input'
137 infos = infos + str(i) + ' '
138 infos = infos + aService.ServiceinParameter[ i ].Parametername + ' '
139 infos = infos + aService.ServiceinParameter[ i ].Parametertype + '\\n'
141 lenout = len( aService.ServiceoutParameter )
144 argname = aNodeName + aService.ServiceoutParameter[ i ].Parametername
145 valname = aNodeName + "\\\\"
146 valname = valname + aService.ServiceoutParameter[ i ].Parametername
147 defnames = defnames + argname + " = " + "'" + valname + "' ; "
148 infos = infos + str(lenin+i) + '. ' + argname + ' : Output'
149 infos = infos + str(i) + ' '
150 infos = infos + aService.ServiceoutParameter[ i ].Parametername + ' '
151 infos = infos + aService.ServiceoutParameter[ i ].Parametertype + '\\n'
154 defnames = defnames + infos
156 defnames = defnames + " ; print " + aNodeName + "info"
159 def Service_Swig( aCatalogService ) :
160 aService = SuperVision.Service()
161 aService.ServiceName = aCatalogService.ServiceName
163 while i < len( aCatalogService.ServiceinParameter ) :
164 p = SuperVision.ServicesParameter( aCatalogService.ServiceinParameter[i].Parametertype , aCatalogService.ServiceinParameter[i].Parametername )
165 SuperVision.AddInParameter( aService , p )
168 while i < len( aCatalogService.ServiceoutParameter ) :
169 p = SuperVision.ServicesParameter( aCatalogService.ServiceoutParameter[i].Parametertype , aCatalogService.ServiceoutParameter[i].Parametername )
170 SuperVision.AddOutParameter( aService , p )
174 ##########################################################
176 ##########################################################
177 def __init__( self , aNode , Verbose ):
179 self.N.Verbose = Verbose
183 return self.N.Service()
186 def CreationDate( self ):
187 return self.N.CreationDate()
188 def LastUpdateDate( self ):
189 return self.N.LastUpdateDate()
191 return self.N.Version()
193 return self.N.Author()
195 return self.N.Comment()
197 def SetName( self , aNewName ):
198 return self.N.SetName( aNewName )
199 def SetAuthor( self , anAuthor ):
200 return self.N.SetAuthor( anAuthor )
201 def SetComment( self , aComment ):
202 return self.N.SetComment( aComment )
205 print "Name ",self.N.Name()
206 if self.N.IsFactory() :
207 print "ComponentName ",self.N.GetComponentName()
208 print "InterfaceName ",self.N.GetInterfaceName()
209 aService = self.N.Service()
210 print "Service Name ",aService.ServiceName
211 lenin = len( aService.ServiceinParameter )
212 print " ",lenin," input argument(s) :"
215 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
217 lenout = len( aService.ServiceoutParameter )
218 print " ",lenout," output argument(s) :"
221 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
223 aKind = self.N.Kind()
224 print "KindOfNode",aKind
225 aFirstCreation = self.N.CreationDate()
226 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
227 aLastModification = self.N.LastUpdateDate()
228 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
229 print "Version ",self.N.Version()
230 print "Author ",self.N.Author()
231 if self.N.IsFactory() :
232 print "Container ",self.N.GetContainer()
233 print "Comment ",self.N.Comment()
234 print "Coords ",self.N.X()," ",self.N.Y()
235 def Port( self , aPortName ):
236 aPort = self.N.Port( aPortName )
238 myPort = Port( aPort , self.N.Verbose )
241 print "Error while creating the Port : ",aPortName
243 def Input( self , *args ):
244 types, realargs = getRealArgs(self.N,args)
245 fn = bs_AddInput_valuedict[types]
246 anInput = apply( fn, realargs)
248 myInput = Port( anInput , self.N.Verbose )
250 ErrMsg = "Failed to create the Input"
254 # def BusPort( self , InOutParameterName , InOutParameterType ):
255 # sts,inp,outp = self.N.BusPort( InOutParameterName ,
256 # InOutParameterType )
257 # inp = Port( inp , self.N.Verbose )
258 # outp = Port( outp , self.N.Verbose )
259 # return sts,inp,outp
260 # def BusPorts( self , InputParameterName , InputParameterType ,
261 # OutputParameterName , OutputParameterType ):
262 # sts,inp,outp = self.N.BusPorts( InputParameterName ,
263 # InputParameterType ,
264 # OutputParameterName ,
265 # OutputParameterType )
266 # inp = Port( inp , self.N.Verbose )
267 # outp = Port( outp , self.N.Verbose )
268 # return sts,inp,outp
270 ports = self.N.Ports()
272 while i < len( ports ) :
273 ports[ i ] = Port( ports[i] , self.N.Verbose )
276 def ListPorts( self , *args ):
277 if len( args ) == 0 :
278 aName = self.N.Name()
281 ports = self.N.Ports()
284 portsname = ports[ 0 ].Name()
285 bs = portsname.find('\\')
287 portsname1,portsname2 = portsname.split('\\')
288 portsname = portsname1 + portsname2
289 if ports[ 0 ].IsInput():
290 listofports = aName + 'In' + portsname
292 listofports = aName + 'Out' + portsname
294 while i < len( ports ) :
295 portsname = ports[ i ].Name()
296 bs = portsname.find('\\')
298 portsname1,portsname2 = portsname.split('\\')
299 portsname = portsname1 + portsname2
300 if ports[ i ].IsInput():
301 listofports = listofports + ',' + aName + 'In' + portsname
303 listofports = listofports + ',' + aName + 'Out' + portsname
306 if len( ports ) == 1 :
307 listofports = "[" + listofports + "] = " + aName + ".Ports()"
309 listofports = listofports + " = " + aName + ".Ports()"
311 def PrintPorts( self ):
312 ports = self.N.Ports()
314 while i < len( ports ) :
316 if ports[ i ].IsInput() :
318 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
321 links = self.N.Links()
323 while i < len( links ) :
324 links[ i ] = Link( links[i] , self.N.Verbose )
327 def PrintLinks( self ):
330 while i < len( links ) :
334 return self.N.IsGraph()
335 def IsComputing( self ):
336 return self.N.IsComputing()
337 def IsFactory( self ):
338 return self.N.IsFactory()
339 def IsInLine( self ):
340 return self.N.IsInLine()
342 return self.N.IsGOTO()
344 return self.N.IsLoop()
345 def IsEndLoop( self ):
346 return self.N.IsEndLoop()
347 def IsSwitch( self ):
348 return self.N.IsSwitch()
349 def IsEndSwitch( self ):
350 return self.N.IsEndSwitch()
351 def SubGraph( self ):
352 return self.N.SubGraph()
354 return self.N.Thread()
355 def IsWaiting( self ):
356 return self.N.IsWaiting()
357 def IsRunning( self ):
358 return self.N.IsRunning()
360 return self.N.IsDone()
361 def IsSuspended( self ):
362 return self.N.IsSuspended()
364 return self.N.State()
366 return self.N.Control()
367 def ControlClear( self ):
368 return self.N.ControlClear()
369 def AutoState( self ):
370 return self.N.AutoState()
372 return self.N.ReadyW()
373 def RunningW( self ):
374 return self.N.RunningW()
376 return self.N.DoneW()
377 def SuspendedW( self ):
378 return self.N.SuspendedW()
380 return self.N.ReRun()
382 return self.N.ReStart()
383 def ReRunAt( self , aNodeName ):
384 return self.N.ReRunAt( aNodeName )
385 def ReStartAt( self , aNodeName ):
386 return self.N.ReStartAt( aNodeName )
391 def KillDone( self ):
392 return self.N.KillDone()
394 return self.N.Suspend()
395 def SuspendDone( self ):
396 return self.N.SuspendDone()
398 return self.N.Resume()
401 def Coords( self , X , Y ):
402 return self.N.Coords( X , Y )
410 return self.N.CpuUsed()
412 ##########################################################
414 ##########################################################
415 def __init__( self , aNode , Verbose ):
417 self.N.Verbose = Verbose
418 def GetComponentName( self ):
419 return self.N.GetComponentName()
420 def GetInterfaceName( self ):
421 return self.N._get_interfaceName()
422 def GetContainer( self ):
423 return self.N.GetContainer()
424 def SetComponentName( self , aComponentName ):
425 return self.N.SetComponentName( aComponentName )
426 def SetInterfaceName( self , anInterfaceName ):
427 return self.N.SetInterfaceName( anInterfaceName )
428 def SetContainer( self , aComputer ):
429 return self.N.SetContainer( aComputer )
431 ##########################################################
433 ##########################################################
434 def __init__( self , aNode , Verbose ):
436 self.N.Verbose = Verbose
437 def Edit( self , FuncName , PyFunc ) :
438 file = '/tmp/' + FuncName + '.py'
441 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
442 while ( i < len( PyFunc ) ) :
443 os.write( fd , PyFunc[ i ] + '\n' )
445 edit = '${EDITOR} ' + file
447 fd = os.open( file , os.O_RDONLY )
448 line = os.read( fd , 132 )
452 line = os.read( fd , 132 )
453 PyFunc = res.splitlines()
455 while i < len( PyFunc ) :
459 print "Open of",file,"failed."
461 def SetPyFunction( self , FuncName , aPyFunction ):
462 return self.N.SetPyFunction( FuncName , aPyFunction )
463 def PyFunction( self ):
464 return self.N.PyFunction()
465 def PyFuncName( self ):
466 return self.N.PyFuncName()
468 PyFunc = self.N.PyFunction()
469 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
470 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
471 def InPort( self , aParameterName , aParameterType ):
472 aPort = self.N.InPort( aParameterName ,
475 myPort = Port( aPort , self.N.Verbose )
478 print "Error while creating the Port : ",aParameterName
480 def OutPort( self , aParameterName , aParameterType ):
481 aPort = self.N.OutPort( aParameterName ,
484 myPort = Port( aPort , self.N.Verbose )
487 print "Error while creating the Port : ",aParameterName
490 ##########################################################
492 ##########################################################
493 def __init__( self , aNode , Verbose ):
495 self.N.Verbose = Verbose
496 def SetCoupled( self , anInLineNode ):
498 node = self.N.SetCoupled( anInLineNode )
503 node = self.N.Coupled()
506 node = INode( node , self.N.Verbose )
508 node = LNode( node , self.N.Verbose )
509 elif node.IsEndLoop() :
510 node = ELNode( node , self.N.Verbose )
511 elif node.IsSwitch() :
512 node = SNode( node , self.N.Verbose )
513 elif node.IsEndSwitch() :
514 node = ESNode( node , self.N.Verbose )
517 ##########################################################
519 ##########################################################
520 def __init__( self , aNode , Verbose ):
522 self.N.Verbose = Verbose
523 def SetPyInit( self , InitName , aPyFunction ):
524 return self.N.SetPyInit( InitName , aPyFunction )
526 return self.N.PyInit()
527 def PyInitName( self ) :
528 return self.N.PyInitName()
530 PyFunc = self.N.PyFunction()
531 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
532 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
533 def SetPyMore( self , MoreName , aPyFunction ):
534 return self.N.SetPyMore( MoreName , aPyFunction )
536 return self.N.PyMore()
537 def PyMoreName( self ) :
538 return self.N.PyMoreName()
540 PyMore = self.N.PyMore()
541 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
542 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
543 def SetPyNext( self , NextName , aPyFunction ):
544 return self.N.SetPyNext( NextName , aPyFunction )
546 return self.N.PyNext()
547 def PyNextName( self ) :
548 return self.N.PyNextName()
550 PyNext = self.N.PyNext()
551 PyNext = self.Edit( self.N.PyNextName() , PyNext )
552 self.N.SetPyNext( self.N.PyNextName() , PyNext )
554 ##########################################################
556 ##########################################################
557 def __init__( self , aNode , Verbose ):
559 self.N.Verbose = Verbose
561 ##########################################################
563 ##########################################################
564 def __init__( self , aNode , Verbose ):
566 self.N.Verbose = Verbose
568 ##########################################################
570 ##########################################################
571 def __init__( self , aNode , Verbose ):
573 self.N.Verbose = Verbose
575 ##########################################################
576 #class ServicesParameter_Swig :
577 ##########################################################
578 # def __init__( self , aServicesParameter ):
579 # self.Parametertype = aServicesParameter.Parametertype
580 # self.Parametername = aServicesParameter.Parametername
582 ##########################################################
584 ##########################################################
585 def __init__( self , aName ):
587 graph = SuperVision.Graph( aName )
590 graph = aName.G.Copy()
599 print "Graph creation failed"
600 def CNode( self , *args ):
601 if len( args ) == 1 :
604 aComponent = args[ 0 ]
605 anInterface = args[ 1 ]
607 NodeComponent = modulecatalog.GetComponent( aComponent )
608 aService = NodeComponent.GetService( anInterface , aService )
609 aNode = self.G.CNode( aService )
611 myNode = CNode( aNode , self.G.Verbose )
613 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
617 def Node( self , aComponent , anInterface , aService ):
618 if SuperVision.Swig :
619 aService = Service_Swig( aService )
620 return self.FNode( aComponent , anInterface , aService )
621 def FNode( self , aComponent , anInterface , aService ):
622 NodeComponent = modulecatalog.GetComponent( aComponent )
623 aService = NodeComponent.GetService( anInterface , aService )
624 if SuperVision.Swig :
625 aService = Service_Swig( aService )
626 aNode = self.G.FNode( aComponent , anInterface , aService )
628 myNode = FNode( aNode , self.G.Verbose )
630 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
634 def INode( self , FuncName , aPythonFunction ):
635 aNode = self.G.INode( FuncName , aPythonFunction )
637 myNode = INode( aNode , self.G.Verbose )
639 ErrMsg = "Failed to create a Node"
643 def GNode( self , FuncName , aPythonFunction , anINode ):
644 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
646 myNode = GNode( aNode , self.G.Verbose )
648 ErrMsg = "Failed to create a Node"
652 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
653 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
655 myNode = LNode( aNode , self.G.Verbose )
656 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
657 return myNode,myEndOfLoop
658 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
662 def SNode( self , FuncName , aPythonFunction ):
663 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
665 myNode = SNode( aNode , self.G.Verbose )
666 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
667 return myNode,myEndOfSwitch
668 ErrMsg = "Failed to create a Node"
672 # def LoopNode( self , aComponent , anInterface , aService , aNodeName ):
673 # NodeComponent = modulecatalog.GetComponent( aComponent )
674 # aService = NodeComponent.GetService( anInterface , aService )
675 # aNode,anEndNode = self.G.LoopNode( aComponent , anInterface , aService , aNodeName )
677 # myEndNode = anEndNode
679 # myNode = Node( aNode , self.G.Verbose )
680 # if anEndNode != None :
681 # myEndNode = Node( anEndNode , self.G.Verbose )
682 # if ( aNode != None ) & ( anEndNode != None ) :
683 # return myNode,myEndNode
684 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
685 # if self.G.Verbose :
687 # return aNode,anEndNode
688 # def SwitchNode( self , aComponent , anInterface , aService , aNodeName ):
689 # NodeComponent = modulecatalog.GetComponent( aComponent )
690 # aService = NodeComponent.GetService( anInterface , aService )
691 # aNode,anEndNode = self.G.SwitchNode( aComponent , anInterface , aService , aNodeName )
693 # myEndNode = anEndNode
695 # myNode = Node( aNode , self.G.Verbose )
696 # if anEndNode != None :
697 # myEndNode = Node( anEndNode , self.G.Verbose )
698 # if ( aNode != None ) & ( anEndNode != None ) :
699 # return myNode,myEndNode
700 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
701 # if self.G.Verbose :
703 # return aNode,anEndNode
704 # def LNode( self , aNodeName ):
705 # aNode = self.G.LNode( aNodeName )
707 # myNode = Node( aNode , self.G.Verbose )
709 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
710 # if self.G.Verbose :
713 # def LService( self , aComponent , anInterface , aService ):
714 # NodeComponent = modulecatalog.GetComponent( aComponent )
715 # aService = NodeComponent.GetService( anInterface , aService )
716 # aNode = self.G.LService( aComponent , anInterface , aService )
718 # myNode = Node( aNode , self.G.Verbose )
720 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
721 # if self.G.Verbose :
724 # def CNode( self , aNodeName ):
725 # aNode = self.G.CNode( aNodeName )
727 # myNode = Node( aNode , self.G.Verbose )
729 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
730 # if self.G.Verbose :
733 # def CService( self , aComponent , anInterface , aService ):
734 # NodeComponent = modulecatalog.GetComponent( aComponent )
735 # aService = NodeComponent.GetService( anInterface , aService )
736 # aNode = self.G.CService( aComponent , anInterface , aService )
738 # myNode = Node( aNode , self.G.Verbose )
740 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
741 # if self.G.Verbose :
744 def PrintService( self , aComponent , anInterface , aService ):
745 NodeComponent = modulecatalog.GetComponent( aComponent )
746 aService = NodeComponent.GetService( anInterface , aService )
747 print "ServiceName ",aService.ServiceName," :"
748 lenin = len( aService.ServiceinParameter )
749 print " ",lenin," input argument(s) :"
752 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
754 lenout = len( aService.ServiceoutParameter )
755 print " ",lenout," output argument(s) :"
758 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
760 def Link( self , aFromNodePort , aToNodePort ):
761 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
763 myLink = Link( aLink , self.G.Verbose )
765 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
769 def Import( self , anXmlFileName ):
770 return self.G.Import( anXmlFileName )
771 def Export( self , anXmlFileName ):
772 return self.G.Export( anXmlFileName )
773 def IsReadOnly( self ) :
774 return self.G.IsReadOnly()
775 def ComponentRef( self , aFactoryServer , aComponent ) :
776 return self.G.ComponentRef( aFactoryServer , aComponent )
778 return self.G.IsValid()
779 def IsExecutable( self ):
780 return self.G.IsExecutable()
781 def IsEditing( self ):
782 return self.G.IsEditing()
783 def IsExecuting( self ):
784 return self.G.IsExecuting()
785 def LevelMax( self ):
786 return self.G.LevelMax()
787 def ThreadsMax( self ):
788 return self.G.ThreadsMax()
789 def GraphsNumber( self ):
790 return self.G.GraphsNumber()
791 def LevelNodes( self , aLevel ):
792 nodes = self.G.LevelNodes( aLevel )
793 return self.nodesTuple( nodes )
794 def Run( self , *args ):
796 aService = self.Service()
800 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
801 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
805 def Start( self , *args ):
807 aService = self.Service()
811 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
812 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
815 return self.G.Start()
817 sts,aNode,anEvent,aState = self.G.Event()
819 return sts,aNode,anEvent,aState
820 def EventNoW( self ):
821 sts,aNode,anEvent,aState = self.G.EventNoW()
823 return sts,aNode,anEvent,aState
825 sts,aNode,anEvent,aState = self.G.EventW()
827 return sts,aNode,anEvent,aState
830 sts,aNode,anEvent,aState = self.G.EventW()
832 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
835 return self.G.Threads()
836 def SuspendedThreads( self ):
837 return self.G.SuspendedThreads()
838 def LastLevelDone( self ):
839 return self.G.LastLevelDone()
840 def Verbose( self , verbose ):
841 preverbose = self.G.Verbose
842 self.G.Verbose = verbose
845 nodes = self.G.Nodes()
846 return self.nodesTuple( nodes )
847 def nodesTuple( self , nodes ) :
848 n = len( nodes.CNodes )
853 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
856 n = len( nodes.FNodes )
859 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
862 n = len( nodes.INodes )
865 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
868 n = len( nodes.GNodes )
871 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
874 n = len( nodes.LNodes )
877 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
880 n = len( nodes.ELNodes )
883 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
886 n = len( nodes.SNodes )
889 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
892 n = len( nodes.ESNodes )
895 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
899 def ListNodes( self , *args ):
903 listofnodes = nodes[ 0 ].Name()
905 while i < len( nodes ) :
906 listofnodes = listofnodes + ',' + nodes[ i ].Name()
909 if len( args ) == 0 :
910 aName = self.N.Name()
913 if len( nodes ) == 1 :
914 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
916 listofnodes = listofnodes + " = " + aName + ".Nodes()"
918 def PrintNodes( self ):
926 def PrintThreads( self ):
929 while i < len( nodes ) :
930 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i].AutoState()
933 links = self.G.GLinks()
935 while i < len( links ) :
936 links[ i ] = Link( links[i] , self.G.Verbose )
939 def ListLinks( self , *args ):
940 links = self.G.GLinks()
942 listoflinks = links[ 0 ].InPort().Node().Name()
943 listoflinks = listoflinks + links[ 0 ].InPort().Name()
945 while i < len( links ) :
946 listoflinks = listoflinks + ',' + links[ i ].InPort().Node().Name()
947 listoflinks = listoflinks + links[ i ].InPort().Name()
950 if len( args ) == 0 :
951 aName = self.N.Name()
954 if len( links ) == 1 :
955 listoflinks = "[" + listoflinks + "] = " + aName + ".GLinks()"
957 listoflinks = listoflinks + " = " + aName + ".GLinks()"
959 def PrintLinks( self ):
960 links = self.G.GLinks()
962 while i < len( links ) :
963 Link( links[ i ] , self.G.Verbose ).Print()
966 graphs = self.G.Graphs()
969 while i < len( graphs ) :
970 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
971 outgraphs[ i ].Merge( graphs[i] )
975 aCopy = self.G.Copy()
977 myCopy = Graph( aCopy )
979 ErrMsg = "Failed to get a Copy of " + self.G.Name()
983 def Merge( self , aGraph ):
984 return self.G.Merge( aGraph.G )
988 ##########################################################
990 ##########################################################
991 def __init__( self , aName ):
992 graph = SuperVision.GraphE( aName )
998 ##########################################################
1000 ##########################################################
1001 def __init__( self , aValue , Verbose ):
1003 self.V.Verbose = Verbose
1004 def ToString( self ):
1005 return self.V.ToString()
1007 return self.V.ToAny()
1008 def Destroy( self ):
1011 ##########################################################
1013 ##########################################################
1014 def __init__( self , aPort , Verbose ):
1016 self.P.Verbose = Verbose
1017 def Input( self , *args ):
1018 types, realargs = getRealArgs(self.P,args)
1019 fn = bs_AddInput_valuedict[types]
1020 anInput = apply( fn, realargs)
1023 aNode = self.P.Node()
1025 if aNode.IsComputing() :
1026 myNode = CNode( aNode , self.P.Verbose )
1027 elif aNode.IsFactory() :
1028 myNode = FNode( aNode , self.P.Verbose )
1029 elif aNode.IsInLine() :
1030 myNode = INode( aNode , self.P.Verbose )
1031 elif aNode.IsGOTO() :
1032 myNode = GNode( aNode , self.P.Verbose )
1033 elif aNode.IsLoop() :
1034 myNode = LNode( aNode , self.P.Verbose )
1035 elif aNode.IsEndLoop() :
1036 myNode = ELNode( aNode , self.P.Verbose )
1037 elif aNode.IsSwitch() :
1038 myNode = SNode( aNode , self.P.Verbose )
1039 elif aNode.IsEndSwitch() :
1040 myNode = ESNode( aNode , self.P.Verbose )
1046 return self.P.Name()
1048 return self.P.Type()
1050 aLink = self.P.Link()
1052 myLink = Link( aLink , self.P.Verbose )
1054 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1059 links = self.P.Links()
1061 while i < len( links ) :
1062 links[ i ] = Link( links[i] , self.P.Verbose )
1065 def PrintLinks( self ):
1066 links = self.P.Links()
1068 while i < len( links ) :
1069 Link( links[ i ] , self.P.Verbose ).Print()
1071 def IsInput( self ):
1072 return self.P.IsInput()
1073 def IsLinked( self ):
1074 return self.P.IsLinked()
1075 def HasInput( self ):
1076 return self.P.HasInput()
1078 return self.P.Kind()
1079 def IsParam( self ):
1080 return self.P.IsParam()
1082 return self.P.IsGate()
1084 return self.P.IsLoop()
1085 def IsInLine( self ):
1086 return self.P.IsInLine()
1087 def IsSwitch( self ):
1088 return self.P.IsSwitch()
1089 def IsEndSwitch( self ):
1090 return self.P.IsEndSwitch()
1091 # def IsBus( self ):
1092 # return self.P.IsBus()
1094 return self.P.Done()
1096 return self.P.State()
1097 def ToString( self ):
1098 return self.P.ToString()
1100 return self.P.ToAny()
1102 if self.P.IsInput() :
1103 if self.P.IsLinked() :
1104 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1106 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1108 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1109 def Destroy( self ):
1112 ##########################################################
1114 ##########################################################
1115 def __init__( self , aLink , Verbose ):
1117 self.L.Verbose = Verbose
1118 def OutPort( self ):
1119 aPort = self.L.OutPort()
1121 myPort = Port( aPort , self.L.Verbose )
1124 print "Error while getting the Port : "
1127 aPort = self.L.InPort()
1129 myPort = Port( aPort , self.L.Verbose )
1132 print "Error while getting the Port : "
1135 anOutPort = self.L.OutPort()
1136 anInPort = self.L.InPort()
1137 print anOutPort.Node().Name(),'(',anOutPort.Name(),' ',anOutPort.Kind(),') =',anOutPort.ToString(),' --> ',anInPort.Node().Name(),'(',anInPort.Name(),')',' ',anInPort.Kind()
1138 def CoordsSize( self ):
1139 return self.L.CoordsSize()
1140 def AddCoord( self , index , X , Y ):
1141 return self.L.AddCoord( index , X , Y )
1142 def ChangeCoord( self , index , X , Y ):
1143 return self.L.ChangeCoord( index , X , Y )
1144 def RemoveCoord( self , index ):
1145 return self.L.RemoveCoord( index )
1146 def Coords( self , index ):
1147 return self.L.Coords( index )
1148 def destroy( self ):