r2corba 1.6.1-x64-mingw-ucrt

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +173 -0
  3. data/LICENSE +59 -0
  4. data/README.rdoc +62 -0
  5. data/THANKS +54 -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 +32 -0
  14. data/lib/corba/cbase/ORB.rb +239 -0
  15. data/lib/corba/cbase/Request.rb +133 -0
  16. data/lib/corba/cbase/Streams.rb +128 -0
  17. data/lib/corba/cbase/Stub.rb +18 -0
  18. data/lib/corba/cbase/Typecode.rb +440 -0
  19. data/lib/corba/cbase/Values.rb +130 -0
  20. data/lib/corba/cbase/exception.rb +67 -0
  21. data/lib/corba/cbase/poa.rb +22 -0
  22. data/lib/corba/cbase/policies.rb +77 -0
  23. data/lib/corba/cbase/post_require.rb +13 -0
  24. data/lib/corba/cbase/require.rb +36 -0
  25. data/lib/corba/cmds/base.rb +84 -0
  26. data/lib/corba/cmds/test.rb +29 -0
  27. data/lib/corba/common/Any.rb +91 -0
  28. data/lib/corba/common/IDL.rb +100 -0
  29. data/lib/corba/common/ORB.rb +367 -0
  30. data/lib/corba/common/Object.rb +211 -0
  31. data/lib/corba/common/Request.rb +19 -0
  32. data/lib/corba/common/Servant.rb +107 -0
  33. data/lib/corba/common/Struct.rb +21 -0
  34. data/lib/corba/common/Stub.rb +78 -0
  35. data/lib/corba/common/Typecode.rb +1147 -0
  36. data/lib/corba/common/Union.rb +60 -0
  37. data/lib/corba/common/Values.rb +92 -0
  38. data/lib/corba/common/const.rb +21 -0
  39. data/lib/corba/common/exception.rb +68 -0
  40. data/lib/corba/common/require.rb +34 -0
  41. data/lib/corba/common/version.rb +21 -0
  42. data/lib/corba/idl/BiDirPolicyC.rb +62 -0
  43. data/lib/corba/idl/CosNamingC.rb +460 -0
  44. data/lib/corba/idl/CosNamingS.rb +308 -0
  45. data/lib/corba/idl/IDL.rb +20 -0
  46. data/lib/corba/idl/IORTable.pidl +61 -0
  47. data/lib/corba/idl/IORTableC.rb +116 -0
  48. data/lib/corba/idl/MessagingC.rb +903 -0
  49. data/lib/corba/idl/POAC.rb +929 -0
  50. data/lib/corba/idl/TAO_Ext.pidl +45 -0
  51. data/lib/corba/idl/TAO_ExtC.rb +178 -0
  52. data/lib/corba/idl/r2c_orb.rb +571 -0
  53. data/lib/corba/idl/require.rb +19 -0
  54. data/lib/corba/jbase/Any.rb +274 -0
  55. data/lib/corba/jbase/IORMap.rb +35 -0
  56. data/lib/corba/jbase/ORB.rb +111 -0
  57. data/lib/corba/jbase/Object.rb +98 -0
  58. data/lib/corba/jbase/Request.rb +225 -0
  59. data/lib/corba/jbase/Servant.rb +247 -0
  60. data/lib/corba/jbase/ServerRequest.rb +127 -0
  61. data/lib/corba/jbase/Streams.rb +734 -0
  62. data/lib/corba/jbase/Stub.rb +37 -0
  63. data/lib/corba/jbase/Typecode.rb +520 -0
  64. data/lib/corba/jbase/Values.rb +174 -0
  65. data/lib/corba/jbase/exception.rb +106 -0
  66. data/lib/corba/jbase/poa.rb +228 -0
  67. data/lib/corba/jbase/policies.rb +299 -0
  68. data/lib/corba/jbase/post_require.rb +13 -0
  69. data/lib/corba/jbase/require.rb +92 -0
  70. data/lib/corba/naming.rb +13 -0
  71. data/lib/corba/naming_service.rb +14 -0
  72. data/lib/corba/poa.rb +14 -0
  73. data/lib/corba/policies.rb +17 -0
  74. data/lib/corba/require.rb +16 -0
  75. data/lib/corba/svcs/ins/cos_naming.rb +432 -0
  76. data/lib/corba/svcs/ins/ins.rb +525 -0
  77. data/lib/corba/svcs/ins/naming_service.rb +118 -0
  78. data/lib/corba.rb +15 -0
  79. data/lib/ridlbe/ruby/config.rb +340 -0
  80. data/lib/ridlbe/ruby/orb.pidlc +0 -0
  81. data/lib/ridlbe/ruby/require.rb +15 -0
  82. data/lib/ridlbe/ruby/walker.rb +1605 -0
  83. data/mkrf_conf_bingem.rb +149 -0
  84. data/rakelib/bin.rake +79 -0
  85. data/rakelib/bin.rb +145 -0
  86. data/rakelib/build.rake +87 -0
  87. data/rakelib/config.rake +51 -0
  88. data/rakelib/config.rb +542 -0
  89. data/rakelib/ext.rake +183 -0
  90. data/rakelib/ext.rb +277 -0
  91. data/rakelib/ext_r2tao.rb +208 -0
  92. data/rakelib/gem.rake +251 -0
  93. data/rakelib/gem.rb +145 -0
  94. data/rakelib/package.rake +25 -0
  95. data/rakelib/test.rake +22 -0
  96. data/test/BiDirectional/Test.idl +33 -0
  97. data/test/BiDirectional/client.rb +131 -0
  98. data/test/BiDirectional/run_test.rb +67 -0
  99. data/test/BiDirectional/server.rb +167 -0
  100. data/test/CORBA_Services/Naming/BindingIterator/Test.idl +26 -0
  101. data/test/CORBA_Services/Naming/BindingIterator/client.rb +120 -0
  102. data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +81 -0
  103. data/test/CORBA_Services/Naming/BindingIterator/server.rb +108 -0
  104. data/test/CORBA_Services/Naming/Corbaname/Test.idl +26 -0
  105. data/test/CORBA_Services/Naming/Corbaname/client.rb +84 -0
  106. data/test/CORBA_Services/Naming/Corbaname/run_test.rb +87 -0
  107. data/test/CORBA_Services/Naming/Corbaname/server.rb +134 -0
  108. data/test/CORBA_Services/Naming/Simple/Test.idl +26 -0
  109. data/test/CORBA_Services/Naming/Simple/client.rb +83 -0
  110. data/test/CORBA_Services/Naming/Simple/run_test.rb +81 -0
  111. data/test/CORBA_Services/Naming/Simple/server.rb +108 -0
  112. data/test/Collocation/Diamond.idl +38 -0
  113. data/test/Collocation/run_test.rb +51 -0
  114. data/test/Collocation/test.rb +201 -0
  115. data/test/Connect_Timeout/Test.idl +26 -0
  116. data/test/Connect_Timeout/client.rb +109 -0
  117. data/test/Connect_Timeout/run_test.rb +51 -0
  118. data/test/DII/Test.idl +26 -0
  119. data/test/DII/client.rb +114 -0
  120. data/test/DII/run_test.rb +68 -0
  121. data/test/DII/server.rb +94 -0
  122. data/test/DSI/Test.idl +26 -0
  123. data/test/DSI/client.rb +65 -0
  124. data/test/DSI/run_test.rb +68 -0
  125. data/test/DSI/server.rb +105 -0
  126. data/test/Exceptions/Test.idl +47 -0
  127. data/test/Exceptions/client.rb +117 -0
  128. data/test/Exceptions/run_test.rb +68 -0
  129. data/test/Exceptions/server.rb +130 -0
  130. data/test/Hello/Test.idl +26 -0
  131. data/test/Hello/client.rb +77 -0
  132. data/test/Hello/run_test.rb +70 -0
  133. data/test/Hello/server.rb +94 -0
  134. data/test/IDL_Test/Test.idl +116 -0
  135. data/test/IDL_Test/Test_inc.idl +17 -0
  136. data/test/IDL_Test/client.rb +103 -0
  137. data/test/IDL_Test/run_test.rb +68 -0
  138. data/test/IDL_Test/server.rb +103 -0
  139. data/test/IORMap/Test.idl +26 -0
  140. data/test/IORMap/client.rb +72 -0
  141. data/test/IORMap/run_test.rb +68 -0
  142. data/test/IORMap/server.rb +113 -0
  143. data/test/IORTable/Test.idl +26 -0
  144. data/test/IORTable/client.rb +74 -0
  145. data/test/IORTable/run_test.rb +68 -0
  146. data/test/IORTable/server.rb +129 -0
  147. data/test/Implicit_Conversion/Test.idl +30 -0
  148. data/test/Implicit_Conversion/client.rb +112 -0
  149. data/test/Implicit_Conversion/run_test.rb +68 -0
  150. data/test/Implicit_Conversion/server.rb +98 -0
  151. data/test/Multi_Threading/Multiple_ORB/Test.idl +26 -0
  152. data/test/Multi_Threading/Multiple_ORB/client.rb +81 -0
  153. data/test/Multi_Threading/Multiple_ORB/run_test.rb +70 -0
  154. data/test/Multi_Threading/Multiple_ORB/server.rb +107 -0
  155. data/test/Multi_Threading/Simple/Test.idl +26 -0
  156. data/test/Multi_Threading/Simple/client.rb +92 -0
  157. data/test/Multi_Threading/Simple/run_test.rb +68 -0
  158. data/test/Multi_Threading/Simple/server.rb +117 -0
  159. data/test/Multi_Threading/Threads/Test.idl +27 -0
  160. data/test/Multi_Threading/Threads/client.rb +77 -0
  161. data/test/Multi_Threading/Threads/run_test.rb +75 -0
  162. data/test/Multi_Threading/Threads/server.rb +116 -0
  163. data/test/Multi_Threading/Threads/watchdog.rb +87 -0
  164. data/test/Multiple_Servant_Interfaces/Test.idl +33 -0
  165. data/test/Multiple_Servant_Interfaces/client.rb +69 -0
  166. data/test/Multiple_Servant_Interfaces/run_test.rb +68 -0
  167. data/test/Multiple_Servant_Interfaces/server.rb +101 -0
  168. data/test/Nil/Test.idl +26 -0
  169. data/test/Nil/run_test.rb +51 -0
  170. data/test/Nil/test.rb +80 -0
  171. data/test/OBV/AbstractInterface/client.rb +178 -0
  172. data/test/OBV/AbstractInterface/run_test.rb +68 -0
  173. data/test/OBV/AbstractInterface/server.rb +149 -0
  174. data/test/OBV/AbstractInterface/test.idl +52 -0
  175. data/test/OBV/Custom/OBV.idl +18 -0
  176. data/test/OBV/Custom/OBV_impl.rb +41 -0
  177. data/test/OBV/Custom/client.rb +85 -0
  178. data/test/OBV/Custom/run_test.rb +68 -0
  179. data/test/OBV/Custom/server.rb +99 -0
  180. data/test/OBV/Simple/OBV.idl +15 -0
  181. data/test/OBV/Simple/OBV_impl.rb +26 -0
  182. data/test/OBV/Simple/client.rb +85 -0
  183. data/test/OBV/Simple/run_test.rb +68 -0
  184. data/test/OBV/Simple/server.rb +99 -0
  185. data/test/OBV/Simple_Event/Event.idl +15 -0
  186. data/test/OBV/Simple_Event/Event_impl.rb +26 -0
  187. data/test/OBV/Simple_Event/client.rb +85 -0
  188. data/test/OBV/Simple_Event/run_test.rb +68 -0
  189. data/test/OBV/Simple_Event/server.rb +99 -0
  190. data/test/OBV/Supports/client.rb +115 -0
  191. data/test/OBV/Supports/run_test.rb +68 -0
  192. data/test/OBV/Supports/server.rb +102 -0
  193. data/test/OBV/Supports/supports.idl +32 -0
  194. data/test/OBV/Supports/supports_impl.rb +59 -0
  195. data/test/OBV/Tree/client.rb +115 -0
  196. data/test/OBV/Tree/run_test.rb +68 -0
  197. data/test/OBV/Tree/server.rb +116 -0
  198. data/test/OBV/Tree/test.idl +31 -0
  199. data/test/OBV/Truncatable/Extra.idl +26 -0
  200. data/test/OBV/Truncatable/Truncatable.idl +105 -0
  201. data/test/OBV/Truncatable/Truncatable_impl.rb +85 -0
  202. data/test/OBV/Truncatable/client.rb +278 -0
  203. data/test/OBV/Truncatable/run_test.rb +68 -0
  204. data/test/OBV/Truncatable/server.rb +88 -0
  205. data/test/OBV/ValueBox/client.rb +497 -0
  206. data/test/OBV/ValueBox/run_test.rb +68 -0
  207. data/test/OBV/ValueBox/server.rb +271 -0
  208. data/test/OBV/ValueBox/valuebox.idl +101 -0
  209. data/test/OBV/ValueBox/vb_basic.idl +75 -0
  210. data/test/OBV/ValueBox/vb_struct.idl +68 -0
  211. data/test/OBV/ValueBox/vb_union.idl +21 -0
  212. data/test/Object/Test.idl +26 -0
  213. data/test/Object/client.rb +111 -0
  214. data/test/Object/run_test.rb +68 -0
  215. data/test/Object/server.rb +125 -0
  216. data/test/POA/Test.idl +27 -0
  217. data/test/POA/run_test.rb +51 -0
  218. data/test/POA/test.rb +111 -0
  219. data/test/Param_Test/Test.idl +182 -0
  220. data/test/Param_Test/client.rb +276 -0
  221. data/test/Param_Test/run_test.rb +68 -0
  222. data/test/Param_Test/server.rb +295 -0
  223. data/test/Performance/Simple/Test.idl +26 -0
  224. data/test/Performance/Simple/client.rb +89 -0
  225. data/test/Performance/Simple/run_test.rb +68 -0
  226. data/test/Performance/Simple/server.rb +94 -0
  227. data/test/Policies/Test.idl +26 -0
  228. data/test/Policies/run_test.rb +51 -0
  229. data/test/Policies/test.rb +142 -0
  230. data/test/Timeout/client.rb +206 -0
  231. data/test/Timeout/run_test.rb +68 -0
  232. data/test/Timeout/server.rb +108 -0
  233. data/test/Timeout/test.idl +18 -0
  234. data/test/lib/assert.rb +41 -0
  235. data/test/lib/test.rb +546 -0
  236. data/test/test_runner.rb +191 -0
  237. metadata +318 -0
