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,77 @@
1
+ #--------------------------------------------------------------------
2
+ # policies.rb - C++/TAO R2CORBA Policy support 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
+ #--------------------------------------------------------------------
12
+ require 'corba/idl/TAO_ExtC'
13
+
14
+ begin
15
+ require 'librpol'
16
+ rescue LoadError
17
+ $stderr.puts $!.to_s if $VERBOSE
18
+ raise
19
+ end
20
+
21
+ module R2CORBA
22
+
23
+ module CORBA
24
+
25
+ module ORB
26
+ def create_policy(type, val)
27
+ raise CORBA::BAD_PARAM.new('Any expected', 0, CORBA::COMPLETED_NO) unless CORBA::Any === val
28
+ begin
29
+ self.orb_.create_policy(type.to_i, val)
30
+ rescue ::NativeException
31
+ CORBA::Exception.native2r($!)
32
+ end
33
+ end
34
+ end # ORB
35
+
36
+ module Object
37
+ def _get_policy(policy_type)
38
+ raise CORBA::INV_OBJREF.new if self._is_nil?()
39
+ begin
40
+ pol = self.objref_._get_policy(policy_type)
41
+ rescue ::NativeException
42
+ CORBA::Exception.native2r($!)
43
+ end
44
+ raise CORBA::INV_POLICY if CORBA.is_nil(pol) # provide spec compliance
45
+ end
46
+
47
+ def _set_policy_overrides(policies, set_add)
48
+ raise CORBA::INV_OBJREF.new if self._is_nil?()
49
+ begin
50
+ CORBA::Object._wrap_native(self.objref_._set_policy_overrides(policies, set_add))
51
+ rescue ::NativeException
52
+ CORBA::Exception.native2r($!)
53
+ end
54
+ end
55
+
56
+ def _get_policy_overrides(types)
57
+ raise CORBA::INV_OBJREF.new if self._is_nil?()
58
+ begin
59
+ self.objref_._get_policy_overrides(types)
60
+ rescue ::NativeException
61
+ CORBA::Exception.native2r($!)
62
+ end
63
+ end
64
+
65
+ def _validate_connection(inconsistent_policies)
66
+ raise CORBA::INV_OBJREF.new if self._is_nil?()
67
+ begin
68
+ self.objref_._validate_connection(inconsistent_policies)
69
+ rescue ::NativeException
70
+ CORBA::Exception.native2r($!)
71
+ end
72
+ end
73
+ end # Object
74
+
75
+ end # CORBA
76
+
77
+ end # R2CORBA
@@ -0,0 +1,13 @@
1
+ #--------------------------------------------------------------------
2
+ # require.rb - C++/TAO R2CORBA loader finalizer
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
+
13
+ require 'corba/cbase/IORMap'
@@ -0,0 +1,36 @@
1
+ #--------------------------------------------------------------------
2
+ # require.rb - C++/TAO R2CORBA 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
+ #--------------------------------------------------------------------
12
+
13
+ begin
14
+ _ext_dir = File.expand_path(File.join(File.dirname(__FILE__), '../../../ext'))
15
+ $: << _ext_dir unless $:.include?(_ext_dir) || !File.directory?(_ext_dir)
16
+ if RUBY_PLATFORM =~ /mingw/
17
+ require 'ruby_installer/runtime'
18
+ RubyInstaller::Runtime.add_dll_directory(_ext_dir)
19
+ ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
20
+ RubyInstaller::Runtime.add_dll_directory(path) if File.exist?(File.join(path, 'libACE.dll'))
21
+ end
22
+ end
23
+ require 'libr2tao'
24
+ rescue LoadError
25
+ $stderr.puts $!.to_s if $VERBOSE
26
+ raise
27
+ end
28
+
29
+ [ 'exception',
30
+ 'ORB',
31
+ 'Request',
32
+ 'Typecode',
33
+ 'Stub',
34
+ 'Values',
35
+ 'Streams'
36
+ ].each { |f| require "corba/cbase/#{f}.rb" }
@@ -0,0 +1,84 @@
1
+ #--------------------------------------------------------------------
2
+ # base.rb - R2CORBA base command handler
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
+
13
+ require 'optparse'
14
+
15
+ module R2CORBA
16
+ module Commands
17
+
18
+ @@commands = Hash.new do |hash, key|
19
+ $stderr.puts "Unknown command #{key} specified."
20
+ exit(1)
21
+ end
22
+
23
+ @@options = {
24
+ :verbose => false
25
+ }
26
+
27
+ def self.register(cmdid, cmdhandler)
28
+ @@commands[cmdid.to_s] = cmdhandler
29
+ end
30
+
31
+ def self.describe_all
32
+ puts 'R2CORBA commands:'
33
+ puts "\tlist\t\tlist all r2corba commands"
34
+ @@commands.each do |id, cmd|
35
+ desc = cmd.description.split('\n')
36
+ puts "\t#{id}\t\t#{desc.join('\t\t\t')}"
37
+ end
38
+ end
39
+
40
+ def self.run(cmdid)
41
+ @@commands[cmdid.to_s].run
42
+ end
43
+
44
+ def self.options
45
+ @@options
46
+ end
47
+
48
+ def self.parse_args(args)
49
+ opts = OptionParser.new
50
+ opts.banner = "Usage: r2corba [global options] command [command options]\n\n" +
51
+ " command\t\tSpecifies R2CORBA command to execute.\n" +
52
+ " \t\tDefault = list :== list commands\n"
53
+ opts.separator ''
54
+ opts.on('-v', '--verbose',
55
+ 'Show verbose output') { |v| ::R2CORBA::Commands.options[:verbose] = true }
56
+ opts.on('-h', '--help',
57
+ 'Show this message.') { |v| puts opts; exit(0) }
58
+ opts.parse!(args)
59
+ end
60
+ end
61
+ end
62
+
63
+ Dir[File.join(File.dirname(__FILE__), '*.rb')].each do |file|
64
+ require file unless File.basename(file) == File.basename(__FILE__)
65
+ end
66
+
67
+ # extract global options and command
68
+ args = []
69
+ while cmd = ARGV.shift
70
+ if cmd.start_with? '-'
71
+ args << cmd
72
+ cmd = nil
73
+ else
74
+ break
75
+ end
76
+ end
77
+
78
+ R2CORBA::Commands.parse_args(args)
79
+
80
+ if cmd && cmd.downcase != 'list'
81
+ R2CORBA::Commands.run(cmd)
82
+ else
83
+ R2CORBA::Commands.describe_all
84
+ end
@@ -0,0 +1,29 @@
1
+ #--------------------------------------------------------------------
2
+ # test.rb - R2CORBA unit tester command
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
+
13
+ require File.join(File.dirname(__FILE__), '..', '..', '..', 'test', 'test_runner.rb')
14
+
15
+ module R2CORBA
16
+ module Commands
17
+ class Test
18
+ def description
19
+ 'Run R2CORBA regression tests.'
20
+ end
21
+
22
+ def run
23
+ TestFinder.run ARGV
24
+ end
25
+ end
26
+
27
+ self.register('test', Test.new)
28
+ end
29
+ end
@@ -0,0 +1,91 @@
1
+ #--------------------------------------------------------------------
2
+ # Any.rb - Common definitions for CORBA Any support
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
+ class Any
15
+
16
+ def Any.typecode_for_value(val)
17
+ case val
18
+ when CORBA::Any
19
+ return val._tc
20
+ when ::NilClass
21
+ return CORBA._tc_null
22
+ when ::Bignum
23
+ return CORBA._tc_longlong
24
+ when ::Integer
25
+ return CORBA._tc_long
26
+ when ::Float
27
+ return CORBA._tc_double
28
+ when ::TrueClass, ::FalseClass
29
+ return CORBA._tc_boolean
30
+ when ::String
31
+ return CORBA._tc_string
32
+ else
33
+ if val.class.respond_to?(:_tc)
34
+ begin
35
+ tc = val.class._tc
36
+ if tc.is_a? CORBA::TypeCode
37
+ return tc
38
+ end
39
+ rescue
40
+ end
41
+ else
42
+ if val.is_a? CORBA::Object
43
+ return CORBA._tc_Object
44
+ elsif val.is_a? CORBA::TypeCode
45
+ return CORBA._tc_TypeCode
46
+ end
47
+ end
48
+ end
49
+ return nil
50
+ end
51
+
52
+ def Any.value_for_any(any)
53
+ case any
54
+ when CORBA::Any
55
+ return any._value
56
+ else
57
+ return any
58
+ end
59
+ end
60
+
61
+ def Any.to_any(o, tc = nil)
62
+ if tc.nil?
63
+ tc = self.typecode_for_value(o)
64
+ if tc.is_a?(CORBA::TypeCode)
65
+ return new(o, tc)
66
+ end
67
+ raise CORBA::MARSHAL.new('missing TypeCode', 0, CORBA::COMPLETED_NO)
68
+ end
69
+ return new(o, tc)
70
+ end
71
+
72
+ def _tc
73
+ @__tc
74
+ end
75
+
76
+ def _value
77
+ @__value
78
+ end
79
+
80
+ private_class_method :new
81
+
82
+ protected
83
+
84
+ def initialize(o, tc)
85
+ @__tc = tc
86
+ @__value = o
87
+ end
88
+
89
+ end # Any
90
+ end # CORBA
91
+ end # R2CORBA
@@ -0,0 +1,100 @@
1
+ #--------------------------------------------------------------------
2
+ # IDL.rb - inline IDL loading support
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
+
13
+ begin
14
+ require 'rubygems'
15
+ rescue LoadError
16
+ # ignore error, RIDL may be installed locally not as gem
17
+ end
18
+ # hardwire R2CORBA :ruby RIDL backend
19
+ ENV['RIDL_BE_SELECT'] = 'ruby'
20
+ # load RIDL
21
+ require 'ridl/ridl'
22
+
23
+ module R2CORBA
24
+
25
+ module CORBA
26
+
27
+ module IDL
28
+ CLIENT_STUB = 1
29
+ SERVANT_INTF = 2
30
+
31
+ @@loaded_idls = {}
32
+
33
+ def IDL.implement(idlfile, params = {}, genbits = CLIENT_STUB)
34
+ idlreg = @@loaded_idls[idlfile]
35
+ if idlreg.nil? || ((idlreg & genbits) != genbits)
36
+ idlreg ||= 0
37
+ if block_given?
38
+ @@loaded_idls[idlfile] = idlreg | genbits
39
+ yield
40
+ else
41
+ params[:includepaths] ||= $:
42
+ fp = find_include(idlfile, params[:includepaths])
43
+ begin
44
+ f = File.open(fp, 'r')
45
+ params.store(:stubs_only, !gen_servant_intf?(idlreg, genbits))
46
+ params.store(:client_stubs, gen_client_stubs?(idlreg, genbits))
47
+ ## check for forced stub generation
48
+ genbits |= CLIENT_STUB if params[:client_stubs]
49
+ @@loaded_idls[idlfile] = (idlreg | genbits)
50
+ ::IDL::RIDL.eval(f, params)
51
+ ensure
52
+ f.close
53
+ end
54
+ end
55
+ end
56
+ end
57
+ private
58
+ def IDL.find_include(fname, paths)
59
+ fpath = if File.file?(fname) && File.readable?(fname)
60
+ fname
61
+ else
62
+ fp = paths.find do |p|
63
+ f = p + '/' + fname
64
+ File.file?(f) && File.readable?(f)
65
+ end
66
+ fp += '/' + fname if !fp.nil?
67
+ fp
68
+ end
69
+ if not fpath.nil?
70
+ return fpath
71
+ end
72
+ raise "Cannot open IDL file '#{fname}'"
73
+ end
74
+
75
+ def IDL.gen_servant_intf?(idlreg, genbits)
76
+ if (genbits & SERVANT_INTF) == SERVANT_INTF
77
+ (idlreg & SERVANT_INTF) != SERVANT_INTF
78
+ else
79
+ false
80
+ end
81
+ end
82
+
83
+ def IDL.gen_client_stubs?(idlreg, genbits)
84
+ if (idlreg & CLIENT_STUB) == CLIENT_STUB
85
+ false
86
+ else
87
+ if (genbits & CLIENT_STUB) == CLIENT_STUB
88
+ true
89
+ else
90
+ ## if servant intf need to be generated we *require* client stubs too
91
+ gen_servant_intf?(idlreg, genbits)
92
+ end
93
+ end
94
+ end
95
+
96
+ end
97
+
98
+ end
99
+
100
+ end