r2corba 1.4.1-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGES +159 -0
- data/LICENSE +59 -0
- data/README +62 -0
- data/THANKS +52 -0
- data/bin/r2corba +8 -0
- data/bin/r2corba.bat +20 -0
- data/bin/ridlc +11 -0
- data/bin/ridlc.bat +23 -0
- data/bin/rins +7 -0
- data/bin/rins.bat +19 -0
- data/ext/.keep +0 -0
- data/lib/corba/cbase/IORMap.rb +33 -0
- data/lib/corba/cbase/ORB.rb +231 -0
- data/lib/corba/cbase/Request.rb +134 -0
- data/lib/corba/cbase/Streams.rb +129 -0
- data/lib/corba/cbase/Stub.rb +19 -0
- data/lib/corba/cbase/Typecode.rb +441 -0
- data/lib/corba/cbase/Values.rb +129 -0
- data/lib/corba/cbase/exception.rb +66 -0
- data/lib/corba/cbase/poa.rb +23 -0
- data/lib/corba/cbase/policies.rb +78 -0
- data/lib/corba/cbase/post_require.rb +14 -0
- data/lib/corba/cbase/require.rb +28 -0
- data/lib/corba/cmds/base.rb +85 -0
- data/lib/corba/cmds/test.rb +30 -0
- data/lib/corba/common/Any.rb +91 -0
- data/lib/corba/common/IDL.rb +104 -0
- data/lib/corba/common/ORB.rb +368 -0
- data/lib/corba/common/Object.rb +208 -0
- data/lib/corba/common/Request.rb +20 -0
- data/lib/corba/common/Servant.rb +108 -0
- data/lib/corba/common/Struct.rb +22 -0
- data/lib/corba/common/Stub.rb +79 -0
- data/lib/corba/common/Typecode.rb +1121 -0
- data/lib/corba/common/Union.rb +56 -0
- data/lib/corba/common/Values.rb +92 -0
- data/lib/corba/common/const.rb +22 -0
- data/lib/corba/common/exception.rb +68 -0
- data/lib/corba/common/require.rb +27 -0
- data/lib/corba/common/version.rb +22 -0
- data/lib/corba/idl/BiDirPolicyC.rb +63 -0
- data/lib/corba/idl/CosNamingC.rb +461 -0
- data/lib/corba/idl/CosNamingS.rb +309 -0
- data/lib/corba/idl/IDL.rb +21 -0
- data/lib/corba/idl/IORTable.pidl +62 -0
- data/lib/corba/idl/IORTableC.rb +117 -0
- data/lib/corba/idl/MessagingC.rb +904 -0
- data/lib/corba/idl/POAC.rb +930 -0
- data/lib/corba/idl/TAO_Ext.pidl +46 -0
- data/lib/corba/idl/TAO_ExtC.rb +179 -0
- data/lib/corba/idl/r2c_orb.rb +572 -0
- data/lib/corba/idl/require.rb +20 -0
- data/lib/corba/jbase/Any.rb +273 -0
- data/lib/corba/jbase/IORMap.rb +36 -0
- data/lib/corba/jbase/ORB.rb +99 -0
- data/lib/corba/jbase/Object.rb +98 -0
- data/lib/corba/jbase/Request.rb +226 -0
- data/lib/corba/jbase/Servant.rb +247 -0
- data/lib/corba/jbase/ServerRequest.rb +128 -0
- data/lib/corba/jbase/Streams.rb +671 -0
- data/lib/corba/jbase/Stub.rb +38 -0
- data/lib/corba/jbase/Typecode.rb +520 -0
- data/lib/corba/jbase/Values.rb +173 -0
- data/lib/corba/jbase/exception.rb +106 -0
- data/lib/corba/jbase/poa.rb +229 -0
- data/lib/corba/jbase/policies.rb +300 -0
- data/lib/corba/jbase/post_require.rb +14 -0
- data/lib/corba/jbase/require.rb +86 -0
- data/lib/corba/naming.rb +14 -0
- data/lib/corba/naming_service.rb +15 -0
- data/lib/corba/poa.rb +15 -0
- data/lib/corba/policies.rb +18 -0
- data/lib/corba/require.rb +17 -0
- data/lib/corba/svcs/ins/cos_naming.rb +426 -0
- data/lib/corba/svcs/ins/ins.rb +526 -0
- data/lib/corba/svcs/ins/naming_service.rb +119 -0
- data/lib/corba.rb +16 -0
- data/lib/ridlbe/ruby/config.rb +336 -0
- data/lib/ridlbe/ruby/orb.pidlc +0 -0
- data/lib/ridlbe/ruby/require.rb +16 -0
- data/lib/ridlbe/ruby/walker.rb +1582 -0
- data/mkrf_conf_bingem.rb +101 -0
- data/rakelib/bin.rake +80 -0
- data/rakelib/bin.rb +146 -0
- data/rakelib/build.rake +87 -0
- data/rakelib/config.rake +52 -0
- data/rakelib/config.rb +450 -0
- data/rakelib/ext.rake +242 -0
- data/rakelib/ext.rb +308 -0
- data/rakelib/ext_r2tao.rb +232 -0
- data/rakelib/gem.rake +212 -0
- data/rakelib/gem.rb +146 -0
- data/rakelib/package.rake +26 -0
- data/rakelib/test.rake +23 -0
- data/test/BiDirectional/Test.idl +34 -0
- data/test/BiDirectional/client.rb +132 -0
- data/test/BiDirectional/run_test.rb +68 -0
- data/test/BiDirectional/server.ior +1 -0
- data/test/BiDirectional/server.rb +169 -0
- data/test/CORBA_Services/Naming/BindingIterator/Test.idl +27 -0
- data/test/CORBA_Services/Naming/BindingIterator/client.rb +121 -0
- data/test/CORBA_Services/Naming/BindingIterator/ins.ior +1 -0
- data/test/CORBA_Services/Naming/BindingIterator/run_test.rb +82 -0
- data/test/CORBA_Services/Naming/BindingIterator/server.rb +109 -0
- data/test/CORBA_Services/Naming/Corbaname/Test.idl +27 -0
- data/test/CORBA_Services/Naming/Corbaname/client.rb +85 -0
- data/test/CORBA_Services/Naming/Corbaname/corbaname.ior +1 -0
- data/test/CORBA_Services/Naming/Corbaname/ins.ior +1 -0
- data/test/CORBA_Services/Naming/Corbaname/run_test.rb +88 -0
- data/test/CORBA_Services/Naming/Corbaname/server.rb +135 -0
- data/test/CORBA_Services/Naming/Simple/Test.idl +27 -0
- data/test/CORBA_Services/Naming/Simple/client.rb +84 -0
- data/test/CORBA_Services/Naming/Simple/ins.ior +1 -0
- data/test/CORBA_Services/Naming/Simple/run_test.rb +82 -0
- data/test/CORBA_Services/Naming/Simple/server.rb +109 -0
- data/test/Collocation/Diamond.idl +39 -0
- data/test/Collocation/run_test.rb +52 -0
- data/test/Collocation/test.rb +195 -0
- data/test/Connect_Timeout/Test.idl +27 -0
- data/test/Connect_Timeout/client.rb +111 -0
- data/test/Connect_Timeout/run_test.rb +52 -0
- data/test/DII/Test.idl +27 -0
- data/test/DII/client.rb +115 -0
- data/test/DII/run_test.rb +69 -0
- data/test/DII/server.ior +1 -0
- data/test/DII/server.rb +95 -0
- data/test/DSI/Test.idl +27 -0
- data/test/DSI/client.rb +66 -0
- data/test/DSI/run_test.rb +69 -0
- data/test/DSI/server.ior +1 -0
- data/test/DSI/server.rb +106 -0
- data/test/Exceptions/Test.idl +48 -0
- data/test/Exceptions/client.rb +118 -0
- data/test/Exceptions/run_test.rb +69 -0
- data/test/Exceptions/server.ior +1 -0
- data/test/Exceptions/server.rb +131 -0
- data/test/Hello/Test.idl +27 -0
- data/test/Hello/client.rb +78 -0
- data/test/Hello/run_test.rb +71 -0
- data/test/Hello/server.rb +95 -0
- data/test/IDL_Test/Test.idl +113 -0
- data/test/IDL_Test/Test_inc.idl +17 -0
- data/test/IDL_Test/client.rb +102 -0
- data/test/IDL_Test/run_test.rb +69 -0
- data/test/IDL_Test/server.ior +1 -0
- data/test/IDL_Test/server.rb +99 -0
- data/test/IORMap/Test.idl +27 -0
- data/test/IORMap/client.rb +73 -0
- data/test/IORMap/run_test.rb +69 -0
- data/test/IORMap/server.ior +1 -0
- data/test/IORMap/server.rb +114 -0
- data/test/IORTable/Test.idl +27 -0
- data/test/IORTable/client.rb +75 -0
- data/test/IORTable/run_test.rb +69 -0
- data/test/IORTable/server.ior +1 -0
- data/test/IORTable/server.rb +130 -0
- data/test/Implicit_Conversion/Test.idl +31 -0
- data/test/Implicit_Conversion/client.rb +110 -0
- data/test/Implicit_Conversion/run_test.rb +69 -0
- data/test/Implicit_Conversion/server.ior +1 -0
- data/test/Implicit_Conversion/server.rb +99 -0
- data/test/Multi_Threading/Multiple_ORB/Test.idl +27 -0
- data/test/Multi_Threading/Multiple_ORB/client.rb +82 -0
- data/test/Multi_Threading/Multiple_ORB/run_test.rb +71 -0
- data/test/Multi_Threading/Multiple_ORB/server.rb +108 -0
- data/test/Multi_Threading/Multiple_ORB/server0.ior +1 -0
- data/test/Multi_Threading/Multiple_ORB/server1.ior +1 -0
- data/test/Multi_Threading/Simple/Test.idl +27 -0
- data/test/Multi_Threading/Simple/client.rb +88 -0
- data/test/Multi_Threading/Simple/run_test.rb +69 -0
- data/test/Multi_Threading/Simple/server.ior +1 -0
- data/test/Multi_Threading/Simple/server.rb +118 -0
- data/test/Multi_Threading/Threads/Test.idl +31 -0
- data/test/Multi_Threading/Threads/client.rb +80 -0
- data/test/Multi_Threading/Threads/run_test.rb +76 -0
- data/test/Multi_Threading/Threads/server.ior +1 -0
- data/test/Multi_Threading/Threads/server.rb +119 -0
- data/test/Multi_Threading/Threads/watchdog.ior +1 -0
- data/test/Multi_Threading/Threads/watchdog.rb +87 -0
- data/test/Multiple_Servant_Interfaces/Test.idl +34 -0
- data/test/Multiple_Servant_Interfaces/client.rb +70 -0
- data/test/Multiple_Servant_Interfaces/run_test.rb +69 -0
- data/test/Multiple_Servant_Interfaces/server.ior +1 -0
- data/test/Multiple_Servant_Interfaces/server.rb +102 -0
- data/test/Nil/Test.idl +27 -0
- data/test/Nil/run_test.rb +52 -0
- data/test/Nil/test.rb +78 -0
- data/test/OBV/AbstractInterface/client.rb +179 -0
- data/test/OBV/AbstractInterface/run_test.rb +69 -0
- data/test/OBV/AbstractInterface/server.ior +1 -0
- data/test/OBV/AbstractInterface/server.rb +149 -0
- data/test/OBV/AbstractInterface/test.idl +53 -0
- data/test/OBV/Custom/OBV.idl +18 -0
- data/test/OBV/Custom/OBV_impl.rb +40 -0
- data/test/OBV/Custom/client.rb +86 -0
- data/test/OBV/Custom/run_test.rb +69 -0
- data/test/OBV/Custom/server.ior +1 -0
- data/test/OBV/Custom/server.rb +100 -0
- data/test/OBV/Simple/OBV.idl +15 -0
- data/test/OBV/Simple/OBV_impl.rb +26 -0
- data/test/OBV/Simple/client.rb +86 -0
- data/test/OBV/Simple/run_test.rb +69 -0
- data/test/OBV/Simple/server.ior +1 -0
- data/test/OBV/Simple/server.rb +100 -0
- data/test/OBV/Simple_Event/Event.idl +15 -0
- data/test/OBV/Simple_Event/Event_impl.rb +26 -0
- data/test/OBV/Simple_Event/client.rb +86 -0
- data/test/OBV/Simple_Event/run_test.rb +69 -0
- data/test/OBV/Simple_Event/server.ior +1 -0
- data/test/OBV/Simple_Event/server.rb +100 -0
- data/test/OBV/Supports/client.rb +116 -0
- data/test/OBV/Supports/run_test.rb +69 -0
- data/test/OBV/Supports/server.ior +1 -0
- data/test/OBV/Supports/server.rb +103 -0
- data/test/OBV/Supports/supports.idl +33 -0
- data/test/OBV/Supports/supports_impl.rb +57 -0
- data/test/OBV/Tree/client.rb +116 -0
- data/test/OBV/Tree/run_test.rb +69 -0
- data/test/OBV/Tree/server.ior +1 -0
- data/test/OBV/Tree/server.rb +117 -0
- data/test/OBV/Tree/test.idl +32 -0
- data/test/OBV/Truncatable/Extra.idl +27 -0
- data/test/OBV/Truncatable/Truncatable.idl +105 -0
- data/test/OBV/Truncatable/Truncatable_impl.rb +86 -0
- data/test/OBV/Truncatable/client.rb +279 -0
- data/test/OBV/Truncatable/run_test.rb +69 -0
- data/test/OBV/Truncatable/server.ior +1 -0
- data/test/OBV/Truncatable/server.rb +89 -0
- data/test/OBV/ValueBox/client.rb +497 -0
- data/test/OBV/ValueBox/run_test.rb +69 -0
- data/test/OBV/ValueBox/server.ior +1 -0
- data/test/OBV/ValueBox/server.rb +271 -0
- data/test/OBV/ValueBox/valuebox.idl +101 -0
- data/test/OBV/ValueBox/vb_basic.idl +75 -0
- data/test/OBV/ValueBox/vb_struct.idl +68 -0
- data/test/OBV/ValueBox/vb_union.idl +21 -0
- data/test/Object/Test.idl +27 -0
- data/test/Object/client.rb +103 -0
- data/test/Object/run_test.rb +69 -0
- data/test/Object/server.ior +1 -0
- data/test/Object/server.rb +126 -0
- data/test/POA/Test.idl +27 -0
- data/test/POA/run_test.rb +52 -0
- data/test/POA/test.rb +112 -0
- data/test/Param_Test/Test.idl +182 -0
- data/test/Param_Test/client.rb +277 -0
- data/test/Param_Test/run_test.rb +69 -0
- data/test/Param_Test/server.ior +1 -0
- data/test/Param_Test/server.rb +296 -0
- data/test/Performance/Simple/Test.idl +27 -0
- data/test/Performance/Simple/client.rb +90 -0
- data/test/Performance/Simple/run_test.rb +69 -0
- data/test/Performance/Simple/server.ior +1 -0
- data/test/Performance/Simple/server.rb +95 -0
- data/test/Policies/Test.idl +27 -0
- data/test/Policies/run_test.rb +52 -0
- data/test/Policies/test.rb +144 -0
- data/test/Timeout/client.rb +207 -0
- data/test/Timeout/run_test.rb +69 -0
- data/test/Timeout/server.ior +1 -0
- data/test/Timeout/server.rb +109 -0
- data/test/Timeout/test.idl +19 -0
- data/test/lib/assert.rb +43 -0
- data/test/lib/test.rb +542 -0
- data/test/test_runner.rb +193 -0
- 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
|