@@ -0,0 +1,37 @@
1
+ #--------------------------------------------------------------------
2
+ # Stub.rb - Java/JacORB CORBA Stub definitions
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
+ #--------------------------------------------------------------------
12
+ module R2CORBA
13
+ module CORBA
14
+ module Stub
15
+ include R2CORBA::CORBA::Portable::Stub
16
+
17
+ protected
18
+
19
+ ##
20
+ # Handle IDL generated invocation
21
+ def _invoke(operation, param = {})
22
+ raise ArgumentError, 'expected Hash' unless ::Hash === param
23
+ req = self._request(operation)
24
+ req.arguments = param[:arg_list] if param.has_key?(:arg_list)
25
+ req.exceptions = param[:exc_list] if param.has_key?(:exc_list)
26
+ if param.has_key?(:result_type)
27
+ req.set_return_type(param[:result_type])
28
+ return req.invoke
29
+ else
30
+ req.send_oneway
31
+ return nil
32
+ end
33
+ end
34
+
35
+ end # Stub
36
+ end # CORBA
37
+ end # R2CORBA
@@ -0,0 +1,520 @@
1
+ #--------------------------------------------------------------------
2
+ # Typecode.rb - Java/JacORB specific CORBA TypeCode definitions
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
+ #--------------------------------------------------------------------
12
+ require 'corba/jbase/Any.rb'
13
+ require 'bigdecimal'
14
+
15
+ module R2CORBA
16
+ module CORBA
17
+
18
+ # define typecode kind constants
19
+ ['tk_null',
20
+ 'tk_void',
21
+ 'tk_short',
22
+ 'tk_long',
23
+ 'tk_ushort',
24
+ 'tk_ulong',
25
+ 'tk_float',
26
+ 'tk_double',
27
+ 'tk_boolean',
28
+ 'tk_char',
29
+ 'tk_octet',
30
+ 'tk_any',
31
+ 'tk_TypeCode',
32
+ 'tk_Principal',
33
+ 'tk_objref',
34
+ 'tk_struct',
35
+ 'tk_union',
36
+ 'tk_enum',
37
+ 'tk_string',
38
+ 'tk_sequence',
39
+ 'tk_array',
40
+ 'tk_alias',
41
+ 'tk_except',
42
+ 'tk_longlong',
43
+ 'tk_ulonglong',
44
+ 'tk_longdouble',
45
+ 'tk_wchar',
46
+ 'tk_wstring',
47
+ 'tk_fixed',
48
+ 'tk_value',
49
+ 'tk_value_box',
50
+ 'tk_native',
51
+ 'tk_abstract_interface'].each do |tk|
52
+ CORBA.const_set(tk.upcase.to_sym, CORBA::Native::TCKind.send("_#{tk}".to_sym))
53
+ end
54
+
55
+ class TypeCode
56
+
57
+ def TypeCode.native_kind(ntc)
58
+ ntc.kind.value
59
+ end
60
+
61
+ def kind
62
+ begin
63
+ self.tc_.kind.value
64
+ rescue ::NativeException
65
+ CORBA::Exception.native2r($!)
66
+ end
67
+ end
68
+
69
+ def member_label(index)
70
+ begin
71
+ Any.from_java(self.tc_.member_label(index.to_i))
72
+ rescue ::NativeException
73
+ CORBA::Exception.native2r($!)
74
+ end
75
+ end
76
+
77
+ class Recursive < CORBA::TypeCode
78
+
79
+ def initialize(id)
80
+ begin
81
+ @tc_ = CORBA::ORB._orb.create_recursive_tc(id)
82
+ rescue ::NativeException
83
+ CORBA::Exception.native2r($!)
84
+ end
85
+ end
86
+
87
+ end # Recursive
88
+
89
+ class String < CORBA::TypeCode
90
+
91
+ def initialize(*args)
92
+ if CORBA::Native::TypeCode === args.first
93
+ @tc_ = args.first
94
+ else
95
+ begin
96
+ @tc_ = CORBA::ORB._orb.create_string_tc(args.shift.to_i)
97
+ rescue ::NativeException
98
+ CORBA::Exception.native2r($!)
99
+ end
100
+ end
101
+ end
102
+
103
+ end # String
104
+
105
+ class WString < CORBA::TypeCode
106
+
107
+ def initialize(*args)
108
+ if CORBA::Native::TypeCode === args.first
109
+ @tc_ = args.first
110
+ else
111
+ begin
112
+ @tc_ = CORBA::ORB._orb.create_wstring_tc(args.shift.to_i)
113
+ rescue ::NativeException
114
+ CORBA::Exception.native2r($!)
115
+ end
116
+ end
117
+ end
118
+
119
+ end # WString
120
+
121
+ class Fixed < CORBA::TypeCode
122
+
123
+ def initialize(*args)
124
+ if CORBA::Native::TypeCode === args.first
125
+ @tc_ = args.first
126
+ else
127
+ digits, scale = args
128
+ begin
129
+ @tc_ = CORBA::ORB._orb.create_fixed_tc(digits.to_i, scale.to_i)
130
+ rescue ::NativeException
131
+ CORBA::Exception.native2r($!)
132
+ end
133
+ end
134
+ end
135
+
136
+ end # Fixed
137
+
138
+ class Sequence < CORBA::TypeCode
139
+
140
+ def initialize(*args)
141
+ if CORBA::Native::TypeCode === args.first
142
+ @tc_ = args.first
143
+ else
144
+ element_tc, bound = args
145
+ raise ArgumentError, 'expected CORBA::TypeCode' unless element_tc.is_a?(CORBA::TypeCode)
146
+ begin
147
+ @tc_ = CORBA::ORB._orb.create_sequence_tc(bound.to_i, element_tc.tc_)
148
+ rescue ::NativeException
149
+ CORBA::Exception.native2r($!)
150
+ end
151
+ end
152
+ end
153
+
154
+ end
155
+
156
+ class Array < CORBA::TypeCode
157
+
158
+ def initialize(*args)
159
+ if CORBA::Native::TypeCode === args.first
160
+ @tc_ = args.first
161
+ else
162
+ content_tc = args.shift
163
+ length = args
164
+ raise ArgumentError, 'expected CORBA::TypeCode' unless content_tc.is_a?(CORBA::TypeCode)
165
+ if length.size > 1
166
+ this_len = length.shift
167
+ content_tc = self.class.new(content_tc, *length)
168
+ else
169
+ this_len = length.first
170
+ end
171
+ begin
172
+ @tc_ = CORBA::ORB._orb.create_array_tc(this_len.to_i, content_tc.tc_)
173
+ rescue ::NativeException
174
+ CORBA::Exception.native2r($!)
175
+ end
176
+ end
177
+ end
178
+
179
+ end # Array
180
+
181
+ class IdentifiedTypeCode < CORBA::TypeCode
182
+
183
+ def initialize(id)
184
+ CORBA::TypeCode.register_id_type(id.to_s, self)
185
+ end
186
+
187
+ end # IdentifiedTypeCode
188
+
189
+ class Alias < IdentifiedTypeCode
190
+
191
+ def initialize(*args)
192
+ if CORBA::Native::TypeCode === args.first
193
+ @tc_ = args.first
194
+ @type = nil
195
+ super(@tc_.id)
196
+ else
197
+ id, name, orig_tc, type = args
198
+ raise ArgumentError, 'expected CORBA::TypeCode' unless orig_tc.is_a?(CORBA::TypeCode)
199
+ begin
200
+ @tc_ = CORBA::ORB._orb.create_alias_tc(id.to_s, name.to_s, orig_tc.tc_)
201
+ rescue ::NativeException
202
+ CORBA::Exception.native2r($!)
203
+ end
204
+ @type = type
205
+ super(id)
206
+ end
207
+ end
208
+
209
+ end # Alias
210
+
211
+ class Valuetype < IdentifiedTypeCode
212
+
213
+ def initialize(*args)
214
+ if CORBA::Native::TypeCode === args.first
215
+ @tc_ = args.first
216
+ @type = nil
217
+ @members = []
218
+ @tc_.member_count.times do |i|
219
+ @members << [@tc_.member_name(i), TypeCode.from_native(@tc_.member_type(i))]
220
+ end
221
+ super(id)
222
+ else
223
+ id, name, modifier, base, members_, type_ = args
224
+ raise ArgumentError, 'expected CORBA::Typecode' unless base.nil? || base.is_a?(CORBA::TypeCode)
225
+ raise ArgumentError, 'expected members Array' unless members_.is_a?(::Array) || type_.nil?
226
+ if type_.nil? && !members_.is_a?(::Array)
227
+ type_ = members_
228
+ members_ = []
229
+ end
230
+ @type = type_
231
+ @members = []
232
+ members_.each { |n, tc, access| add_member(n, tc, access) }
233
+ jmembers = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::ValueMember.java_class, @members.size)
234
+ @members.each_with_index do |(mn, mtc, access), i|
235
+ m_id = mtc.is_a?(IdentifiedTypeCode) ? mtc.id : 'IDL:*primitive*:1.0'
236
+ jmembers[i] = CORBA::Native::ValueMember.new(mn.to_s, m_id,
237
+ name, id.split(':').last,
238
+ mtc.tc_, nil,
239
+ access == :public ?
240
+ CORBA::PUBLIC_MEMBER :
241
+ CORBA::PRIVATE_MEMBER)
242
+ end
243
+ @tc_ = _create_tc(id, name, modifier, base, jmembers)
244
+ super(id)
245
+ end
246
+ end
247
+
248
+ protected
249
+
250
+ def _create_tc(id, name, modifier, base, jmembers)
251
+ begin
252
+ CORBA::ORB._orb.create_value_tc(id.to_s,
253
+ name.to_s,
254
+ CORBA::VT_MODIFIERS[modifier],
255
+ base.nil? ? nil : base.tc_,
256
+ jmembers)
257
+ rescue ::NativeException
258
+ CORBA::Exception.native2r($!)
259
+ end
260
+ end
261
+
262
+ end # Valuetype
263
+
264
+ class Eventtype < Valuetype
265
+
266
+ protected
267
+
268
+ def _create_tc(id, name, modifier, base, jmembers)
269
+ # JaCORB 2.3.1' does not support tk_event typecodes yet;
270
+ # so just let it be a regular valuetype
271
+ # NOTE: this will not be interoperable between jR2CORBA and R2CORBA
272
+ begin
273
+ CORBA::ORB._orb.create_value_tc(id.to_s,
274
+ name.to_s,
275
+ CORBA::VT_MODIFIERS[modifier],
276
+ base.nil? ? nil : base.tc_,
277
+ jmembers)
278
+ rescue ::NativeException
279
+ CORBA::Exception.native2r($!)
280
+ end
281
+ end
282
+
283
+ end # Eventtype
284
+
285
+ class Valuebox < IdentifiedTypeCode
286
+
287
+ def initialize(*args)
288
+ if CORBA::Native::TypeCode === args.first
289
+ @tc_ = args.first
290
+ @type = nil
291
+ super(@tc_.id)
292
+ else
293
+ id, name, boxed_tc, type = args
294
+ raise ArgumentError, 'expected CORBA::TypeCode' unless boxed_tc.is_a?(CORBA::TypeCode)
295
+ begin
296
+ @tc_ = CORBA::ORB._orb.create_value_box_tc(id.to_s, name.to_s, boxed_tc.tc_)
297
+ rescue ::NativeException
298
+ CORBA::Exception.native2r($!)
299
+ end
300
+ @type = type
301
+ super(id)
302
+ end
303
+ end
304
+
305
+ end # Valuebox
306
+
307
+ class ObjectRef < IdentifiedTypeCode
308
+
309
+ def initialize(*args)
310
+ if CORBA::Native::TypeCode === args.first
311
+ @tc_ = args.first
312
+ @type = CORBA::Object
313
+ super(@tc_.id)
314
+ else
315
+ id, name, type = args
316
+ begin
317
+ @tc_ = CORBA::ORB._orb.create_interface_tc(id.to_s, name.to_s)
318
+ rescue ::NativeException
319
+ CORBA::Exception.native2r($!)
320
+ end
321
+ @type = type
322
+ super(id)
323
+ end
324
+ end
325
+
326
+ end # ObjectRef
327
+
328
+ class AbstractInterface < IdentifiedTypeCode
329
+
330
+ def initialize(*args)
331
+ if CORBA::Native::TypeCode === args.first
332
+ @tc_ = args.first
333
+ @type = CORBA::AbstractBase
334
+ super(@tc_.id)
335
+ else
336
+ id, name, type = args
337
+ begin
338
+ @tc_ = CORBA::ORB._orb.create_abstract_interface_tc(id.to_s, name.to_s)
339
+ rescue ::NativeException
340
+ CORBA::Exception.native2r($!)
341
+ end
342
+ @type = type
343
+ super(id)
344
+ end
345
+ end
346
+
347
+ end # AbstractInterface
348
+
349
+ class Struct < IdentifiedTypeCode
350
+
351
+ def initialize(*args)
352
+ if CORBA::Native::TypeCode === args.first
353
+ @tc_ = args.first
354
+ @type = nil
355
+ @members = []
356
+ @tc_.member_count.times do |i|
357
+ @members << [@tc_.member_name(i), TypeCode.from_native(@tc_.member_type(i))]
358
+ end
359
+ super(id)
360
+ else
361
+ id, name, members_, type_ = args
362
+ raise ArgumentError, 'expected members Array' unless members_.is_a?(::Array) || type_.nil?
363
+ if type_.nil? && !members_.is_a?(::Array)
364
+ type_ = members_
365
+ members_ = []
366
+ end
367
+ @type = type_
368
+ @members = []
369
+ members_.each { |n, tc| add_member(n, tc) }
370
+ jmembers = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::StructMember.java_class, @members.size)
371
+ @members.each_with_index {|(mn, mtc), i| jmembers[i] = CORBA::Native::StructMember.new(mn.to_s, mtc.tc_, nil) }
372
+ @tc_ = _create_tc(id, name, jmembers)
373
+ super(id)
374
+ end
375
+ end
376
+
377
+ protected
378
+
379
+ def _create_tc(id, name, jmembers)
380
+ begin
381
+ CORBA::ORB._orb.create_struct_tc(id.to_s, name.to_s, jmembers)
382
+ rescue ::NativeException
383
+ CORBA::Exception.native2r($!)
384
+ end
385
+ end
386
+
387
+ end # Struct
388
+
389
+ class Except < Struct
390
+
391
+ def from_java(jex)
392
+ raise CORBA::BAD_PARAM.new('org.om.CORBA.UserException expected', 0, CORBA::COMPLETED_NO) unless jex.is_a?(CORBA::Native::UserException)
393
+ ex = get_type.new
394
+ members.each {|mname, mtc| ex.__send__("#{mname}=".to_sym, jex.__send__(mname.to_sym)) }
395
+ ex
396
+ end
397
+
398
+ def is_compatible?(jex)
399
+ raise CORBA::BAD_PARAM.new('org.om.CORBA.UserException expected', 0, CORBA::COMPLETED_NO) unless jex.is_a?(CORBA::Native::UserException)
400
+ members.all? {|mname, mtc| jex.respond_to?(mname.to_sym) }
401
+ end
402
+
403
+ protected
404
+
405
+ def _create_tc(id, name, jmembers)
406
+ begin
407
+ CORBA::ORB._orb.create_exception_tc(id.to_s, name.to_s, jmembers)
408
+ rescue ::NativeException
409
+ CORBA::Exception.native2r($!)
410
+ end
411
+ end
412
+
413
+ end # Except
414
+
415
+ class Union < IdentifiedTypeCode
416
+
417
+ def initialize(*args)
418
+ if CORBA::Native::TypeCode === args.first
419
+ @tc_ = args.first
420
+ @type = nil
421
+ @switchtype = TypeCode.from_native(@tc_.discriminator_type)
422
+ @labels = {}
423
+ @members = []
424
+ def_inx = @tc_.default_index
425
+ @tc_.member_count.times do |i|
426
+ if def_inx < 0 || def_inx != i
427
+ ml_ = Any.from_java(@tc_.member_label(i))
428
+ else
429
+ ml_ = :default
430
+ end
431
+ @labels[ml] = i
432
+ @members << [ml, @tc_.member_name(i), TypeCode.from_native(@tc_.member_type(i))]
433
+ end
434
+ super(id)
435
+ else
436
+ id, name, switchtype_, members_, type_, implicit_default_ = args
437
+ raise ::CORBA::BAD_PARAM unless members_.is_a? ::Array
438
+ raise ::CORBA::BAD_PARAM unless switchtype_.is_a?(CORBA::TypeCode)
439
+ @type = type_
440
+ @implicit_default = implicit_default_
441
+ @switchtype = switchtype_.resolved_tc
442
+ @labels = {}
443
+ @members = []
444
+ members_.each { |mlabel, mname, mtc|
445
+ add_member(mlabel, mname, mtc)
446
+ }
447
+ @id = id
448
+ @name = name
449
+ super(id)
450
+ end
451
+ end
452
+
453
+ # because creating the native tc involves creating Any's we postpone until actually needed
454
+ def tc_
455
+ @tc_ ||= begin
456
+ jmembers = CORBA::Native::Reflect::Array.newInstance(CORBA::Native::UnionMember.java_class, @members.size)
457
+ @members.each_with_index {|(ml, mn, mt), i|
458
+ if ml == :default
459
+ # label octet:0 means default label
460
+ jmembers[i] = CORBA::Native::UnionMember.new(mn, Any.to_any(0, CORBA._tc_octet).to_java, mt.tc_, nil)
461
+ else
462
+ jmembers[i] = CORBA::Native::UnionMember.new(mn, Any.to_any(ml, @switchtype).to_java, mt.tc_, nil)
463
+ end
464
+ }
465
+ _create_tc(@id, @name, @switchtype, jmembers)
466
+ end
467
+ end
468
+
469
+ protected
470
+
471
+ def _create_tc(id, name, disctc, jmembers)
472
+ begin
473
+ CORBA::ORB._orb.create_union_tc(id.to_s, name.to_s, disctc.tc_, jmembers)
474
+ rescue ::NativeException
475
+ CORBA::Exception.native2r($!)
476
+ end
477
+ end
478
+
479
+ end # Union
480
+
481
+ class Enum < IdentifiedTypeCode
482
+
483
+ def initialize(*args)
484
+ if CORBA::Native::TypeCode === args.first
485
+ @tc_ = args.first
486
+ @range = (0..@tc_.member_count).freeze
487
+ @members = @range.to_a.collect {|i| @tc_.member_name(i) }
488
+ super(@tc_.id)
489
+ else
490
+ id, name, members_ = args
491
+ raise CORBA::BAD_PARAM unless members_.is_a? ::Array
492
+ @members = members_.collect {|m| m.to_s}
493
+ @range = (0...@members.size).freeze
494
+ begin
495
+ @tc_ = CORBA::ORB._orb.create_enum_tc(id.to_s, name.to_s, @members.to_java(:string))
496
+ rescue ::NativeException
497
+ CORBA::Exception.native2r($!)
498
+ end
499
+ super(id)
500
+ end
501
+ end
502
+
503
+ end # Enum
504
+
505
+ def TypeCode.get_primitive_tc(kind)
506
+ case kind
507
+ when CORBA::TK_OBJREF
508
+ TypeCode::ObjectRef.new('IDL:omg.org/CORBA/Object:1.0', 'Object', CORBA::Object).freeze
509
+ else
510
+ TypeCode._wrap_native(CORBA::ORB._orb.get_primitive_tc(CORBA::Native::TCKind.from_int(kind.to_i)))
511
+ end
512
+ end
513
+
514
+ # final initialization
515
+ self._init()
516
+
517
+ end # TypeCode
518
+
519
+ end ## module CORBA
520
+ end ## module R2CORBA