r2corba 1.4.1-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +159 -0
  3. data/LICENSE +59 -0
  4. data/README +62 -0
  5. data/THANKS +52 -0
  6. data/bin/r2corba +8 -0
  7. data/bin/r2corba.bat +20 -0
  8. data/bin/ridlc +11 -0
  9. data/bin/ridlc.bat +23 -0
  10. data/bin/rins +7 -0
  11. data/bin/rins.bat +19 -0
  12. data/ext/.keep +0 -0
  13. data/lib/corba/cbase/IORMap.rb +33 -0
  14. data/lib/corba/cbase/ORB.rb +231 -0
  15. data/lib/corba/cbase/Request.rb +134 -0
  16. data/lib/corba/cbase/Streams.rb +129 -0
  17. data/lib/corba/cbase/Stub.rb +19 -0
  18. data/lib/corba/cbase/Typecode.rb +441 -0
  19. data/lib/corba/cbase/Values.rb +129 -0
  20. data/lib/corba/cbase/exception.rb +66 -0
  21. data/lib/corba/cbase/poa.rb +23 -0
  22. data/lib/corba/cbase/policies.rb +78 -0
  23. data/lib/corba/cbase/post_require.rb +14 -0
  24. data/lib/corba/cbase/require.rb +28 -0
  25. data/lib/corba/cmds/base.rb +85 -0
  26. data/lib/corba/cmds/test.rb +30 -0
  27. data/lib/corba/common/Any.rb +91 -0
  28. data/lib/corba/common/IDL.rb +104 -0
  29. data/lib/corba/common/ORB.rb +368 -0
  30. data/lib/corba/common/Object.rb +208 -0
  31. data/lib/corba/common/Request.rb +20 -0
  32. data/lib/corba/common/Servant.rb +108 -0
  33. data/lib/corba/common/Struct.rb +22 -0
  34. data/lib/corba/common/Stub.rb +79 -0
  35. data/lib/corba/common/Typecode.rb +1121 -0
  36. data/lib/corba/common/Union.rb +56 -0
  37. data/lib/corba/common/Values.rb +92 -0
  38. data/lib/corba/common/const.rb +22 -0
  39. data/lib/corba/common/exception.rb +68 -0
  40. data/lib/corba/common/require.rb +27 -0
  41. data/lib/corba/common/version.rb +22 -0
  42. data/lib/corba/idl/BiDirPolicyC.rb +63 -0
  43. data/lib/corba/idl/CosNamingC.rb +461 -0
  44. data/lib/corba/idl/CosNamingS.rb +309 -0
  45. data/lib/corba/idl/IDL.rb +21 -0
  46. data/lib/corba/idl/IORTable.pidl +62 -0
  47. data/lib/corba/idl/IORTableC.rb +117 -0
  48. data/lib/corba/idl/MessagingC.rb +904 -0
  49. data/lib/corba/idl/POAC.rb +930 -0
  50. data/lib/corba/idl/TAO_Ext.pidl +46 -0
  51. data/lib/corba/idl/TAO_ExtC.rb +179 -0
  52. data/lib/corba/idl/r2c_orb.rb +572 -0
  53. data/lib/corba/idl/require.rb +20 -0
  54. data/lib/corba/jbase/Any.rb +273 -0
  55. data/lib/corba/jbase/IORMap.rb +36 -0
  56. data/lib/corba/jbase/ORB.rb +99 -0
  57. data/lib/corba/jbase/Object.rb +98 -0
  58. data/lib/corba/jbase/Request.rb +226 -0
  59. data/lib/corba/jbase/Servant.rb +247 -0
  60. data/lib/corba/jbase/ServerRequest.rb +128 -0
  61. data/lib/corba/jbase/Streams.rb +671 -0
  62. data/lib/corba/jbase/Stub.rb +38 -0
  63. data/lib/corba/jbase/Typecode.rb +520 -0
  64. data/lib/corba/jbase/Values.rb +173 -0
  65. data/lib/corba/jbase/exception.rb +106 -0
  66. data/lib/corba/jbase/poa.rb +229 -0
  67. data/lib/corba/jbase/policies.rb +300 -0
  68. data/lib/corba/jbase/post_require.rb +14 -0
  69. data/lib/corba/jbase/require.rb +86 -0
  70. data/lib/corba/naming.rb +14 -0
  71. data/lib/corba/naming_service.rb +15 -0
  72. data/lib/corba/poa.rb +15 -0
  73. data/lib/corba/policies.rb +18 -0
  74. data/lib/corba/require.rb +17 -0
  75. data/lib/corba/svcs/ins/cos_naming.rb +426 -0
  76. data/lib/corba/svcs/ins/ins.rb +526 -0
  77. data/lib/corba/svcs/ins/naming_service.rb +119 -0
  78. data/lib/corba.rb +16 -0
  79. data/lib/ridlbe/ruby/config.rb +336 -0
  80. data/lib/ridlbe/ruby/orb.pidlc +0 -0
  81. data/lib/ridlbe/ruby/require.rb +16 -0
  82. data/lib/ridlbe/ruby/walker.rb +1582 -0
  83. data/mkrf_conf_bingem.rb +101 -0
  84. data/rakelib/bin.rake +80 -0
  85. data/rakelib/bin.rb +146 -0
  86. data/rakelib/build.rake +87 -0
  87. data/rakelib/config.rake +52 -0
  88. data/rakelib/config.rb +450 -0
  89. data/rakelib/ext.rake +242 -0
  90. data/rakelib/ext.rb +308 -0
  91. data/rakelib/ext_r2tao.rb +232 -0
  92. data/rakelib/gem.rake +212 -0
  93. data/rakelib/gem.rb +146 -0
  94. data/rakelib/package.rake +26 -0
  95. data/rakelib/test.rake +23 -0
  96. data/test/BiDirectional/Test.idl +34 -0
  97. data/test/BiDirectional/client.rb +132 -0
  98. data/test/BiDirectional/run_test.rb +68 -0
  99. data/test/BiDirectional/server.ior +1 -0
  100. data/test/BiDirectional/server.rb +169 -0
  101. data/test/CORBA_Services/Naming/BindingIterator/Test.idl +27 -0
  102. data/test/CORBA_Services/Naming/BindingIterator/client.rb +121 -0
  103. data/test/CORBA_Services/Naming/BindingIterator/ins.ior +1 -0
  104. data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +82 -0
  105. data/test/CORBA_Services/Naming/BindingIterator/server.rb +109 -0
  106. data/test/CORBA_Services/Naming/Corbaname/Test.idl +27 -0
  107. data/test/CORBA_Services/Naming/Corbaname/client.rb +85 -0
  108. data/test/CORBA_Services/Naming/Corbaname/corbaname.ior +1 -0
  109. data/test/CORBA_Services/Naming/Corbaname/ins.ior +1 -0
  110. data/test/CORBA_Services/Naming/Corbaname/run_test.rb +88 -0
  111. data/test/CORBA_Services/Naming/Corbaname/server.rb +135 -0
  112. data/test/CORBA_Services/Naming/Simple/Test.idl +27 -0
  113. data/test/CORBA_Services/Naming/Simple/client.rb +84 -0
  114. data/test/CORBA_Services/Naming/Simple/ins.ior +1 -0
  115. data/test/CORBA_Services/Naming/Simple/run_test.rb +82 -0
  116. data/test/CORBA_Services/Naming/Simple/server.rb +109 -0
  117. data/test/Collocation/Diamond.idl +39 -0
  118. data/test/Collocation/run_test.rb +52 -0
  119. data/test/Collocation/test.rb +195 -0
  120. data/test/Connect_Timeout/Test.idl +27 -0
  121. data/test/Connect_Timeout/client.rb +111 -0
  122. data/test/Connect_Timeout/run_test.rb +52 -0
  123. data/test/DII/Test.idl +27 -0
  124. data/test/DII/client.rb +115 -0
  125. data/test/DII/run_test.rb +69 -0
  126. data/test/DII/server.ior +1 -0
  127. data/test/DII/server.rb +95 -0
  128. data/test/DSI/Test.idl +27 -0
  129. data/test/DSI/client.rb +66 -0
  130. data/test/DSI/run_test.rb +69 -0
  131. data/test/DSI/server.ior +1 -0
  132. data/test/DSI/server.rb +106 -0
  133. data/test/Exceptions/Test.idl +48 -0
  134. data/test/Exceptions/client.rb +118 -0
  135. data/test/Exceptions/run_test.rb +69 -0
  136. data/test/Exceptions/server.ior +1 -0
  137. data/test/Exceptions/server.rb +131 -0
  138. data/test/Hello/Test.idl +27 -0
  139. data/test/Hello/client.rb +78 -0
  140. data/test/Hello/run_test.rb +71 -0
  141. data/test/Hello/server.rb +95 -0
  142. data/test/IDL_Test/Test.idl +113 -0
  143. data/test/IDL_Test/Test_inc.idl +17 -0
  144. data/test/IDL_Test/client.rb +102 -0
  145. data/test/IDL_Test/run_test.rb +69 -0
  146. data/test/IDL_Test/server.ior +1 -0
  147. data/test/IDL_Test/server.rb +99 -0
  148. data/test/IORMap/Test.idl +27 -0
  149. data/test/IORMap/client.rb +73 -0
  150. data/test/IORMap/run_test.rb +69 -0
  151. data/test/IORMap/server.ior +1 -0
  152. data/test/IORMap/server.rb +114 -0
  153. data/test/IORTable/Test.idl +27 -0
  154. data/test/IORTable/client.rb +75 -0
  155. data/test/IORTable/run_test.rb +69 -0
  156. data/test/IORTable/server.ior +1 -0
  157. data/test/IORTable/server.rb +130 -0
  158. data/test/Implicit_Conversion/Test.idl +31 -0
  159. data/test/Implicit_Conversion/client.rb +110 -0
  160. data/test/Implicit_Conversion/run_test.rb +69 -0
  161. data/test/Implicit_Conversion/server.ior +1 -0
  162. data/test/Implicit_Conversion/server.rb +99 -0
  163. data/test/Multi_Threading/Multiple_ORB/Test.idl +27 -0
  164. data/test/Multi_Threading/Multiple_ORB/client.rb +82 -0
  165. data/test/Multi_Threading/Multiple_ORB/run_test.rb +71 -0
  166. data/test/Multi_Threading/Multiple_ORB/server.rb +108 -0
  167. data/test/Multi_Threading/Multiple_ORB/server0.ior +1 -0
  168. data/test/Multi_Threading/Multiple_ORB/server1.ior +1 -0
  169. data/test/Multi_Threading/Simple/Test.idl +27 -0
  170. data/test/Multi_Threading/Simple/client.rb +88 -0
  171. data/test/Multi_Threading/Simple/run_test.rb +69 -0
  172. data/test/Multi_Threading/Simple/server.ior +1 -0
  173. data/test/Multi_Threading/Simple/server.rb +118 -0
  174. data/test/Multi_Threading/Threads/Test.idl +31 -0
  175. data/test/Multi_Threading/Threads/client.rb +80 -0
  176. data/test/Multi_Threading/Threads/run_test.rb +76 -0
  177. data/test/Multi_Threading/Threads/server.ior +1 -0
  178. data/test/Multi_Threading/Threads/server.rb +119 -0
  179. data/test/Multi_Threading/Threads/watchdog.ior +1 -0
  180. data/test/Multi_Threading/Threads/watchdog.rb +87 -0
  181. data/test/Multiple_Servant_Interfaces/Test.idl +34 -0
  182. data/test/Multiple_Servant_Interfaces/client.rb +70 -0
  183. data/test/Multiple_Servant_Interfaces/run_test.rb +69 -0
  184. data/test/Multiple_Servant_Interfaces/server.ior +1 -0
  185. data/test/Multiple_Servant_Interfaces/server.rb +102 -0
  186. data/test/Nil/Test.idl +27 -0
  187. data/test/Nil/run_test.rb +52 -0
  188. data/test/Nil/test.rb +78 -0
  189. data/test/OBV/AbstractInterface/client.rb +179 -0
  190. data/test/OBV/AbstractInterface/run_test.rb +69 -0
  191. data/test/OBV/AbstractInterface/server.ior +1 -0
  192. data/test/OBV/AbstractInterface/server.rb +149 -0
  193. data/test/OBV/AbstractInterface/test.idl +53 -0
  194. data/test/OBV/Custom/OBV.idl +18 -0
  195. data/test/OBV/Custom/OBV_impl.rb +40 -0
  196. data/test/OBV/Custom/client.rb +86 -0
  197. data/test/OBV/Custom/run_test.rb +69 -0
  198. data/test/OBV/Custom/server.ior +1 -0
  199. data/test/OBV/Custom/server.rb +100 -0
  200. data/test/OBV/Simple/OBV.idl +15 -0
  201. data/test/OBV/Simple/OBV_impl.rb +26 -0
  202. data/test/OBV/Simple/client.rb +86 -0
  203. data/test/OBV/Simple/run_test.rb +69 -0
  204. data/test/OBV/Simple/server.ior +1 -0
  205. data/test/OBV/Simple/server.rb +100 -0
  206. data/test/OBV/Simple_Event/Event.idl +15 -0
  207. data/test/OBV/Simple_Event/Event_impl.rb +26 -0
  208. data/test/OBV/Simple_Event/client.rb +86 -0
  209. data/test/OBV/Simple_Event/run_test.rb +69 -0
  210. data/test/OBV/Simple_Event/server.ior +1 -0
  211. data/test/OBV/Simple_Event/server.rb +100 -0
  212. data/test/OBV/Supports/client.rb +116 -0
  213. data/test/OBV/Supports/run_test.rb +69 -0
  214. data/test/OBV/Supports/server.ior +1 -0
  215. data/test/OBV/Supports/server.rb +103 -0
  216. data/test/OBV/Supports/supports.idl +33 -0
  217. data/test/OBV/Supports/supports_impl.rb +57 -0
  218. data/test/OBV/Tree/client.rb +116 -0
  219. data/test/OBV/Tree/run_test.rb +69 -0
  220. data/test/OBV/Tree/server.ior +1 -0
  221. data/test/OBV/Tree/server.rb +117 -0
  222. data/test/OBV/Tree/test.idl +32 -0
  223. data/test/OBV/Truncatable/Extra.idl +27 -0
  224. data/test/OBV/Truncatable/Truncatable.idl +105 -0
  225. data/test/OBV/Truncatable/Truncatable_impl.rb +86 -0
  226. data/test/OBV/Truncatable/client.rb +279 -0
  227. data/test/OBV/Truncatable/run_test.rb +69 -0
  228. data/test/OBV/Truncatable/server.ior +1 -0
  229. data/test/OBV/Truncatable/server.rb +89 -0
  230. data/test/OBV/ValueBox/client.rb +497 -0
  231. data/test/OBV/ValueBox/run_test.rb +69 -0
  232. data/test/OBV/ValueBox/server.ior +1 -0
  233. data/test/OBV/ValueBox/server.rb +271 -0
  234. data/test/OBV/ValueBox/valuebox.idl +101 -0
  235. data/test/OBV/ValueBox/vb_basic.idl +75 -0
  236. data/test/OBV/ValueBox/vb_struct.idl +68 -0
  237. data/test/OBV/ValueBox/vb_union.idl +21 -0
  238. data/test/Object/Test.idl +27 -0
  239. data/test/Object/client.rb +103 -0
  240. data/test/Object/run_test.rb +69 -0
  241. data/test/Object/server.ior +1 -0
  242. data/test/Object/server.rb +126 -0
  243. data/test/POA/Test.idl +27 -0
  244. data/test/POA/run_test.rb +52 -0
  245. data/test/POA/test.rb +112 -0
  246. data/test/Param_Test/Test.idl +182 -0
  247. data/test/Param_Test/client.rb +277 -0
  248. data/test/Param_Test/run_test.rb +69 -0
  249. data/test/Param_Test/server.ior +1 -0
  250. data/test/Param_Test/server.rb +296 -0
  251. data/test/Performance/Simple/Test.idl +27 -0
  252. data/test/Performance/Simple/client.rb +90 -0
  253. data/test/Performance/Simple/run_test.rb +69 -0
  254. data/test/Performance/Simple/server.ior +1 -0
  255. data/test/Performance/Simple/server.rb +95 -0
  256. data/test/Policies/Test.idl +27 -0
  257. data/test/Policies/run_test.rb +52 -0
  258. data/test/Policies/test.rb +144 -0
  259. data/test/Timeout/client.rb +207 -0
  260. data/test/Timeout/run_test.rb +69 -0
  261. data/test/Timeout/server.ior +1 -0
  262. data/test/Timeout/server.rb +109 -0
  263. data/test/Timeout/test.idl +19 -0
  264. data/test/lib/assert.rb +43 -0
  265. data/test/lib/test.rb +542 -0
  266. data/test/test_runner.rb +193 -0
  267. metadata +342 -0
