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 from salome import SALOMEDS
19 import SALOME_ModuleCatalog
24 from LifeCycleCORBA import *
25 from SALOME_NamingServicePy import *
28 import SALOME_ModuleCatalog
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 naming_service = SALOME_NamingServicePy_i(orb)
43 # SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
44 # SuperVision.Swig = 1
45 # print 'SuperV_Swig created'
47 # SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
48 # SuperVision.Swig = 0
49 # print 'Supervision Component loaded'
51 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
54 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
57 def createDataflowStudyObject( theStudy , aDataFlow , aBuilder ) :
58 aStudyObject = theStudy.FindObjectIOR( aDataFlow.G.getIOR() )
59 if aStudyObject == None :
60 aComponent = theStudy.FindComponent( "SUPERV" )
61 if aComponent == None :
62 print "createDataflowStudyObject Component SUPERV is None"
63 aComponent = aBuilder.NewComponent( "SUPERV" )
64 anAttr = aBuilder.FindOrCreateAttribute(aComponent, "AttributeName")
65 aName = anAttr._narrow( SALOMEDS.AttributeName )
66 aName.SetValue( modulecatalog.GetComponentInfo( "SUPERV" ).username )
67 anAttr = aBuilder.FindOrCreateAttribute( aComponent , "AttributePixMap" )
68 aPixmap = anAttr._narrow( SALOMEDS.AttributePixMap )
69 aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
70 aBuilder.DefineComponentInstance( aComponent , SuperVision )
71 print "createDataflowStudyObject Component SUPERV is created"
72 aStudyObject = aBuilder.NewObject( aComponent )
73 anAttr = aBuilder.FindOrCreateAttribute( aStudyObject , "AttributeName" )
74 aName = anAttr._narrow( SALOMEDS.AttributeName )
75 aName.SetValue( aDataFlow.Name() )
76 anAttr = aBuilder.FindOrCreateAttribute( aStudyObject , "AttributeIOR" )
77 anIORAttr = anAttr._narrow( SALOMEDS.AttributeIOR )
78 anIORAttr.SetValue( aDataFlow.G.getIOR() )
81 def addDataflowToStudy( theStudy , aDataFlow ) :
82 aBuilder = theStudy.NewBuilder()
84 aStudyObject = createDataflowStudyObject( theStudy , aDataFlow , aBuilder )
85 if aStudyObject != None :
86 aBuilder.CommitCommand()
87 sg.updateObjBrowser( 1 )
88 print "addDataflowToStudy aStudyObject ",aDataFlow.Name()," added in study"
89 #theStudy.updateObjBrowser()
91 print "addDataflowToStudy ERROR aStudyObject is None"
92 aBuilder.AbortCommand()
93 return aBuilder,aStudyObject
96 def PortInputFloat(obj, x):
97 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
99 def PortInputLong(obj, x):
100 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
102 def PortInputObject(obj, x):
104 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
106 return obj.Input( SuperVision.AnyValue( x ) )
108 def PortInputString(obj, x):
109 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
111 def InputFloat(obj, nodein_port, x):
112 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
114 def InputLong(obj, nodein_port, x):
115 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
117 def InputObject(obj, nodein_port, x):
119 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
121 return obj.Input(nodein_port, SuperVision.AnyValue( x ) )
123 def InputString(obj, nodein_port, x):
124 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
128 typestring = re.compile(r"_[^_]+_([^_]+)_.*")
130 def getRealArgs(self,args):
136 types.append(typestring.match(self).group(1))
139 types.append(type(self))
140 realargs.append(self)
144 types.append(typestring.match(a).group(1))
147 types.append(type(a))
150 return tuple(types), tuple(realargs)
152 bs_AddInput_valuedict = {
153 (InstanceType, FloatType) : PortInputFloat,
154 (InstanceType, IntType) : PortInputLong,
155 (InstanceType, StringType) : PortInputString,
156 (InstanceType, InstanceType) : PortInputObject,
157 (InstanceType, StringType, FloatType) : InputFloat,
158 (InstanceType, StringType, IntType) : InputLong,
159 (InstanceType, StringType, StringType) : InputString,
160 (InstanceType, StringType, InstanceType) : InputObject,
161 (InstanceType, StringType, ListType) : InputObject,
165 def Args( aService , aNodeName , verbose ):
166 lenin = len( aService.ServiceinParameter )
167 infos = aNodeName + 'info = "'
168 infos = infos + 'NodeName : ' + aNodeName + '\\n'
169 infos = infos + 'ServiceName : ' + aService.ServiceName + '\\n'
170 infos = infos + 'PortNames : \\n'
171 defnames = aNodeName + " = " + "'" + aNodeName + "' ; "
174 argname = aNodeName + aService.ServiceinParameter[ i ].Parametername
175 valname = aNodeName + "\\\\"
176 valname = valname + aService.ServiceinParameter[ i ].Parametername
177 defnames = defnames + argname + " = " + "'" + valname + "' ; "
178 infos = infos + str(i) + '. ' + argname + ' : Input'
179 infos = infos + str(i) + ' '
180 infos = infos + aService.ServiceinParameter[ i ].Parametername + ' '
181 infos = infos + aService.ServiceinParameter[ i ].Parametertype + '\\n'
183 lenout = len( aService.ServiceoutParameter )
186 argname = aNodeName + aService.ServiceoutParameter[ i ].Parametername
187 valname = aNodeName + "\\\\"
188 valname = valname + aService.ServiceoutParameter[ i ].Parametername
189 defnames = defnames + argname + " = " + "'" + valname + "' ; "
190 infos = infos + str(lenin+i) + '. ' + argname + ' : Output'
191 infos = infos + str(i) + ' '
192 infos = infos + aService.ServiceoutParameter[ i ].Parametername + ' '
193 infos = infos + aService.ServiceoutParameter[ i ].Parametertype + '\\n'
196 defnames = defnames + infos
198 defnames = defnames + " ; print " + aNodeName + "info"
201 def Service_Swig( aCatalogService ) :
202 aService = SuperVision.Service()
203 aService.ServiceName = aCatalogService.ServiceName
205 while i < len( aCatalogService.ServiceinParameter ) :
206 p = SuperVision.ServicesParameter( aCatalogService.ServiceinParameter[i].Parametertype , aCatalogService.ServiceinParameter[i].Parametername )
207 SuperVision.AddInParameter( aService , p )
210 while i < len( aCatalogService.ServiceoutParameter ) :
211 p = SuperVision.ServicesParameter( aCatalogService.ServiceoutParameter[i].Parametertype , aCatalogService.ServiceoutParameter[i].Parametername )
212 SuperVision.AddOutParameter( aService , p )
216 ##########################################################
218 ##########################################################
219 def __init__( self , aNode , Verbose ):
221 self.N.Verbose = Verbose
225 return self.N.Service()
228 def CreationDate( self ):
229 return self.N.CreationDate()
230 def LastUpdateDate( self ):
231 return self.N.LastUpdateDate()
233 return self.N.Version()
235 return self.N.Author()
237 return self.N.Comment()
239 def SetName( self , aNewName ):
240 return self.N.SetName( aNewName )
241 def SetAuthor( self , anAuthor ):
242 return self.N.SetAuthor( anAuthor )
243 def SetComment( self , aComment ):
244 return self.N.SetComment( aComment )
247 print "Name ",self.N.Name()
248 if self.N.IsFactory() :
249 print "ComponentName ",self.N.GetComponentName()
250 print "InterfaceName ",self.N.GetInterfaceName()
251 if self.N.IsStreamGraph() :
252 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
253 print "Timeout",Timeout
254 print "DataStreamTrace",DataStreamTrace
255 print "DeltaTime",DeltaTime
256 aService = self.N.Service()
257 print "Service Name ",aService.ServiceName
258 lenin = len( aService.ServiceinParameter )
259 print " ",lenin," input argument(s) :"
262 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
264 lenout = len( aService.ServiceoutParameter )
265 print " ",lenout," output argument(s) :"
268 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
270 aKind = self.N.Kind()
271 print "KindOfNode",aKind
272 aFirstCreation = self.N.CreationDate()
273 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
274 aLastModification = self.N.LastUpdateDate()
275 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
276 print "Version ",self.N.Version()
277 print "Author ",self.N.Author()
278 if self.N.IsFactory() :
279 print "Container ",self.N.GetContainer()
280 print "Comment ",self.N.Comment()
281 print "Coords ",self.N.X()," ",self.N.Y()
282 def Port( self , aPortName ):
283 aPort = self.N.Port( aPortName )
285 myPort = Port( aPort , self.N.Verbose )
288 print "Error while creating the Port : ",aPortName
290 def Input( self , *args ):
291 types, realargs = getRealArgs(self.N,args)
292 fn = bs_AddInput_valuedict[types]
293 anInput = apply( fn, realargs)
295 myInput = Port( anInput , self.N.Verbose )
297 ErrMsg = "Failed to create the Input"
301 def InStreamPort( self , aParameterName , aParameterType , aDependency ):
302 aPort = self.N.InStreamPort( aParameterName , aParameterType , aDependency )
304 myPort = StreamPort( aPort , self.N.Verbose )
307 print "Error while creating the Port : ",aParameterName
309 def OutStreamPort( self , aParameterName , aParameterType , aDependency ):
310 aPort = self.N.OutStreamPort( aParameterName , aParameterType , aDependency )
312 myPort = StreamPort( aPort , self.N.Verbose )
315 print "Error while creating the Port : ",aParameterName
317 def GetInPort( self , aParameterName ):
318 aPort = self.N.GetInPort( aParameterName )
320 myPort = Port( aPort , self.N.Verbose )
323 print "Error while creating the Port : ",aParameterName
325 def GetOutPort( self , aParameterName ):
326 aPort = self.N.GetOutPort( aParameterName )
328 myPort = Port( aPort , self.N.Verbose )
331 print "Error while creating the Port : ",aParameterName
333 def GetInStreamPort( self , aParameterName ):
334 aPort = self.N.GetInStreamPort( aParameterName )
336 myPort = StreamPort( aPort , self.N.Verbose )
339 print "Error while creating the Port : ",aParameterName
341 def GetOutStreamPort( self , aParameterName ):
342 aPort = self.N.GetOutStreamPort( aParameterName )
344 myPort = StreamPort( aPort , self.N.Verbose )
347 print "Error while creating the Port : ",aParameterName
350 ports = self.N.Ports()
352 while i < len( ports ) :
353 ports[ i ] = Port( ports[i] , self.N.Verbose )
356 def StreamPorts( self ):
357 ports = self.N.StreamPorts()
359 while i < len( ports ) :
360 ports[ i ] = StreamPort( ports[i] , self.N.Verbose )
363 def AllPorts( self ):
364 allports = self.N.Ports()
365 lenports = len( allports )
368 allports[ i ] = Port( allports[i] , self.N.Verbose )
370 ports = self.N.StreamPorts()
372 while i < len( ports ) :
373 allports.append( StreamPort( ports[i] , self.N.Verbose ) )
376 def ListPorts( self , *args ):
377 if len( args ) == 0 :
378 aName = self.N.Name()
381 ports = self.AllPorts()
385 portsname = ports[ 0 ].Name()
386 bs = portsname.find('\\')
388 portsname1,portsname2 = portsname.split('\\')
389 portsname = portsname1 + portsname2
390 if ports[ 0 ].IsInput():
391 listofports = 'I' + aName + portsname
393 listofports = 'O' + aName + portsname
395 while i < len( ports ) :
396 portsname = ports[ i ].Name()
397 bs = portsname.find('\\')
399 portsname1,portsname2 = portsname.split('\\')
400 portsname = portsname1 + portsname2
401 if ports[ i ].IsInput():
402 listofports = listofports + ',' + 'I' + aName + portsname
404 listofports = listofports + ',' + 'O' + aName + portsname
407 if len( ports ) == 1 :
408 listofports = "[" + listofports + "] = " + aName + ".AllPorts()"
410 listofports = listofports + " = " + aName + ".AllPorts()"
412 def PrintPorts( self ):
413 ports = self.AllPorts()
415 while i < len( ports ) :
417 if ports[ i ].IsInput() :
419 if ( ports[ i ].IsDataStream() ) & ( self.N.IsStreamGraph() == 0 ) :
420 if ports[ i ].IsInput() :
421 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = ports[ i ].Params()
422 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
424 numberofvalues = ports[ i ].NumberOfValues()
425 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),'NumberOfValues',numberofvalues
427 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
430 links = self.N.Links()
432 while i < len( links ) :
433 links[ i ] = Link( links[i] , self.N.Verbose )
436 def StreamLinks( self ) :
437 links = self.N.StreamLinks()
439 while i < len( links ) :
440 links[ i ] = StreamLink( links[i] , self.N.Verbose )
443 def AllLinks( self ) :
444 alllinks = self.N.Links()
445 lenlinks = len( alllinks )
448 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
450 links = self.N.StreamLinks()
452 while i < len( links ) :
453 alllinks.append( StreamLink( links[i] , self.N.Verbose ) )
456 def ListLinks( self , *args ):
457 links = self.AllLinks()
459 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
460 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
461 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
462 listoflinks = listoflinks + links[ 0 ].InPort().Name()
464 while i < len( links ) :
465 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
466 listoflinks = listoflinks + links[ i ].OutPort().Name()
467 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
468 listoflinks = listoflinks + links[ i ].InPort().Name()
471 if len( args ) == 0 :
472 aName = self.N.Name()
475 if len( links ) == 1 :
476 listoflinks = "[" + listoflinks + "] = " + aName + ".AllLinks()"
478 listoflinks = listoflinks + " = " + aName + ".AllLinks()"
480 def PrintLinks( self ):
481 links = self.AllLinks()
483 while i < len( links ) :
486 def IsStreamGraph( self ):
487 return self.N.IsStreamGraph()
489 return self.N.IsGraph()
491 return self.N.IsMacro()
492 def IsFlowMacro( self ):
493 return self.N.IsFlowMacro()
494 def IsStreamMacro( self ):
495 return self.N.IsStreamMacro()
496 def IsComputing( self ):
497 return self.N.IsComputing()
498 def IsFactory( self ):
499 return self.N.IsFactory()
500 def IsInLine( self ):
501 return self.N.IsInLine()
503 return self.N.IsGOTO()
505 return self.N.IsLoop()
506 def IsEndLoop( self ):
507 return self.N.IsEndLoop()
508 def IsSwitch( self ):
509 return self.N.IsSwitch()
510 def IsEndSwitch( self ):
511 return self.N.IsEndSwitch()
512 def GraphLevel( self ) :
513 return self.N.GraphLevel()
514 def SubGraph( self ):
515 return self.N.SubGraph()
516 def SubStreamGraph( self ):
517 return self.N.SubStreamGraph()
519 return self.N.Thread()
520 def IsWaiting( self ):
521 return self.N.IsWaiting()
522 def IsRunning( self ):
523 return self.N.IsRunning()
525 return self.N.IsDone()
526 def IsSuspended( self ):
527 return self.N.IsSuspended()
529 return self.N.State()
531 return self.N.Control()
532 def ControlClear( self ):
533 return self.N.ControlClear()
535 return self.N.ReadyW()
536 def RunningW( self ):
537 return self.N.RunningW()
539 return self.N.DoneW()
540 def SuspendedW( self ):
541 return self.N.SuspendedW()
543 # return self.N.ReRun()
544 #def ReStart( self ):
545 # return self.N.ReStart()
546 #def ReRunAt( self , aNodeName ):
547 # return self.N.ReRunAt( aNodeName )
548 #def ReStartAt( self , aNodeName ):
549 # return self.N.ReStartAt( aNodeName )
554 def KillDone( self ):
555 return self.N.KillDone()
557 return self.N.Suspend()
558 def SuspendDone( self ):
559 return self.N.SuspendDone()
561 return self.N.Resume()
564 def Coords( self , X , Y ):
565 return self.N.Coords( X , Y )
573 return self.N.CpuUsed()
575 ##########################################################
577 ##########################################################
578 def __init__( self , aNode , Verbose ):
580 self.N.Verbose = Verbose
581 def GetComponentName( self ):
582 return self.N.GetComponentName()
583 def GetInterfaceName( self ):
584 return self.N._get_interfaceName()
585 def GetContainer( self ):
586 return self.N.GetContainer()
587 def SetComponentName( self , aComponentName ):
588 return self.N.SetComponentName( aComponentName )
589 def SetInterfaceName( self , anInterfaceName ):
590 return self.N.SetInterfaceName( anInterfaceName )
591 def SetContainer( self , aComputer ):
592 return self.N.SetContainer( aComputer )
594 return self.N.isCimpl
596 ##########################################################
598 ##########################################################
599 def __init__( self , aNode , Verbose ):
601 self.N.Verbose = Verbose
602 def Edit( self , FuncName , PyFunc ) :
605 suf = str(random.randrange(1,10000))
606 file = '/tmp/' + FuncName + '_' + suf + '.py'
610 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
614 while ( i < len( PyFunc ) ) :
615 print i,'/',len( PyFunc ),PyFunc[ i ]
616 os.write( fd , PyFunc[ i ] + '\n' )
619 edit = '${EDITOR} ' + file
621 fd = os.open( file , os.O_RDONLY )
622 line = os.read( fd , 132 )
626 line = os.read( fd , 132 )
628 PyFunc = res.splitlines()
630 while i < len( PyFunc ) :
634 print "Open of",file,"failed."
636 def SetPyFunction( self , FuncName , aPyFunction ):
637 return self.N.SetPyFunction( FuncName , aPyFunction )
638 def PyFunction( self ):
639 return self.N.PyFunction()
640 def PyFuncName( self ):
641 return self.N.PyFuncName()
642 def InPort( self , aParameterName , aParameterType ):
643 aPort = self.N.InPort( aParameterName ,
646 myPort = Port( aPort , self.N.Verbose )
649 print "Error while creating the Port : ",aParameterName
651 def OutPort( self , aParameterName , aParameterType ):
652 aPort = self.N.OutPort( aParameterName ,
655 myPort = Port( aPort , self.N.Verbose )
658 print "Error while creating the Port : ",aParameterName
661 PyFunc = self.N.PyFunction()
662 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
663 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
665 ##########################################################
667 ##########################################################
668 def __init__( self , aNode , Verbose ):
670 self.N.Verbose = Verbose
671 def SetCoupled( self , anInLineNode ):
673 node = self.N.SetCoupled( anInLineNode )
678 node = self.N.Coupled()
681 node = INode( node , self.N.Verbose )
683 node = LNode( node , self.N.Verbose )
684 elif node.IsEndLoop() :
685 node = ELNode( node , self.N.Verbose )
686 elif node.IsSwitch() :
687 node = SNode( node , self.N.Verbose )
688 elif node.IsEndSwitch() :
689 node = ESNode( node , self.N.Verbose )
692 ##########################################################
694 ##########################################################
695 def __init__( self , aNode , Verbose ):
697 self.N.Verbose = Verbose
698 def SetPyInit( self , InitName , aPyFunction ):
699 return self.N.SetPyInit( InitName , aPyFunction )
701 return self.N.PyInit()
702 def PyInitName( self ) :
703 return self.N.PyInitName()
705 PyFunc = self.N.PyFunction()
706 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
707 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
708 def SetPyMore( self , MoreName , aPyFunction ):
709 return self.N.SetPyMore( MoreName , aPyFunction )
711 return self.N.PyMore()
712 def PyMoreName( self ) :
713 return self.N.PyMoreName()
715 PyMore = self.N.PyMore()
716 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
717 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
718 def SetPyNext( self , NextName , aPyFunction ):
719 return self.N.SetPyNext( NextName , aPyFunction )
721 return self.N.PyNext()
722 def PyNextName( self ) :
723 return self.N.PyNextName()
725 PyNext = self.N.PyNext()
726 PyNext = self.Edit( self.N.PyNextName() , PyNext )
727 self.N.SetPyNext( self.N.PyNextName() , PyNext )
729 ##########################################################
731 ##########################################################
732 def __init__( self , aNode , Verbose ):
734 self.N.Verbose = Verbose
736 ##########################################################
738 ##########################################################
739 def __init__( self , aNode , Verbose ):
741 self.N.Verbose = Verbose
743 ##########################################################
745 ##########################################################
746 def __init__( self , aNode , Verbose ):
748 self.N.Verbose = Verbose
750 ##########################################################
751 #class ServicesParameter_Swig :
752 ##########################################################
753 # def __init__( self , aServicesParameter ):
754 # self.Parametertype = aServicesParameter.Parametertype
755 # self.Parametername = aServicesParameter.Parametername
757 ##########################################################
759 ##########################################################
760 def __init__( self , aName ):
762 graph = SuperVision.Graph( aName )
765 graph = aName.G.Copy()
769 if graph.IsStreamGraph() :
770 aGraph = graph.ToStreamGraph()
772 graph = StreamGraph( aGraph )
774 print "Graph creation failed"
780 print "Graph creation failed"
781 def CNode( self , *args ):
782 if len( args ) == 1 :
785 aComponent = args[ 0 ]
786 anInterface = args[ 1 ]
788 NodeComponent = modulecatalog.GetComponent( aComponent )
789 aService = NodeComponent.GetService( anInterface , aService )
790 aNode = self.G.CNode( aService )
792 myNode = CNode( aNode , self.G.Verbose )
794 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
798 def Node( self , aComponent , anInterface , aService ):
799 #if SuperVision.Swig :
800 #aService = Service_Swig( aService )
801 return self.FNode( aComponent , anInterface , aService )
802 def FNodeImpl( self , aComponent , anInterface , aService, isCimpl ):
803 NodeComponent = modulecatalog.GetComponent( aComponent )
804 aService = NodeComponent.GetService( anInterface , aService )
805 aNode = self.G.FNode( aComponent , anInterface , aService, isCimpl )
807 aNode.isCimpl = isCimpl
808 myNode = FNode( aNode , self.G.Verbose )
810 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
814 def FNode( self , aComponent , anInterface , aService ):
815 # create node with C++ implementation type by default
816 NodeComponent = modulecatalog.GetComponent( aComponent )
817 aService = NodeComponent.GetService( anInterface , aService )
818 #if SuperVision.Swig :
819 #aService = Service_Swig( aService )
820 aNode = self.G.FNode( aComponent , anInterface , aService, 1 )
823 myNode = FNode( aNode , self.G.Verbose )
825 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
829 def INode( self , FuncName , aPythonFunction ):
830 aNode = self.G.INode( FuncName , aPythonFunction )
832 myNode = INode( aNode , self.G.Verbose )
834 ErrMsg = "Failed to create a Node"
838 def GNode( self , FuncName , aPythonFunction , anINode ):
839 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
841 myNode = GNode( aNode , self.G.Verbose )
843 ErrMsg = "Failed to create a Node"
847 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
848 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
850 myNode = LNode( aNode , self.G.Verbose )
851 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
852 return myNode,myEndOfLoop
853 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
857 def SNode( self , FuncName , aPythonFunction ):
858 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
860 myNode = SNode( aNode , self.G.Verbose )
861 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
862 return myNode,myEndOfSwitch
863 ErrMsg = "Failed to create a Node"
867 def MNode( self , aGraphXml ):
868 aMNode = self.G.MNode( aGraphXml )
870 myMNode = MNode( aMNode , self.G.Verbose )
872 ErrMsg = "Failed to create a MNode"
876 def GraphMNode( self , aGraph ):
877 aGraphMNode = self.G.GraphMNode( aGraph.G )
878 if aGraphMNode != None :
879 myMNode = MNode( aGraphMNode , self.G.Verbose )
881 ErrMsg = "Failed to create a MNode"
885 def FlowObjRef( self ) :
886 aGraph = self.G.FlowObjRef()
888 myGraph = Graph( aGraph )
891 def StreamObjRef( self ) :
892 aGraph = self.G.StreamObjRef()
894 myGraph = StreamGraph( aGraph )
897 def PrintService( self , aComponent , anInterface , aService ):
898 NodeComponent = modulecatalog.GetComponent( aComponent )
899 aService = NodeComponent.GetService( anInterface , aService )
900 print "ServiceName ",aService.ServiceName," :"
901 lenin = len( aService.ServiceinParameter )
902 print " ",lenin," input argument(s) :"
905 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
907 lenout = len( aService.ServiceoutParameter )
908 print " ",lenout," output argument(s) :"
911 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
913 def Link( self , aFromNodePort , aToNodePort ):
914 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
916 myLink = Link( aLink , self.G.Verbose )
918 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
922 def Import( self , anXmlFileName ):
923 return self.G.Import( anXmlFileName )
924 def Export( self , anXmlFileName ):
925 return self.G.Export( anXmlFileName )
926 def IsReadOnly( self ) :
927 return self.G.IsReadOnly()
928 def ComponentRef( self , aFactoryServer , aComponent ) :
929 return self.G.ComponentRef( aFactoryServer , aComponent )
931 return self.G.IsValid()
932 def IsExecutable( self ):
933 return self.G.IsExecutable()
934 def IsEditing( self ):
935 return self.G.IsEditing()
936 def IsExecuting( self ):
937 return self.G.IsExecuting()
938 def LevelMax( self ):
939 return self.G.LevelMax()
940 def ThreadsMax( self ):
941 return self.G.ThreadsMax()
942 def SubGraphsNumber( self ):
943 return self.G.SubGraphsNumber()
944 def LevelNodes( self , aLevel ):
945 nodes = self.G.LevelNodes( aLevel )
946 return self.nodesTuple( nodes )
947 def Run( self , *args ):
949 aService = self.Service()
953 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
954 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
958 def Start( self , *args ):
960 aService = self.Service()
964 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
965 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
968 return self.G.Start()
970 sts,aNode,anEvent,aState = self.G.Event()
972 return sts,aNode,anEvent,aState
973 def EventNoW( self ):
974 sts,aNode,anEvent,aState = self.G.EventNoW()
976 return sts,aNode,anEvent,aState
978 sts,aNode,anEvent,aState = self.G.EventW()
980 return sts,aNode,anEvent,aState
983 sts,aNode,anEvent,aState = self.G.EventW()
985 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
988 return self.G.Threads()
989 def SuspendedThreads( self ):
990 return self.G.SuspendedThreads()
991 def LastLevelDone( self ):
992 return self.G.LastLevelDone()
993 def Verbose( self , verbose ):
994 preverbose = self.G.Verbose
995 self.G.Verbose = verbose
998 nodes = self.G.Nodes()
999 return self.nodesTuple( nodes )
1000 def nodesTuple( self , nodes ) :
1001 n = len( nodes.CNodes )
1006 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
1009 n = len( nodes.FNodes )
1012 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
1015 n = len( nodes.INodes )
1018 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
1021 n = len( nodes.GNodes )
1024 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
1027 n = len( nodes.LNodes )
1030 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
1033 n = len( nodes.ELNodes )
1036 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
1039 n = len( nodes.SNodes )
1042 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
1045 n = len( nodes.ESNodes )
1048 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
1051 n = len( nodes.Graphs )
1054 pynodes.append( MNode( nodes.Graphs[i] , self.G.Verbose ) )
1058 def ListNodes( self , *args ):
1059 nodes = self.Nodes()
1062 listofnodes = nodes[ 0 ].Name()
1064 while i < len( nodes ) :
1065 listofnodes = listofnodes + ',' + nodes[ i ].Name()
1068 if len( args ) == 0 :
1069 aName = self.N.Name()
1072 if len( nodes ) == 1 :
1073 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
1075 listofnodes = listofnodes + " = " + aName + ".Nodes()"
1077 def PrintNodes( self ):
1078 nodes = self.Nodes()
1085 def PrintThreads( self ):
1086 nodes = self.Nodes()
1088 while i < len( nodes ) :
1089 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i]
1092 links = self.G.GLinks()
1094 linkslen = len( links )
1095 #print 'GLinks ',linkslen,'Links'
1096 while i < linkslen :
1097 links[ i ] = Link( links[i] , self.G.Verbose )
1099 def GStreamLinks( self ):
1100 streamlinks = self.G.GStreamLinks()
1102 #print 'GStreamLinks ',len( streamlinks ),'StreamLinks'
1103 while i < len( streamlinks ) :
1104 streamlinks[ i ] = StreamLink( streamlinks[i] , self.G.Verbose )
1107 def GAllLinks( self ) :
1108 alllinks = self.G.GLinks()
1109 lenlinks = len( alllinks )
1111 while i < lenlinks :
1112 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
1114 links = self.G.StreamLinks()
1116 while j < len(links) :
1117 alllinks.append( StreamLink( links[j] , self.N.Verbose ) )
1121 def ListLinks( self , *args ):
1122 links = self.GAllLinks()
1124 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
1125 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
1126 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
1127 listoflinks = listoflinks + links[ 0 ].InPort().Name()
1129 while i < len( links ) :
1130 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
1131 listoflinks = listoflinks + links[ i ].OutPort().Name()
1132 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
1133 listoflinks = listoflinks + links[ i ].InPort().Name()
1136 if len( args ) == 0 :
1137 aName = self.N.Name()
1140 if len( links ) == 1 :
1141 listoflinks = "[" + listoflinks + "] = " + aName + ".GAllLinks()"
1143 listoflinks = listoflinks + " = " + aName + ".GAllLinks()"
1145 def PrintLinks( self ):
1146 links = self.GAllLinks()
1148 while i < len( links ) :
1151 def SubGraphsNodes( self , ):
1152 graphs = self.G.SubGraphsNodes()
1155 while i < len( graphs ) :
1156 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
1157 outgraphs[ i ].Merge( graphs[i] )
1161 aCopy = self.G.Copy()
1163 myCopy = Graph( aCopy )
1165 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1169 def ToStreamGraph( self ):
1170 aGraph = self.G.ToStreamGraph()
1172 return StreamGraph( aGraph )
1174 def SubGraphsNodes( self , aSubGraphsNumber ):
1175 nodes = self.G.SubGraphsNodes( aSubGraphsNumber )
1176 return self.nodesTuple( nodes )
1177 def Merge( self , aGraph ):
1178 return self.G.Merge( aGraph.G )
1179 def Destroy( self ):
1182 ##########################################################
1183 class GraphE(Graph):
1184 ##########################################################
1185 def __init__( self , aName ):
1186 graph = SuperVision.GraphE( aName )
1191 def ToStreamGraph( self ):
1192 aGraph = self.G.ToStreamGraph()
1194 return StreamGraphE( aGraph )
1197 ##########################################################
1199 ##########################################################
1200 def __init__( self , aMNode , Verbose ):
1202 self.G.Verbose = Verbose
1204 self.N.Verbose = Verbose
1206 ##########################################################
1207 class StreamGraph(Graph):
1208 ##########################################################
1209 def __init__( self , aName ):
1211 graph = SuperVision.StreamGraph( aName )
1214 graph = aName.G.StreamCopy()
1223 print "StreamGraph creation failed"
1224 def StreamCopy( self ):
1225 aCopy = self.G.StreamCopy()
1227 myCopy = StreamGraph( aCopy )
1229 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1233 def StreamLink( self , anOutStreamPort , anInStreamPort ) :
1234 aStreamLink = self.G.StreamLink( anOutStreamPort.P , anInStreamPort.P )
1235 if aStreamLink!= None:
1236 myStreamLink = StreamLink( aStreamLink , self.G.Verbose )
1238 ErrMsg = "Failed to make a StreamLink in " + self.G.Name()
1242 def SetStreamParams( self , Timeout , DataStreamTrace , DeltaTime ):
1243 return self.G.SetStreamParams( Timeout , DataStreamTrace , DeltaTime )
1244 def StreamParams( self ):
1245 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
1246 return Timeout,DataStreamTrace,DeltaTime
1247 def ToFlowGraph( self ):
1248 return self.G.ToFlowGraph()
1249 def SubStreamGraphsNumber( self ):
1250 return self.G.SubStreamGraphsNumber()
1251 def SubStreamGraphsNodes( self , aSubStreamGraphsNumber ):
1252 nodes = self.G.SubStreamGraphsNodes( aSubStreamGraphsNumber )
1253 return self.nodesTuple( nodes )
1254 def StreamMerge( self , aStreamGraph ):
1255 return self.G.StreamMerge( aStreamGraph.G )
1257 ##########################################################
1258 class StreamGraphE(StreamGraph):
1259 ##########################################################
1260 def __init__( self , aName ):
1261 graph = SuperVision.StreamGraphE( aName )
1267 ##########################################################
1269 ##########################################################
1270 def __init__( self , aValue , Verbose ):
1272 self.V.Verbose = Verbose
1273 def ToString( self ):
1274 return self.V.ToString()
1276 return self.V.ToAny()
1277 def Destroy( self ):
1280 ##########################################################
1282 ##########################################################
1283 def __init__( self , aPort , Verbose ):
1285 self.P.Verbose = Verbose
1286 def Input( self , *args ):
1287 types, realargs = getRealArgs(self.P,args)
1288 fn = bs_AddInput_valuedict[types]
1289 anInput = apply( fn, realargs)
1292 aNode = self.P.Node()
1294 if aNode.IsComputing() :
1295 myNode = CNode( aNode , self.P.Verbose )
1296 elif aNode.IsFactory() :
1297 myNode = FNode( aNode , self.P.Verbose )
1298 elif aNode.IsInLine() :
1299 myNode = INode( aNode , self.P.Verbose )
1300 elif aNode.IsGOTO() :
1301 myNode = GNode( aNode , self.P.Verbose )
1302 elif aNode.IsLoop() :
1303 myNode = LNode( aNode , self.P.Verbose )
1304 elif aNode.IsEndLoop() :
1305 myNode = ELNode( aNode , self.P.Verbose )
1306 elif aNode.IsSwitch() :
1307 myNode = SNode( aNode , self.P.Verbose )
1308 elif aNode.IsEndSwitch() :
1309 myNode = ESNode( aNode , self.P.Verbose )
1315 return self.P.Name()
1317 return self.P.Type()
1319 aLink = self.P.Link()
1321 myLink = Link( aLink , self.P.Verbose )
1323 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1328 links = self.P.Links()
1330 while i < len( links ) :
1331 links[ i ] = Link( links[i] , self.P.Verbose )
1334 def PrintLinks( self ):
1335 links = self.P.Links()
1337 while i < len( links ) :
1338 Link( links[ i ] , self.P.Verbose ).Print()
1340 def IsInput( self ):
1341 return self.P.IsInput()
1342 def IsLinked( self ):
1343 return self.P.IsLinked()
1344 def HasInput( self ):
1345 return self.P.HasInput()
1347 return self.P.Kind()
1348 def IsParam( self ):
1349 return self.P.IsParam()
1351 return self.P.IsGate()
1353 return self.P.IsLoop()
1354 def IsInLine( self ):
1355 return self.P.IsInLine()
1356 def IsSwitch( self ):
1357 return self.P.IsSwitch()
1358 def IsEndSwitch( self ):
1359 return self.P.IsEndSwitch()
1360 def IsDataStream( self ):
1361 return self.P.IsDataStream()
1362 # def IsBus( self ):
1363 # return self.P.IsBus()
1365 return self.P.Done()
1367 return self.P.State()
1368 def ToString( self ):
1369 return self.P.ToString()
1371 return self.P.ToAny()
1373 if self.P.IsInput() :
1374 if self.P.IsLinked() :
1375 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1377 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1379 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1380 def Destroy( self ):
1383 ##########################################################
1384 class StreamPort(Port):
1385 ##########################################################
1386 def __init__( self , aPort , Verbose ):
1388 self.P.Verbose = Verbose
1389 def StreamLink( self ) :
1390 return self.P.StreamLink()
1391 def Dependency( self ) :
1392 return self.P.Dependency()
1393 def SetDependency( self , aDependency ) :
1394 return self.P.SetDependency( aDependency )
1395 def Params( self ) :
1396 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = self.P.Params()
1397 return sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
1398 def SetParams( self , aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation ) :
1399 return self.P.SetParams( aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation )
1400 def NumberOfValues( self ) :
1401 return self.P.NumberOfValues()
1402 def SetNumberOfValues( self , aNumberOfValues ) :
1403 return self.P.SetNumberOfValues( aNumberOfValues )
1405 ##########################################################
1407 ##########################################################
1408 def __init__( self , aLink , Verbose ):
1410 self.L.Verbose = Verbose
1411 def OutPort( self ):
1412 aPort = self.L.OutPort()
1414 myPort = Port( aPort , self.L.Verbose )
1417 print "Error while getting the Port : "
1420 aPort = self.L.InPort()
1422 myPort = Port( aPort , self.L.Verbose )
1425 print "Error while getting the Port : "
1428 anOutPort = self.L.OutPort()
1429 anOutPortName = anOutPort.Name()
1430 anOutPortKind = anOutPort.Kind()
1431 anOutPortValue = anOutPort.ToString()
1432 anOutNode = anOutPort.Node()
1433 anOutNodeName = anOutNode.Name()
1434 anInPort = self.L.InPort()
1435 anInPortName = anInPort.Name()
1436 anInPortKind = anInPort.Kind()
1437 anInNode = anInPort.Node()
1438 anInNodeName = anInNode.Name()
1439 print anOutNodeName,'(',anOutPortName,' ',anOutPortKind,') =',anOutPortValue,' --> ',anInNodeName,'(',anInPortName,')',' ',anInPortKind
1440 def CoordsSize( self ):
1441 return self.L.CoordsSize()
1442 def AddCoord( self , index , X , Y ):
1443 return self.L.AddCoord( index , X , Y )
1444 def ChangeCoord( self , index , X , Y ):
1445 return self.L.ChangeCoord( index , X , Y )
1446 def RemoveCoord( self , index ):
1447 return self.L.RemoveCoord( index )
1448 def Coords( self , index ):
1449 return self.L.Coords( index )
1450 def destroy( self ):
1455 ##########################################################
1456 class StreamLink(Link):
1457 ##########################################################
1458 def __init__( self , aLink , Verbose ):
1460 self.L.Verbose = Verbose
1461 def OutStreamPort( self ):
1462 aPort = self.L.OutStreamPort()
1464 myPort = StreamPort( aPort , self.L.Verbose )
1467 print "Error while getting the Port : "
1469 def InStreamPort( self ):
1470 aPort = self.L.InStreamPort()
1472 myPort = StreamPort( aPort , self.L.Verbose )
1475 print "Error while getting the Port : "