]> SALOME platform Git repositories - tools/yacsgen.git/blob - module_generator/pyth_tmpl.py
Salome HOME
CCAR: add definition parameter "sources" to C++, F77, Python components.
[tools/yacsgen.git] / module_generator / pyth_tmpl.py
1 try:
2   from string import Template
3 except:
4   from compat import Template,set
5
6 pyCompo="""
7 import sys,traceback,os
8 sys.path=sys.path+[${python_path}]
9 import ${module}__POA
10 import calcium
11 import dsccalcium
12 import SALOME
13 import cPickle
14
15 try:
16   import numpy
17 except:
18   numpy=None
19
20 #DEFS
21 ${servicesdef}
22 #ENDDEF
23
24 class ${component}(${module}__POA.${component},dsccalcium.PyDSCComponent):
25   '''
26      To be identified as a SALOME component this Python class
27      must have the same name as the component, inherit omniorb
28      class ${module}__POA.${component} and DSC class dsccalcium.PyDSCComponent
29      that implements DSC API.
30   '''
31   def __init__ ( self, orb, poa, contID, containerName, instanceName, interfaceName ):
32     print "${component}.__init__: ", containerName, ';', instanceName,interfaceName
33     dsccalcium.PyDSCComponent.__init__(self, orb, poa,contID,containerName,instanceName,interfaceName)
34
35   def init_service(self,service):
36 ${initservice}
37     return False
38
39 ${servicesimpl}
40 """
41
42 pyCompoEXE="""#!/usr/bin/env python
43 """+pyCompo+"""
44   def destroy(self):
45      dsccalcium.PyDSCComponent.destroy(self)
46      self._orb.shutdown(0)
47
48 if __name__ == '__main__':
49   from omniORB import CORBA
50   print sys.argv
51   orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
52   poa = orb.resolve_initial_references("RootPOA")
53   print "ORB and POA initialized",orb,poa
54   sys.stdout.flush()
55   sys.stderr.flush()
56
57   container=orb.string_to_object(sys.argv[1])
58   containerName=sys.argv[2]
59   instanceName=sys.argv[3]
60
61   compo=${component}(orb,poa,container,containerName, instanceName, "${component}")
62   comp_o = compo._this()
63   comp_iors = orb.object_to_string(comp_o)
64   print "ior ${component}",comp_iors
65
66   sys.stdout.flush()
67   sys.stderr.flush()
68
69   #activate the POA
70   poaManager = poa._get_the_POAManager()
71   poaManager.activate()
72
73   orb.run()
74   print "fin du composant ${component} standalone"
75
76 """
77
78 pyCompo=Template(pyCompo)
79 pyCompoEXE=Template(pyCompoEXE)
80
81 pyService="""
82   def ${service}(self,${inparams}):
83     print "${component}.${service}"
84     self.beginService("${component}.${service}")
85     component=self.proxy
86     returns=None
87     try:
88 ${convertinparams}
89 #BODY
90 ${body}
91 #ENDBODY
92       print "End of ${component}.${service}"
93       sys.stdout.flush()
94       self.endService("${component}.${service}")
95 ${convertoutparams}
96       return ${outparams}
97     except:
98       sys.stdout.flush()
99       exc_typ,exc_val,exc_fr=sys.exc_info()
100       l=traceback.format_exception(exc_typ,exc_val,exc_fr)
101       raise SALOME.SALOME_Exception(SALOME.ExceptionStruct(SALOME.BAD_PARAM,"".join(l),"${component}.py",0)) """
102 pyService=Template(pyService)
103
104 pyinitService="""    if service == "${service}":
105        #initialization CALCIUM ports IN
106 ${instream}
107        #initialization CALCIUM ports OUT
108 ${outstream}
109        return True """
110 pyinitService=Template(pyinitService)
111 pyinitCEXEService=pyinitService
112 pyinitEXEService=pyinitService
113
114 #Makefile
115
116 pycompoMakefile="""include $$(top_srcdir)/adm_local/make_common_starter.am
117 salomepython_PYTHON = ${component}.py ${sources}
118 """
119 pycompoMakefile=Template(pycompoMakefile)
120
121 pycompoEXEMakefile="""include $$(top_srcdir)/adm_local/make_common_starter.am
122 salomepython_PYTHON = ${sources}
123 dist_salomescript_SCRIPTS= ${component}.exe
124 """
125 pycompoEXEMakefile=Template(pycompoEXEMakefile)
126