@@ -0,0 +1,336 @@
1
+ #--------------------------------------------------------------------
2
+ # config.rb - IDL language mapping configuration for Ruby
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # This program is free software; you can redistribute it and/or
7
+ # modify it under the terms of the R2CORBA LICENSE which is
8
+ # included with this program.
9
+ #
10
+ # Copyright (c) Remedy IT Expertise BV
11
+ # Chamber of commerce Rotterdam nr.276339, The Netherlands
12
+ #--------------------------------------------------------------------
13
+
14
+ module IDL
15
+
16
+ class StrOStream
17
+ def initialize()
18
+ @str = ""
19
+ end
20
+ def clear
21
+ @str = ""
22
+ end
23
+ def to_s
24
+ @str
25
+ end
26
+ def <<(s)
27
+ @str << s
28
+ end
29
+ end # class StrOStream
30
+
31
+ class RIDL
32
+ private
33
+ def RIDL.merge_params(params)
34
+ opts = IDL::OPTIONS.dup
35
+ params.each do |k,v|
36
+ case opts[k]
37
+ when Array
38
+ opts[k] = opts[k] + (Array === v ? v : [v])
39
+ when Hash
40
+ opts[k] = opts[k].merge(v) if Hash === v
41
+ else
42
+ opts[k] = v
43
+ end
44
+ end
45
+ opts
46
+ end
47
+ def RIDL.parse0(src, params)
48
+ params = merge_params(params)
49
+ IDL.verbose_level = params[:verbose]
50
+ parser = ::IDL::Parser.new(params)
51
+ parser.parse(src)
52
+ s = ::IDL::StrOStream.new
53
+ s.clear
54
+ IDL::Ruby.process_input(parser,params,s)
55
+ s
56
+ end
57
+ def RIDL.parse(src, params)
58
+ s = parse0(src, params)
59
+ s.to_s
60
+ end
61
+ public
62
+ def RIDL.eval(src, params={})
63
+ params[:idl_eval] = true
64
+ params[:expand_includes] = true
65
+ params[:client_stubs] = true if params[:client_stubs].nil?
66
+ params[:stubs_only] ||= false
67
+ s = parse0(src, params)
68
+ Kernel.eval(s.to_s, ::TOPLEVEL_BINDING)
69
+ s = nil
70
+ end
71
+ def RIDL.fparse(fname, params = {})
72
+ params[:client_stubs] = true if params[:client_stubs].nil?
73
+ params[:stubs_only] ||= false
74
+ f = File.open(fname, "r")
75
+ self.parse(f, params)
76
+ ensure
77
+ f.close
78
+ end
79
+ def RIDL.feval(fname, params = {})
80
+ File.open(fname, "r") { |io| self.eval(io, params) }
81
+ end
82
+ end # module RIDL
83
+
84
+ module Ruby
85
+ COPYRIGHT = 'Copyright (c) 2007-2013 Remedy IT Expertise BV, The Netherlands'.freeze
86
+ TITLE = 'RIDL Ruby backend'.freeze
87
+ VERSION = {
88
+ :major => 1,
89
+ :minor => 9,
90
+ :release => 2
91
+ }
92
+
93
+ ## Configure Ruby backend
94
+ #
95
+ Backend.configure('ruby', File.dirname(__FILE__), TITLE, COPYRIGHT, VERSION) do |becfg|
96
+
97
+ # setup backend option handling
98
+ #
99
+ becfg.on_setup do |optlist, ridl_params|
100
+ # defaults
101
+ ridl_params[:stub_pfx] = 'C'
102
+ ridl_params[:srv_pfx] = 'S'
103
+ ridl_params[:stubs_only] = false
104
+ ridl_params[:client_stubs] = true
105
+ ridl_params[:expand_includes] = false
106
+ ridl_params[:libinit] = true
107
+ ridl_params[:class_interfaces] = []
108
+
109
+ # ruby specific option switches
110
+
111
+ unless IDL.preprocessing? # same switch defined for IDL preprocessing mode
112
+ optlist.for_switch "--output=FILE", :type => String,
113
+ :description => ['Specifies filename to generate output in.',
114
+ 'Default: File.basename(idlfile, \'.idl\')+<postfix>+<ext>'] do |swcfg|
115
+ swcfg.on_exec do |arg, params|
116
+ params[:output] = arg
117
+ end
118
+
119
+ end
120
+ end
121
+
122
+ optlist.for_switch '-o PATH', :type => String,
123
+ :description => ["Specifies output directory.",
124
+ "Default: ./"] do |swcfg|
125
+ swcfg.on_exec do |arg, params|
126
+ params[:outputdir] = arg
127
+ end
128
+ end
129
+ optlist.for_switch '--stubs-only',
130
+ :description => ["Only generate client stubs, no servant code.",
131
+ "Default: off"] do |swcfg|
132
+ swcfg.on_exec do |arg, params|
133
+ params[:client_stubs] = true
134
+ params[:stubs_only] = true
135
+ end
136
+ end
137
+ optlist.for_switch '--no-stubs',
138
+ :description => ["Do not generate client stubs, only servant code.",
139
+ "Default: off"] do |swcfg|
140
+ swcfg.on_exec do |arg, params|
141
+ params[:client_stubs] = false
142
+ params[:stubs_only] = false
143
+ end
144
+ end
145
+ optlist.for_switch '--stub-pfx=POSTFIX', :type => String,
146
+ :description => ['Specifies postfix for generated client stub source filename.',
147
+ 'Filenames are formed like: <idl basename><postfix>.<language extension>',
148
+ "Default: #{ridl_params[:stub_pfx]}"] do |swcfg|
149
+ swcfg.on_exec do |arg, params|
150
+ params[:stub_pfx] = arg
151
+ end
152
+ end
153
+ optlist.for_switch '--skel-pfx=POSTFIX', :type => String,
154
+ :description => ['Specifies postfix for generated servant skeleton source filename.',
155
+ 'Filenames are formed like: <idl basename><postfix>.<language extension>',
156
+ "Default: #{ridl_params[:srv_pfx]}"] do |swcfg|
157
+ swcfg.on_exec do |arg, params|
158
+ params[:srv_pfx] = arg
159
+ end
160
+ end
161
+
162
+ optlist.for_switch '--skel-directory=PATH', :type => String,
163
+ :description => ["Specifies output directory for servant files.",
164
+ "Default: outputdir or ./"] do |swcfg|
165
+ swcfg.on_exec do |arg, params|
166
+ params[:skel_outputdir] = arg
167
+ end
168
+ end
169
+ optlist.for_switch '--expand-includes',
170
+ :description => ["Generate code for included IDL inline.",
171
+ "Default: off"] do |swcfg|
172
+ swcfg.on_exec do |arg, params|
173
+ params[:expand_includes] = true
174
+ end
175
+ end
176
+ optlist.for_switch '--no-libinit',
177
+ :description => ["Do not generate library initialization code as preamble.",
178
+ "Default: on"] do |swcfg|
179
+ swcfg.on_exec do |arg, params|
180
+ params[:libinit] = false
181
+ end
182
+ end
183
+ optlist.for_switch '--interface-as-class=INTF', :type => String,
184
+ :description => ["Generate a Ruby class for interface INTF instead of a module in client stubs.",
185
+ "Default: module"] do |swcfg|
186
+ swcfg.on_exec do |arg, params|
187
+ params[:class_interfaces] << arg
188
+ end
189
+ end
190
+ end
191
+
192
+ # process input / generate code
193
+ # arguments:
194
+ # in parser - parser object with full AST from parsed source
195
+ # in options - initialized option hash
196
+ #
197
+ becfg.on_process_input do |parser, options|
198
+ IDL::Ruby.process_input(parser,options)
199
+ end # becfg.on_process_input
200
+
201
+ end # Backend.configure
202
+
203
+ def self.process_input(parser, options, outstream = nil)
204
+ # has a user defined output filename been set
205
+ fixed_output = !options[:output].nil?
206
+
207
+ # determine output file path for client stub code
208
+ unless fixed_output || options[:idlfile].nil?
209
+ options[:output] = options[:outputdir]+'/'+File.basename(options[:idlfile], '.idl')+options[:stub_pfx]+'.rb'
210
+ end
211
+ # generate client stubs if requested
212
+ if options[:client_stubs]
213
+ # open output file
214
+ co = outstream || (if options[:output].nil?
215
+ GenFile.new(nil, :output_file => $stdout)
216
+ else
217
+ GenFile.new(options[:output])
218
+ end)
219
+ begin
220
+ # process StubWriter
221
+ parser.visit_nodes(::IDL::RubyStubWriter.new(co, options))
222
+ rescue => ex
223
+ IDL.log(0, ex)
224
+ IDL.log(0, ex.backtrace.join("\n")) unless ex.is_a? IDL::ParseError
225
+ exit 1
226
+ end
227
+ end
228
+
229
+ # determin output file path for servant code and open file
230
+ unless options[:stubs_only]
231
+ so = outstream || (unless fixed_output || options[:idlfile].nil?
232
+ options[:srv_output] = if fixed_output
233
+ options[:output]
234
+ else
235
+ options[:outputdir]+'/'+File.basename(options[:idlfile], '.idl')+options[:srv_pfx]+'.rb'
236
+ end
237
+ if fixed_output && options[:client_stubs]
238
+ co
239
+ else
240
+ GenFile.new(options[:srv_output])
241
+ end
242
+ else
243
+ GenFile.new(nil, :output_file => $stdout)
244
+ end)
245
+ begin
246
+ # process ServantWriter
247
+ parser.visit_nodes(::IDL::RubyServantWriter.new(so, options))
248
+ rescue => ex
249
+ IDL.log(0, ex)
250
+ IDL.log(0, ex.backtrace.join("\n")) unless ex.is_a? IDL::ParseError
251
+ exit 1
252
+ end
253
+ end
254
+ end
255
+
256
+ module LeafMixin
257
+
258
+ RESERVED_RUBY_CONST = [
259
+ 'Array', 'Bignum', 'Binding', 'Class', 'Continuation', 'Dir', 'Exception',
260
+ 'FalseClass', 'File', 'Fixnum', 'Float', 'Hash', 'Integer', 'IO', 'MatchData',
261
+ 'Method', 'Module', 'NilClass', 'Numeric', 'Object', 'Proc', 'Process', 'Range',
262
+ 'Regexp', 'String', 'Struct', 'Symbol', 'Thread', 'ThreadGroup', 'Time', 'TrueClass',
263
+ 'UnboundMethod', 'Comparable', 'Enumerable', 'Errno', 'FileTest', 'GC', 'Kernel',
264
+ 'Marshal', 'Math', 'ObjectSpace', 'Signal'
265
+ ]
266
+
267
+ RESERVED_RUBY_MEMBER = [
268
+ "untaint", "id", "instance_variable_get", "inspect", "taint", "public_methods", "__send__", "to_a", "display", "instance_eval",
269
+ "extend", "clone", "protected_methods", "hash", "freeze", "type", "instance_variable_set", "methods", "instance_variables", "to_s", "method", "dup",
270
+ "private_methods", "object_id", "send", "__id__", "singleton_methods",
271
+ "proc", "readline", "global_variables", "singleton_method_removed", "callcc", "syscall", "fail", "untrace_var", "load", "srand", "puts", "catch", "chomp",
272
+ "initialize_copy", "format", "scan", "print", "abort", "fork", "gsub", "trap", "test", "select", "initialize", "method_missing", "lambda", "readlines",
273
+ "local_variables", "singleton_method_undefined", "system", "open", "caller", "eval", "set_trace_func", "require", "rand", "singleton_method_added",
274
+ "throw", "gets", "binding", "raise", "warn", "getc", "exec", "trace_var", "irb_binding", "at_exit", "split", "putc", "loop", "chop", "sprintf", "p",
275
+ "remove_instance_variable", "exit", "printf", "sleep", "sub", "autoload"
276
+ ]
277
+
278
+ def self.included(klass)
279
+ klass.extend ClassMethods
280
+ end
281
+
282
+ def rubyname
283
+ lm_name
284
+ end
285
+
286
+ def scoped_rubyname
287
+ scoped_lm_name
288
+ end
289
+
290
+ module ClassMethods
291
+ def mk_name(nm, is_scoped)
292
+ ret = nm.dup
293
+ case self::NAMETYPE
294
+ when :class
295
+ ret = ret[0,1].upcase + ret[1,ret.size].to_s
296
+ ret = 'R_'+ret if !is_scoped && IDL::Ruby::LeafMixin::RESERVED_RUBY_CONST.include?(ret)
297
+ when :member
298
+ ret = ret[0,1].downcase + ret[1,ret.size].to_s
299
+ ret = 'r_'+ret if IDL::Ruby::LeafMixin::RESERVED_RUBY_MEMBER.include?(ret)
300
+ else
301
+ raise RuntimeError,
302
+ "invalid nametype for #{self.class}: #{self::NAMETYPE}"
303
+ end
304
+ ret
305
+ end
306
+ end
307
+ end # module LeafMixin
308
+
309
+ IDL::AST::Leaf.class_eval do
310
+ include LeafMixin
311
+ end
312
+
313
+ module ScannerMixin
314
+
315
+ RUBYKW = [
316
+ '__FILE__', 'and', 'def', 'end', 'in', 'or', 'self', 'unless',
317
+ '__LINE__', 'begin', 'defined?', 'ensure', 'module', 'redo', 'super', 'until',
318
+ 'BEGIN', 'break', 'do', 'false', 'next', 'rescue', 'then', 'when',
319
+ 'END', 'case', 'else', 'for', 'nil', 'retry', 'true', 'while',
320
+ 'alias', 'class', 'elsif', 'if', 'not', 'return', 'undef', 'yield',
321
+ ].collect! { |w| w.to_sym }
322
+
323
+ def chk_identifier(ident)
324
+ # prefix Ruby keywords with 'r_'
325
+ RUBYKW.include?(ident.to_sym) ? 'r_'+ident : ident
326
+ end
327
+
328
+ end # module ScannerMixin
329
+
330
+ IDL::Scanner.class_eval do
331
+ include ScannerMixin
332
+ end
333
+
334
+ end # module Ruby
335
+
336
+ end # module IDL
Binary file
@@ -0,0 +1,16 @@
1
+ #--------------------------------------------------------------------
2
+ # require.rb - IDL language mapping loader
3
+ #
4
+ # Author: Martin Corino
5
+ #
6
+ # This program is free software; you can redistribute it and/or
7
+ # modify it under the terms of the R2CORBA LICENSE which is
8
+ # included with this program.
9
+ #
10
+ # Copyright (c) Remedy IT Expertise BV
11
+ # Chamber of commerce Rotterdam nr.276339, The Netherlands
12
+ #--------------------------------------------------------------------
13
+
14
+ (Dir.glob(File.join(File.dirname(__FILE__), '*.rb')) - [__FILE__]).each do |f|
15
+ require f
16
+ end