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 aService = self.N.Service()
211 print "Service Name ",aService.ServiceName
212 lenin = len( aService.ServiceinParameter )
213 print " ",lenin," input argument(s) :"
216 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
218 lenout = len( aService.ServiceoutParameter )
219 print " ",lenout," output argument(s) :"
222 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
224 aKind = self.N.Kind()
225 print "KindOfNode",aKind
226 aFirstCreation = self.N.CreationDate()
227 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
228 aLastModification = self.N.LastUpdateDate()
229 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
230 print "Version ",self.N.Version()
231 print "Author ",self.N.Author()
232 if self.N.IsFactory() :
233 print "Container ",self.N.GetContainer()
234 print "Comment ",self.N.Comment()
235 print "Coords ",self.N.X()," ",self.N.Y()
236 def Port( self , aPortName ):
237 aPort = self.N.Port( aPortName )
239 myPort = Port( aPort , self.N.Verbose )
242 print "Error while creating the Port : ",aPortName
244 def Input( self , *args ):
245 types, realargs = getRealArgs(self.N,args)
246 fn = bs_AddInput_valuedict[types]
247 print types,realargs,fn
248 anInput = apply( fn, realargs)
250 myInput = Port( anInput , self.N.Verbose )
252 ErrMsg = "Failed to create the Input"
256 # def BusPort( self , InOutParameterName , InOutParameterType ):
257 # sts,inp,outp = self.N.BusPort( InOutParameterName ,
258 # InOutParameterType )
259 # inp = Port( inp , self.N.Verbose )
260 # outp = Port( outp , self.N.Verbose )
261 # return sts,inp,outp
262 # def BusPorts( self , InputParameterName , InputParameterType ,
263 # OutputParameterName , OutputParameterType ):
264 # sts,inp,outp = self.N.BusPorts( InputParameterName ,
265 # InputParameterType ,
266 # OutputParameterName ,
267 # OutputParameterType )
268 # inp = Port( inp , self.N.Verbose )
269 # outp = Port( outp , self.N.Verbose )
270 # return sts,inp,outp
272 ports = self.N.Ports()
274 while i < len( ports ) :
275 ports[ i ] = Port( ports[i] , self.N.Verbose )
278 def ListPorts( self , *args ):
279 if len( args ) == 0 :
280 aName = self.N.Name()
283 ports = self.N.Ports()
286 portsname = ports[ 0 ].Name()
287 bs = portsname.find('\\')
289 portsname1,portsname2 = portsname.split('\\')
290 portsname = portsname1 + portsname2
291 if ports[ 0 ].IsInput():
292 listofports = aName + 'In' + portsname
294 listofports = aName + 'Out' + portsname
296 while i < len( ports ) :
297 portsname = ports[ i ].Name()
298 bs = portsname.find('\\')
300 portsname1,portsname2 = portsname.split('\\')
301 portsname = portsname1 + portsname2
302 if ports[ i ].IsInput():
303 listofports = listofports + ',' + aName + 'In' + portsname
305 listofports = listofports + ',' + aName + 'Out' + portsname
308 if len( ports ) == 1 :
309 listofports = "[" + listofports + "] = " + aName + ".Ports()"
311 listofports = listofports + " = " + aName + ".Ports()"
313 def PrintPorts( self ):
314 ports = self.N.Ports()
316 while i < len( ports ) :
318 if ports[ i ].IsInput() :
320 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
323 links = self.N.Links()
325 while i < len( links ) :
326 links[ i ] = Link( links[i] , self.N.Verbose )
329 def PrintLinks( self ):
332 while i < len( links ) :
336 return self.N.IsGraph()
337 def IsComputing( self ):
338 return self.N.IsComputing()
339 def IsFactory( self ):
340 return self.N.IsFactory()
341 def IsInLine( self ):
342 return self.N.IsInLine()
344 return self.N.IsGOTO()
346 return self.N.IsLoop()
347 def IsEndLoop( self ):
348 return self.N.IsEndLoop()
349 def IsSwitch( self ):
350 return self.N.IsSwitch()
351 def IsEndSwitch( self ):
352 return self.N.IsEndSwitch()
353 def SubGraph( self ):
354 return self.N.SubGraph()
356 return self.N.Thread()
357 def IsWaiting( self ):
358 return self.N.IsWaiting()
359 def IsRunning( self ):
360 return self.N.IsRunning()
362 return self.N.IsDone()
363 def IsSuspended( self ):
364 return self.N.IsSuspended()
366 return self.N.State()
368 return self.N.Control()
369 def ControlClear( self ):
370 return self.N.ControlClear()
371 def AutoState( self ):
372 return self.N.AutoState()
374 return self.N.ReadyW()
375 def RunningW( self ):
376 return self.N.RunningW()
378 return self.N.DoneW()
379 def SuspendedW( self ):
380 return self.N.SuspendedW()
382 return self.N.ReRun()
384 return self.N.ReStart()
385 def ReRunAt( self , aNodeName ):
386 return self.N.ReRunAt( aNodeName )
387 def ReStartAt( self , aNodeName ):
388 return self.N.ReStartAt( aNodeName )
393 def KillDone( self ):
394 return self.N.KillDone()
396 return self.N.Suspend()
397 def SuspendDone( self ):
398 return self.N.SuspendDone()
400 return self.N.Resume()
403 def Coords( self , X , Y ):
404 return self.N.Coords( X , Y )
412 return self.N.CpuUsed()
414 ##########################################################
416 ##########################################################
417 def __init__( self , aNode , Verbose ):
419 self.N.Verbose = Verbose
420 def GetComponentName( self ):
421 return self.N.GetComponentName()
422 def GetInterfaceName( self ):
423 return self.N._get_interfaceName()
424 def GetContainer( self ):
425 return self.N.GetContainer()
426 def SetComponentName( self , aComponentName ):
427 return self.N.SetComponentName( aComponentName )
428 def SetInterfaceName( self , anInterfaceName ):
429 return self.N.SetInterfaceName( anInterfaceName )
430 def SetContainer( self , aComputer ):
431 return self.N.SetContainer( aComputer )
433 ##########################################################
435 ##########################################################
436 def __init__( self , aNode , Verbose ):
438 self.N.Verbose = Verbose
439 def Edit( self , FuncName , PyFunc ) :
442 suf = str(random.randrange(1,10000))
443 file = '/tmp/' + FuncName + '_' + suf + '.py'
447 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
451 while ( i < len( PyFunc ) ) :
452 print i,'/',len( PyFunc ),PyFunc[ i ]
453 os.write( fd , PyFunc[ i ] + '\n' )
456 edit = '${EDITOR} ' + file
458 fd = os.open( file , os.O_RDONLY )
459 line = os.read( fd , 132 )
463 line = os.read( fd , 132 )
465 PyFunc = res.splitlines()
467 while i < len( PyFunc ) :
471 print "Open of",file,"failed."
473 def SetPyFunction( self , FuncName , aPyFunction ):
474 return self.N.SetPyFunction( FuncName , aPyFunction )
475 def PyFunction( self ):
476 return self.N.PyFunction()
477 def PyFuncName( self ):
478 return self.N.PyFuncName()
480 PyFunc = self.N.PyFunction()
481 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
482 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
483 def InPort( self , aParameterName , aParameterType ):
484 aPort = self.N.InPort( aParameterName ,
487 myPort = Port( aPort , self.N.Verbose )
490 print "Error while creating the Port : ",aParameterName
492 def OutPort( self , aParameterName , aParameterType ):
493 aPort = self.N.OutPort( aParameterName ,
496 myPort = Port( aPort , self.N.Verbose )
499 print "Error while creating the Port : ",aParameterName
502 ##########################################################
504 ##########################################################
505 def __init__( self , aNode , Verbose ):
507 self.N.Verbose = Verbose
508 def SetCoupled( self , anInLineNode ):
510 node = self.N.SetCoupled( anInLineNode )
515 node = self.N.Coupled()
518 node = INode( node , self.N.Verbose )
520 node = LNode( node , self.N.Verbose )
521 elif node.IsEndLoop() :
522 node = ELNode( node , self.N.Verbose )
523 elif node.IsSwitch() :
524 node = SNode( node , self.N.Verbose )
525 elif node.IsEndSwitch() :
526 node = ESNode( node , self.N.Verbose )
529 ##########################################################
531 ##########################################################
532 def __init__( self , aNode , Verbose ):
534 self.N.Verbose = Verbose
535 def SetPyInit( self , InitName , aPyFunction ):
536 return self.N.SetPyInit( InitName , aPyFunction )
538 return self.N.PyInit()
539 def PyInitName( self ) :
540 return self.N.PyInitName()
542 PyFunc = self.N.PyFunction()
543 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
544 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
545 def SetPyMore( self , MoreName , aPyFunction ):
546 return self.N.SetPyMore( MoreName , aPyFunction )
548 return self.N.PyMore()
549 def PyMoreName( self ) :
550 return self.N.PyMoreName()
552 PyMore = self.N.PyMore()
553 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
554 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
555 def SetPyNext( self , NextName , aPyFunction ):
556 return self.N.SetPyNext( NextName , aPyFunction )
558 return self.N.PyNext()
559 def PyNextName( self ) :
560 return self.N.PyNextName()
562 PyNext = self.N.PyNext()
563 PyNext = self.Edit( self.N.PyNextName() , PyNext )
564 self.N.SetPyNext( self.N.PyNextName() , PyNext )
566 ##########################################################
568 ##########################################################
569 def __init__( self , aNode , Verbose ):
571 self.N.Verbose = Verbose
573 ##########################################################
575 ##########################################################
576 def __init__( self , aNode , Verbose ):
578 self.N.Verbose = Verbose
580 ##########################################################
582 ##########################################################
583 def __init__( self , aNode , Verbose ):
585 self.N.Verbose = Verbose
587 ##########################################################
588 #class ServicesParameter_Swig :
589 ##########################################################
590 # def __init__( self , aServicesParameter ):
591 # self.Parametertype = aServicesParameter.Parametertype
592 # self.Parametername = aServicesParameter.Parametername
594 ##########################################################
596 ##########################################################
597 def __init__( self , aName ):
599 graph = SuperVision.Graph( aName )
602 graph = aName.G.Copy()
611 print "Graph creation failed"
612 def CNode( self , *args ):
613 if len( args ) == 1 :
616 aComponent = args[ 0 ]
617 anInterface = args[ 1 ]
619 NodeComponent = modulecatalog.GetComponent( aComponent )
620 aService = NodeComponent.GetService( anInterface , aService )
621 aNode = self.G.CNode( aService )
623 myNode = CNode( aNode , self.G.Verbose )
625 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
629 def Node( self , aComponent , anInterface , aService ):
630 if SuperVision.Swig :
631 aService = Service_Swig( aService )
632 return self.FNode( aComponent , anInterface , aService )
633 def FNode( self , aComponent , anInterface , aService ):
634 NodeComponent = modulecatalog.GetComponent( aComponent )
635 aService = NodeComponent.GetService( anInterface , aService )
636 if SuperVision.Swig :
637 aService = Service_Swig( aService )
638 aNode = self.G.FNode( aComponent , anInterface , aService )
640 myNode = FNode( aNode , self.G.Verbose )
642 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
646 def INode( self , FuncName , aPythonFunction ):
647 aNode = self.G.INode( FuncName , aPythonFunction )
649 myNode = INode( aNode , self.G.Verbose )
651 ErrMsg = "Failed to create a Node"
655 def GNode( self , FuncName , aPythonFunction , anINode ):
656 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
658 myNode = GNode( aNode , self.G.Verbose )
660 ErrMsg = "Failed to create a Node"
664 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
665 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
667 myNode = LNode( aNode , self.G.Verbose )
668 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
669 return myNode,myEndOfLoop
670 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
674 def SNode( self , FuncName , aPythonFunction ):
675 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
677 myNode = SNode( aNode , self.G.Verbose )
678 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
679 return myNode,myEndOfSwitch
680 ErrMsg = "Failed to create a Node"
684 # def LoopNode( self , aComponent , anInterface , aService , aNodeName ):
685 # NodeComponent = modulecatalog.GetComponent( aComponent )
686 # aService = NodeComponent.GetService( anInterface , aService )
687 # aNode,anEndNode = self.G.LoopNode( aComponent , anInterface , aService , aNodeName )
689 # myEndNode = anEndNode
691 # myNode = Node( aNode , self.G.Verbose )
692 # if anEndNode != None :
693 # myEndNode = Node( anEndNode , self.G.Verbose )
694 # if ( aNode != None ) & ( anEndNode != None ) :
695 # return myNode,myEndNode
696 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
697 # if self.G.Verbose :
699 # return aNode,anEndNode
700 # def SwitchNode( self , aComponent , anInterface , aService , aNodeName ):
701 # NodeComponent = modulecatalog.GetComponent( aComponent )
702 # aService = NodeComponent.GetService( anInterface , aService )
703 # aNode,anEndNode = self.G.SwitchNode( aComponent , anInterface , aService , aNodeName )
705 # myEndNode = anEndNode
707 # myNode = Node( aNode , self.G.Verbose )
708 # if anEndNode != None :
709 # myEndNode = Node( anEndNode , self.G.Verbose )
710 # if ( aNode != None ) & ( anEndNode != None ) :
711 # return myNode,myEndNode
712 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
713 # if self.G.Verbose :
715 # return aNode,anEndNode
716 # def LNode( self , aNodeName ):
717 # aNode = self.G.LNode( aNodeName )
719 # myNode = Node( aNode , self.G.Verbose )
721 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
722 # if self.G.Verbose :
725 # def LService( self , aComponent , anInterface , aService ):
726 # NodeComponent = modulecatalog.GetComponent( aComponent )
727 # aService = NodeComponent.GetService( anInterface , aService )
728 # aNode = self.G.LService( aComponent , anInterface , aService )
730 # myNode = Node( aNode , self.G.Verbose )
732 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
733 # if self.G.Verbose :
736 # def CNode( self , aNodeName ):
737 # aNode = self.G.CNode( aNodeName )
739 # myNode = Node( aNode , self.G.Verbose )
741 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
742 # if self.G.Verbose :
745 # def CService( self , aComponent , anInterface , aService ):
746 # NodeComponent = modulecatalog.GetComponent( aComponent )
747 # aService = NodeComponent.GetService( anInterface , aService )
748 # aNode = self.G.CService( aComponent , anInterface , aService )
750 # myNode = Node( aNode , self.G.Verbose )
752 # ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
753 # if self.G.Verbose :
756 def PrintService( self , aComponent , anInterface , aService ):
757 NodeComponent = modulecatalog.GetComponent( aComponent )
758 aService = NodeComponent.GetService( anInterface , aService )
759 print "ServiceName ",aService.ServiceName," :"
760 lenin = len( aService.ServiceinParameter )
761 print " ",lenin," input argument(s) :"
764 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
766 lenout = len( aService.ServiceoutParameter )
767 print " ",lenout," output argument(s) :"
770 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
772 def Link( self , aFromNodePort , aToNodePort ):
773 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
775 myLink = Link( aLink , self.G.Verbose )
777 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
781 def Import( self , anXmlFileName ):
782 return self.G.Import( anXmlFileName )
783 def Export( self , anXmlFileName ):
784 return self.G.Export( anXmlFileName )
785 def IsReadOnly( self ) :
786 return self.G.IsReadOnly()
787 def ComponentRef( self , aFactoryServer , aComponent ) :
788 return self.G.ComponentRef( aFactoryServer , aComponent )
790 return self.G.IsValid()
791 def IsExecutable( self ):
792 return self.G.IsExecutable()
793 def IsEditing( self ):
794 return self.G.IsEditing()
795 def IsExecuting( self ):
796 return self.G.IsExecuting()
797 def LevelMax( self ):
798 return self.G.LevelMax()
799 def ThreadsMax( self ):
800 return self.G.ThreadsMax()
801 def GraphsNumber( self ):
802 return self.G.GraphsNumber()
803 def LevelNodes( self , aLevel ):
804 nodes = self.G.LevelNodes( aLevel )
805 return self.nodesTuple( nodes )
806 def Run( self , *args ):
808 aService = self.Service()
812 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
813 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
817 def Start( self , *args ):
819 aService = self.Service()
823 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
824 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
827 return self.G.Start()
829 sts,aNode,anEvent,aState = self.G.Event()
831 return sts,aNode,anEvent,aState
832 def EventNoW( self ):
833 sts,aNode,anEvent,aState = self.G.EventNoW()
835 return sts,aNode,anEvent,aState
837 sts,aNode,anEvent,aState = self.G.EventW()
839 return sts,aNode,anEvent,aState
842 sts,aNode,anEvent,aState = self.G.EventW()
844 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
847 return self.G.Threads()
848 def SuspendedThreads( self ):
849 return self.G.SuspendedThreads()
850 def LastLevelDone( self ):
851 return self.G.LastLevelDone()
852 def Verbose( self , verbose ):
853 preverbose = self.G.Verbose
854 self.G.Verbose = verbose
857 nodes = self.G.Nodes()
858 return self.nodesTuple( nodes )
859 def nodesTuple( self , nodes ) :
860 n = len( nodes.CNodes )
865 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
868 n = len( nodes.FNodes )
871 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
874 n = len( nodes.INodes )
877 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
880 n = len( nodes.GNodes )
883 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
886 n = len( nodes.LNodes )
889 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
892 n = len( nodes.ELNodes )
895 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
898 n = len( nodes.SNodes )
901 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
904 n = len( nodes.ESNodes )
907 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
911 def ListNodes( self , *args ):
915 listofnodes = nodes[ 0 ].Name()
917 while i < len( nodes ) :
918 listofnodes = listofnodes + ',' + nodes[ i ].Name()
921 if len( args ) == 0 :
922 aName = self.N.Name()
925 if len( nodes ) == 1 :
926 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
928 listofnodes = listofnodes + " = " + aName + ".Nodes()"
930 def PrintNodes( self ):
938 def PrintThreads( self ):
941 while i < len( nodes ) :
942 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i].AutoState()
945 links = self.G.GLinks()
947 while i < len( links ) :
948 links[ i ] = Link( links[i] , self.G.Verbose )
951 def ListLinks( self , *args ):
952 links = self.G.GLinks()
954 listoflinks = links[ 0 ].InPort().Node().Name()
955 listoflinks = listoflinks + links[ 0 ].InPort().Name()
957 while i < len( links ) :
958 listoflinks = listoflinks + ',' + links[ i ].InPort().Node().Name()
959 listoflinks = listoflinks + links[ i ].InPort().Name()
962 if len( args ) == 0 :
963 aName = self.N.Name()
966 if len( links ) == 1 :
967 listoflinks = "[" + listoflinks + "] = " + aName + ".GLinks()"
969 listoflinks = listoflinks + " = " + aName + ".GLinks()"
971 def PrintLinks( self ):
972 links = self.G.GLinks()
974 while i < len( links ) :
975 Link( links[ i ] , self.G.Verbose ).Print()
978 graphs = self.G.Graphs()
981 while i < len( graphs ) :
982 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
983 outgraphs[ i ].Merge( graphs[i] )
987 aCopy = self.G.Copy()
989 myCopy = Graph( aCopy )
991 ErrMsg = "Failed to get a Copy of " + self.G.Name()
995 def Merge( self , aGraph ):
996 return self.G.Merge( aGraph.G )
1000 ##########################################################
1001 class GraphE(Graph):
1002 ##########################################################
1003 def __init__( self , aName ):
1004 graph = SuperVision.GraphE( aName )
1010 ##########################################################
1012 ##########################################################
1013 def __init__( self , aValue , Verbose ):
1015 self.V.Verbose = Verbose
1016 def ToString( self ):
1017 return self.V.ToString()
1019 return self.V.ToAny()
1020 def Destroy( self ):
1023 ##########################################################
1025 ##########################################################
1026 def __init__( self , aPort , Verbose ):
1028 self.P.Verbose = Verbose
1029 def Input( self , *args ):
1030 types, realargs = getRealArgs(self.P,args)
1031 fn = bs_AddInput_valuedict[types]
1032 anInput = apply( fn, realargs)
1035 aNode = self.P.Node()
1037 if aNode.IsComputing() :
1038 myNode = CNode( aNode , self.P.Verbose )
1039 elif aNode.IsFactory() :
1040 myNode = FNode( aNode , self.P.Verbose )
1041 elif aNode.IsInLine() :
1042 myNode = INode( aNode , self.P.Verbose )
1043 elif aNode.IsGOTO() :
1044 myNode = GNode( aNode , self.P.Verbose )
1045 elif aNode.IsLoop() :
1046 myNode = LNode( aNode , self.P.Verbose )
1047 elif aNode.IsEndLoop() :
1048 myNode = ELNode( aNode , self.P.Verbose )
1049 elif aNode.IsSwitch() :
1050 myNode = SNode( aNode , self.P.Verbose )
1051 elif aNode.IsEndSwitch() :
1052 myNode = ESNode( aNode , self.P.Verbose )
1058 return self.P.Name()
1060 return self.P.Type()
1062 aLink = self.P.Link()
1064 myLink = Link( aLink , self.P.Verbose )
1066 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1071 links = self.P.Links()
1073 while i < len( links ) :
1074 links[ i ] = Link( links[i] , self.P.Verbose )
1077 def PrintLinks( self ):
1078 links = self.P.Links()
1080 while i < len( links ) :
1081 Link( links[ i ] , self.P.Verbose ).Print()
1083 def IsInput( self ):
1084 return self.P.IsInput()
1085 def IsLinked( self ):
1086 return self.P.IsLinked()
1087 def HasInput( self ):
1088 return self.P.HasInput()
1090 return self.P.Kind()
1091 def IsParam( self ):
1092 return self.P.IsParam()
1094 return self.P.IsGate()
1096 return self.P.IsLoop()
1097 def IsInLine( self ):
1098 return self.P.IsInLine()
1099 def IsSwitch( self ):
1100 return self.P.IsSwitch()
1101 def IsEndSwitch( self ):
1102 return self.P.IsEndSwitch()
1103 # def IsBus( self ):
1104 # return self.P.IsBus()
1106 return self.P.Done()
1108 return self.P.State()
1109 def ToString( self ):
1110 return self.P.ToString()
1112 return self.P.ToAny()
1114 if self.P.IsInput() :
1115 if self.P.IsLinked() :
1116 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1118 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1120 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1121 def Destroy( self ):
1124 ##########################################################
1126 ##########################################################
1127 def __init__( self , aLink , Verbose ):
1129 self.L.Verbose = Verbose
1130 def OutPort( self ):
1131 aPort = self.L.OutPort()
1133 myPort = Port( aPort , self.L.Verbose )
1136 print "Error while getting the Port : "
1139 aPort = self.L.InPort()
1141 myPort = Port( aPort , self.L.Verbose )
1144 print "Error while getting the Port : "
1147 anOutPort = self.L.OutPort()
1148 anInPort = self.L.InPort()
1149 print anOutPort.Node().Name(),'(',anOutPort.Name(),' ',anOutPort.Kind(),') =',anOutPort.ToString(),' --> ',anInPort.Node().Name(),'(',anInPort.Name(),')',' ',anInPort.Kind()
1150 def CoordsSize( self ):
1151 return self.L.CoordsSize()
1152 def AddCoord( self , index , X , Y ):
1153 return self.L.AddCoord( index , X , Y )
1154 def ChangeCoord( self , index , X , Y ):
1155 return self.L.ChangeCoord( index , X , Y )
1156 def RemoveCoord( self , index ):
1157 return self.L.RemoveCoord( index )
1158 def Coords( self , index ):
1159 return self.L.Coords( index )
1160 def destroy( self ):