rltk 2.2.1 → 3.0.0
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.
- checksums.yaml +7 -0
- data/LICENSE +12 -12
- data/README.md +458 -285
- data/Rakefile +99 -92
- data/lib/rltk/ast.rb +221 -126
- data/lib/rltk/cfg.rb +218 -239
- data/lib/rltk/cg/basic_block.rb +1 -1
- data/lib/rltk/cg/bindings.rb +9 -26
- data/lib/rltk/cg/builder.rb +40 -8
- data/lib/rltk/cg/context.rb +1 -1
- data/lib/rltk/cg/contractor.rb +51 -0
- data/lib/rltk/cg/execution_engine.rb +45 -8
- data/lib/rltk/cg/function.rb +12 -2
- data/lib/rltk/cg/generated_bindings.rb +2541 -575
- data/lib/rltk/cg/generic_value.rb +2 -2
- data/lib/rltk/cg/instruction.rb +104 -83
- data/lib/rltk/cg/llvm.rb +44 -3
- data/lib/rltk/cg/memory_buffer.rb +22 -5
- data/lib/rltk/cg/module.rb +85 -36
- data/lib/rltk/cg/old_generated_bindings.rb +6152 -0
- data/lib/rltk/cg/pass_manager.rb +87 -43
- data/lib/rltk/cg/support.rb +2 -4
- data/lib/rltk/cg/target.rb +158 -28
- data/lib/rltk/cg/triple.rb +8 -8
- data/lib/rltk/cg/type.rb +69 -25
- data/lib/rltk/cg/value.rb +107 -66
- data/lib/rltk/cg.rb +16 -17
- data/lib/rltk/lexer.rb +21 -11
- data/lib/rltk/lexers/calculator.rb +1 -1
- data/lib/rltk/lexers/ebnf.rb +8 -7
- data/lib/rltk/parser.rb +300 -247
- data/lib/rltk/parsers/infix_calc.rb +1 -1
- data/lib/rltk/parsers/postfix_calc.rb +2 -2
- data/lib/rltk/parsers/prefix_calc.rb +2 -2
- data/lib/rltk/token.rb +1 -2
- data/lib/rltk/version.rb +3 -3
- data/lib/rltk.rb +6 -6
- data/test/cg/tc_basic_block.rb +83 -0
- data/test/cg/tc_control_flow.rb +191 -0
- data/test/cg/tc_function.rb +54 -0
- data/test/cg/tc_generic_value.rb +33 -0
- data/test/cg/tc_instruction.rb +256 -0
- data/test/cg/tc_llvm.rb +25 -0
- data/test/cg/tc_math.rb +88 -0
- data/test/cg/tc_module.rb +89 -0
- data/test/cg/tc_transforms.rb +68 -0
- data/test/cg/tc_type.rb +69 -0
- data/test/cg/tc_value.rb +151 -0
- data/test/cg/ts_cg.rb +23 -0
- data/test/tc_ast.rb +105 -8
- data/test/tc_cfg.rb +63 -48
- data/test/tc_lexer.rb +84 -96
- data/test/tc_parser.rb +224 -52
- data/test/tc_token.rb +6 -6
- data/test/ts_rltk.rb +12 -15
- metadata +149 -75
- data/lib/rltk/cg/generated_extended_bindings.rb +0 -287
- data/lib/rltk/util/abstract_class.rb +0 -25
- data/lib/rltk/util/monkeys.rb +0 -129
metadata
CHANGED
@@ -1,158 +1,209 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rltk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 3.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Chris Wailes
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-06-23 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: ffi
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 1.0.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 1.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: filigree
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.2.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.2.0
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
42
|
name: bundler
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
44
|
requirements:
|
35
|
-
- -
|
45
|
+
- - '>='
|
36
46
|
- !ruby/object:Gem::Version
|
37
47
|
version: '0'
|
38
48
|
type: :development
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
|
-
- -
|
52
|
+
- - '>='
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: '0'
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: ffi_gen
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - '>='
|
52
60
|
- !ruby/object:Gem::Version
|
53
61
|
version: 1.1.0
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - '>='
|
60
67
|
- !ruby/object:Gem::Version
|
61
68
|
version: 1.1.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: flay
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: flog
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
62
97
|
- !ruby/object:Gem::Dependency
|
63
98
|
name: minitest
|
64
99
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
100
|
requirements:
|
67
|
-
- -
|
101
|
+
- - '>='
|
68
102
|
- !ruby/object:Gem::Version
|
69
103
|
version: '0'
|
70
104
|
type: :development
|
71
105
|
prerelease: false
|
72
106
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
107
|
requirements:
|
75
|
-
- -
|
108
|
+
- - '>='
|
76
109
|
- !ruby/object:Gem::Version
|
77
110
|
version: '0'
|
78
111
|
- !ruby/object:Gem::Dependency
|
79
112
|
name: pry
|
80
113
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
114
|
requirements:
|
83
|
-
- -
|
115
|
+
- - '>='
|
84
116
|
- !ruby/object:Gem::Version
|
85
117
|
version: '0'
|
86
118
|
type: :development
|
87
119
|
prerelease: false
|
88
120
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
121
|
requirements:
|
91
|
-
- -
|
122
|
+
- - '>='
|
92
123
|
- !ruby/object:Gem::Version
|
93
124
|
version: '0'
|
94
125
|
- !ruby/object:Gem::Dependency
|
95
126
|
name: rake
|
96
127
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
128
|
requirements:
|
99
|
-
- -
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rake-notes
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: reek
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '>='
|
100
158
|
- !ruby/object:Gem::Version
|
101
159
|
version: '0'
|
102
160
|
type: :development
|
103
161
|
prerelease: false
|
104
162
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
163
|
requirements:
|
107
|
-
- -
|
164
|
+
- - '>='
|
108
165
|
- !ruby/object:Gem::Version
|
109
166
|
version: '0'
|
110
167
|
- !ruby/object:Gem::Dependency
|
111
168
|
name: rubygems-tasks
|
112
169
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
170
|
requirements:
|
115
|
-
- -
|
171
|
+
- - '>='
|
116
172
|
- !ruby/object:Gem::Version
|
117
173
|
version: '0'
|
118
174
|
type: :development
|
119
175
|
prerelease: false
|
120
176
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
177
|
requirements:
|
123
|
-
- -
|
178
|
+
- - '>='
|
124
179
|
- !ruby/object:Gem::Version
|
125
180
|
version: '0'
|
126
181
|
- !ruby/object:Gem::Dependency
|
127
182
|
name: simplecov
|
128
183
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
184
|
requirements:
|
131
|
-
- -
|
185
|
+
- - '>='
|
132
186
|
- !ruby/object:Gem::Version
|
133
187
|
version: '0'
|
134
188
|
type: :development
|
135
189
|
prerelease: false
|
136
190
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
191
|
requirements:
|
139
|
-
- -
|
192
|
+
- - '>='
|
140
193
|
- !ruby/object:Gem::Version
|
141
194
|
version: '0'
|
142
195
|
- !ruby/object:Gem::Dependency
|
143
196
|
name: yard
|
144
197
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
198
|
requirements:
|
147
|
-
- -
|
199
|
+
- - '>='
|
148
200
|
- !ruby/object:Gem::Version
|
149
201
|
version: 0.8.1
|
150
202
|
type: :development
|
151
203
|
prerelease: false
|
152
204
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
205
|
requirements:
|
155
|
-
- -
|
206
|
+
- - '>='
|
156
207
|
- !ruby/object:Gem::Version
|
157
208
|
version: 0.8.1
|
158
209
|
description: The Ruby Language Toolkit provides classes for creating context-free
|
@@ -166,75 +217,98 @@ files:
|
|
166
217
|
- AUTHORS
|
167
218
|
- README.md
|
168
219
|
- Rakefile
|
220
|
+
- lib/rltk/parser.rb
|
221
|
+
- lib/rltk/cg.rb
|
222
|
+
- lib/rltk/parsers/infix_calc.rb
|
223
|
+
- lib/rltk/parsers/postfix_calc.rb
|
224
|
+
- lib/rltk/parsers/prefix_calc.rb
|
169
225
|
- lib/rltk/cfg.rb
|
170
226
|
- lib/rltk/lexer.rb
|
171
|
-
- lib/rltk/
|
172
|
-
- lib/rltk/lexers/ebnf.rb
|
227
|
+
- lib/rltk/token.rb
|
173
228
|
- lib/rltk/lexers/calculator.rb
|
174
|
-
- lib/rltk/
|
175
|
-
- lib/rltk/
|
229
|
+
- lib/rltk/lexers/ebnf.rb
|
230
|
+
- lib/rltk/version.rb
|
176
231
|
- lib/rltk/ast.rb
|
177
|
-
- lib/rltk/
|
178
|
-
- lib/rltk/
|
179
|
-
- lib/rltk/cg/
|
180
|
-
- lib/rltk/cg/
|
232
|
+
- lib/rltk/cg/instruction.rb
|
233
|
+
- lib/rltk/cg/generic_value.rb
|
234
|
+
- lib/rltk/cg/function.rb
|
235
|
+
- lib/rltk/cg/contractor.rb
|
236
|
+
- lib/rltk/cg/memory_buffer.rb
|
181
237
|
- lib/rltk/cg/type.rb
|
182
|
-
- lib/rltk/cg/context.rb
|
183
238
|
- lib/rltk/cg/support.rb
|
184
|
-
- lib/rltk/cg/builder.rb
|
185
|
-
- lib/rltk/cg/instruction.rb
|
186
|
-
- lib/rltk/cg/basic_block.rb
|
187
239
|
- lib/rltk/cg/module.rb
|
188
|
-
- lib/rltk/cg/
|
189
|
-
- lib/rltk/cg/
|
190
|
-
- lib/rltk/cg/
|
191
|
-
- lib/rltk/cg/
|
240
|
+
- lib/rltk/cg/execution_engine.rb
|
241
|
+
- lib/rltk/cg/old_generated_bindings.rb
|
242
|
+
- lib/rltk/cg/context.rb
|
243
|
+
- lib/rltk/cg/generated_bindings.rb
|
192
244
|
- lib/rltk/cg/value.rb
|
245
|
+
- lib/rltk/cg/triple.rb
|
246
|
+
- lib/rltk/cg/basic_block.rb
|
247
|
+
- lib/rltk/cg/pass_manager.rb
|
193
248
|
- lib/rltk/cg/bindings.rb
|
194
249
|
- lib/rltk/cg/llvm.rb
|
195
250
|
- lib/rltk/cg/target.rb
|
196
|
-
- lib/rltk/cg/
|
197
|
-
- lib/rltk/cg/generated_bindings.rb
|
198
|
-
- lib/rltk/parsers/postfix_calc.rb
|
199
|
-
- lib/rltk/parsers/infix_calc.rb
|
200
|
-
- lib/rltk/parsers/prefix_calc.rb
|
201
|
-
- lib/rltk/version.rb
|
251
|
+
- lib/rltk/cg/builder.rb
|
202
252
|
- lib/rltk.rb
|
203
|
-
- test/tc_ast.rb
|
204
253
|
- test/tc_token.rb
|
205
|
-
- test/
|
254
|
+
- test/ts_rltk.rb
|
206
255
|
- test/tc_parser.rb
|
207
256
|
- test/tc_lexer.rb
|
208
|
-
- test/
|
209
|
-
|
257
|
+
- test/cg/tc_generic_value.rb
|
258
|
+
- test/cg/tc_llvm.rb
|
259
|
+
- test/cg/ts_cg.rb
|
260
|
+
- test/cg/tc_function.rb
|
261
|
+
- test/cg/tc_instruction.rb
|
262
|
+
- test/cg/tc_transforms.rb
|
263
|
+
- test/cg/tc_math.rb
|
264
|
+
- test/cg/tc_control_flow.rb
|
265
|
+
- test/cg/tc_value.rb
|
266
|
+
- test/cg/tc_type.rb
|
267
|
+
- test/cg/tc_module.rb
|
268
|
+
- test/cg/tc_basic_block.rb
|
269
|
+
- test/tc_ast.rb
|
270
|
+
- test/tc_cfg.rb
|
271
|
+
homepage: https://github.com/chriswailes/RLTK
|
210
272
|
licenses:
|
211
273
|
- University of Illinois/NCSA Open Source License
|
274
|
+
metadata: {}
|
212
275
|
post_install_message:
|
213
276
|
rdoc_options: []
|
214
277
|
require_paths:
|
215
278
|
- lib
|
216
279
|
required_ruby_version: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
280
|
requirements:
|
219
|
-
- -
|
281
|
+
- - '>='
|
220
282
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
283
|
+
version: 2.0.0
|
222
284
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
|
-
none: false
|
224
285
|
requirements:
|
225
|
-
- -
|
286
|
+
- - '>='
|
226
287
|
- !ruby/object:Gem::Version
|
227
288
|
version: '0'
|
228
289
|
requirements: []
|
229
290
|
rubyforge_project:
|
230
|
-
rubygems_version: 1.
|
291
|
+
rubygems_version: 2.1.11
|
231
292
|
signing_key:
|
232
|
-
specification_version:
|
293
|
+
specification_version: 4
|
233
294
|
summary: The Ruby Language Toolkit
|
234
295
|
test_files:
|
235
|
-
- test/tc_ast.rb
|
236
296
|
- test/tc_token.rb
|
237
|
-
- test/
|
297
|
+
- test/ts_rltk.rb
|
238
298
|
- test/tc_parser.rb
|
239
299
|
- test/tc_lexer.rb
|
240
|
-
- test/
|
300
|
+
- test/cg/tc_generic_value.rb
|
301
|
+
- test/cg/tc_llvm.rb
|
302
|
+
- test/cg/ts_cg.rb
|
303
|
+
- test/cg/tc_function.rb
|
304
|
+
- test/cg/tc_instruction.rb
|
305
|
+
- test/cg/tc_transforms.rb
|
306
|
+
- test/cg/tc_math.rb
|
307
|
+
- test/cg/tc_control_flow.rb
|
308
|
+
- test/cg/tc_value.rb
|
309
|
+
- test/cg/tc_type.rb
|
310
|
+
- test/cg/tc_module.rb
|
311
|
+
- test/cg/tc_basic_block.rb
|
312
|
+
- test/tc_ast.rb
|
313
|
+
- test/tc_cfg.rb
|
314
|
+
has_rdoc:
|
@@ -1,287 +0,0 @@
|
|
1
|
-
# Generated by ffi_gen. Please do not change this file by hand.
|
2
|
-
|
3
|
-
require 'ffi'
|
4
|
-
|
5
|
-
module RLTK::CG::Bindings
|
6
|
-
extend FFI::Library
|
7
|
-
ffi_lib 'LLVM-ECB-3.0'
|
8
|
-
|
9
|
-
def self.attach_function(name, *_)
|
10
|
-
begin; super; rescue FFI::NotFoundError => e
|
11
|
-
(class << self; self; end).class_eval { define_method(name) { |*_| raise e } }
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
ECB_VERSION = 0
|
16
|
-
|
17
|
-
TARGET_VERSION_MAJOR = 3
|
18
|
-
|
19
|
-
TARGET_VERSION_MINOR = 0
|
20
|
-
|
21
|
-
# (Not documented)
|
22
|
-
#
|
23
|
-
# @method ecb_version()
|
24
|
-
# @return [String]
|
25
|
-
# @scope class
|
26
|
-
attach_function :ecb_version, :LLVMECBVersion, [], :string
|
27
|
-
|
28
|
-
# (Not documented)
|
29
|
-
#
|
30
|
-
# @method target_version()
|
31
|
-
# @return [String]
|
32
|
-
# @scope class
|
33
|
-
attach_function :target_version, :LLVMTargetVersion, [], :string
|
34
|
-
|
35
|
-
# (Not documented)
|
36
|
-
#
|
37
|
-
# @method initialize_all_asm_parsers()
|
38
|
-
# @return [nil]
|
39
|
-
# @scope class
|
40
|
-
attach_function :initialize_all_asm_parsers, :LLVMInitializeAllAsmParsers, [], :void
|
41
|
-
|
42
|
-
# (Not documented)
|
43
|
-
#
|
44
|
-
# @method initialize_all_asm_printers()
|
45
|
-
# @return [nil]
|
46
|
-
# @scope class
|
47
|
-
attach_function :initialize_all_asm_printers, :LLVMInitializeAllAsmPrinters, [], :void
|
48
|
-
|
49
|
-
# (Not documented)
|
50
|
-
#
|
51
|
-
# @method initialize_native_target_asm_parser()
|
52
|
-
# @return [nil]
|
53
|
-
# @scope class
|
54
|
-
attach_function :initialize_native_target_asm_parser, :LLVMInitializeNativeTargetAsmParser, [], :void
|
55
|
-
|
56
|
-
# (Not documented)
|
57
|
-
#
|
58
|
-
# @method initialize_native_target_asm_printer()
|
59
|
-
# @return [nil]
|
60
|
-
# @scope class
|
61
|
-
attach_function :initialize_native_target_asm_printer, :LLVMInitializeNativeTargetAsmPrinter, [], :void
|
62
|
-
|
63
|
-
# (Not documented)
|
64
|
-
#
|
65
|
-
# @method load_module_from_ir_file(file_name, context)
|
66
|
-
# @param [String] file_name
|
67
|
-
# @param [FFI::Pointer(ContextRef)] context
|
68
|
-
# @return [FFI::Pointer(ModuleRef)]
|
69
|
-
# @scope class
|
70
|
-
attach_function :load_module_from_ir_file, :LLVMLoadModuleFromIRFile, [:string, :pointer], :pointer
|
71
|
-
|
72
|
-
# (Not documented)
|
73
|
-
#
|
74
|
-
# @method print_module(mod, fd)
|
75
|
-
# @param [FFI::Pointer(ModuleRef)] mod
|
76
|
-
# @param [Integer] fd
|
77
|
-
# @return [nil]
|
78
|
-
# @scope class
|
79
|
-
attach_function :print_module, :LLVMPrintModule, [:pointer, :int], :void
|
80
|
-
|
81
|
-
# (Not documented)
|
82
|
-
#
|
83
|
-
# @method load_library_permanently(filename)
|
84
|
-
# @param [String] filename
|
85
|
-
# @return [Integer]
|
86
|
-
# @scope class
|
87
|
-
attach_function :load_library_permanently, :LLVMLoadLibraryPermanently, [:string], :int
|
88
|
-
|
89
|
-
# (Not documented)
|
90
|
-
#
|
91
|
-
# @method print_value(val, fd)
|
92
|
-
# @param [FFI::Pointer(ValueRef)] val
|
93
|
-
# @param [Integer] fd
|
94
|
-
# @return [nil]
|
95
|
-
# @scope class
|
96
|
-
attach_function :print_value, :LLVMPrintValue, [:pointer, :int], :void
|
97
|
-
|
98
|
-
# (Not documented)
|
99
|
-
#
|
100
|
-
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:code_model).</em>
|
101
|
-
#
|
102
|
-
# === Options:
|
103
|
-
# :default_cmodel ::
|
104
|
-
#
|
105
|
-
# :kernel ::
|
106
|
-
#
|
107
|
-
# :small ::
|
108
|
-
#
|
109
|
-
# :medium ::
|
110
|
-
#
|
111
|
-
# :large ::
|
112
|
-
#
|
113
|
-
#
|
114
|
-
# @method _enum_code_model_
|
115
|
-
# @return [Symbol]
|
116
|
-
# @scope class
|
117
|
-
enum :code_model, [
|
118
|
-
:default_cmodel, 0,
|
119
|
-
:kernel, 1,
|
120
|
-
:small, 2,
|
121
|
-
:medium, 3,
|
122
|
-
:large, 4
|
123
|
-
]
|
124
|
-
|
125
|
-
# (Not documented)
|
126
|
-
#
|
127
|
-
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:reloc_model).</em>
|
128
|
-
#
|
129
|
-
# === Options:
|
130
|
-
# :default_rmodel ::
|
131
|
-
#
|
132
|
-
# :static ::
|
133
|
-
#
|
134
|
-
# :pic ::
|
135
|
-
#
|
136
|
-
# :dynamic_no_pic ::
|
137
|
-
#
|
138
|
-
#
|
139
|
-
# @method _enum_reloc_model_
|
140
|
-
# @return [Symbol]
|
141
|
-
# @scope class
|
142
|
-
enum :reloc_model, [
|
143
|
-
:default_rmodel, 0,
|
144
|
-
:static, 1,
|
145
|
-
:pic, 2,
|
146
|
-
:dynamic_no_pic, 3
|
147
|
-
]
|
148
|
-
|
149
|
-
# (Not documented)
|
150
|
-
#
|
151
|
-
# <em>This entry is only for documentation and no real method. The FFI::Enum can be accessed via #enum_type(:compile_type).</em>
|
152
|
-
#
|
153
|
-
# === Options:
|
154
|
-
# :asm ::
|
155
|
-
#
|
156
|
-
# :object ::
|
157
|
-
#
|
158
|
-
#
|
159
|
-
# @method _enum_compile_type_
|
160
|
-
# @return [Symbol]
|
161
|
-
# @scope class
|
162
|
-
enum :compile_type, [
|
163
|
-
:asm, 0,
|
164
|
-
:object, 1
|
165
|
-
]
|
166
|
-
|
167
|
-
# (Not documented)
|
168
|
-
class OpaqueTarget < FFI::Struct
|
169
|
-
layout :dummy, :char
|
170
|
-
end
|
171
|
-
|
172
|
-
# (Not documented)
|
173
|
-
class OpaqueTargetMachine < FFI::Struct
|
174
|
-
layout :dummy, :char
|
175
|
-
end
|
176
|
-
|
177
|
-
# (Not documented)
|
178
|
-
class OpaqueTriple < FFI::Struct
|
179
|
-
layout :dummy, :char
|
180
|
-
end
|
181
|
-
|
182
|
-
# // Utility
|
183
|
-
#
|
184
|
-
# @method build_features_string(attrs, num_attrs)
|
185
|
-
# @param [FFI::Pointer(**CharS)] attrs
|
186
|
-
# @param [Integer] num_attrs
|
187
|
-
# @return [String]
|
188
|
-
# @scope class
|
189
|
-
attach_function :build_features_string, :LLVMBuildFeaturesString, [:pointer, :int], :string
|
190
|
-
|
191
|
-
# (Not documented)
|
192
|
-
#
|
193
|
-
# @method compile_module_to_file(mod, machine, pm, file_name, ctype, opt_level, no_verify)
|
194
|
-
# @param [FFI::Pointer(ModuleRef)] mod
|
195
|
-
# @param [OpaqueTargetMachine] machine
|
196
|
-
# @param [FFI::Pointer(PassManagerRef)] pm
|
197
|
-
# @param [String] file_name
|
198
|
-
# @param [Symbol from _enum_compile_type_] ctype
|
199
|
-
# @param [Integer] opt_level
|
200
|
-
# @param [Integer] no_verify
|
201
|
-
# @return [nil]
|
202
|
-
# @scope class
|
203
|
-
attach_function :compile_module_to_file, :LLVMCompileModuleToFile, [:pointer, OpaqueTargetMachine, :pointer, :string, :compile_type, :uint, :uint], :void
|
204
|
-
|
205
|
-
# (Not documented)
|
206
|
-
#
|
207
|
-
# @method ecb_initialize_all_targets()
|
208
|
-
# @return [nil]
|
209
|
-
# @scope class
|
210
|
-
attach_function :ecb_initialize_all_targets, :LLVMECBInitializeAllTargets, [], :void
|
211
|
-
|
212
|
-
# (Not documented)
|
213
|
-
#
|
214
|
-
# @method ecb_initialize_native_target()
|
215
|
-
# @return [nil]
|
216
|
-
# @scope class
|
217
|
-
attach_function :ecb_initialize_native_target, :LLVMECBInitializeNativeTarget, [], :void
|
218
|
-
|
219
|
-
# // Target
|
220
|
-
#
|
221
|
-
# @method get_target_from_name(name)
|
222
|
-
# @param [String] name
|
223
|
-
# @return [OpaqueTarget]
|
224
|
-
# @scope class
|
225
|
-
attach_function :get_target_from_name, :LLVMGetTargetFromName, [:string], OpaqueTarget
|
226
|
-
|
227
|
-
# (Not documented)
|
228
|
-
#
|
229
|
-
# @method get_target_from_triple(triple)
|
230
|
-
# @param [OpaqueTriple] triple
|
231
|
-
# @return [OpaqueTarget]
|
232
|
-
# @scope class
|
233
|
-
attach_function :get_target_from_triple, :LLVMGetTargetFromTriple, [OpaqueTriple], OpaqueTarget
|
234
|
-
|
235
|
-
# // Target Machine
|
236
|
-
#
|
237
|
-
# @method create_target_machine(target, triple, mcpu, features, rmodel, cmodel)
|
238
|
-
# @param [OpaqueTarget] target
|
239
|
-
# @param [String] triple
|
240
|
-
# @param [String] mcpu
|
241
|
-
# @param [String] features
|
242
|
-
# @param [Symbol from _enum_reloc_model_] rmodel
|
243
|
-
# @param [Symbol from _enum_code_model_] cmodel
|
244
|
-
# @return [OpaqueTargetMachine]
|
245
|
-
# @scope class
|
246
|
-
attach_function :create_target_machine, :LLVMCreateTargetMachine, [OpaqueTarget, :string, :string, :string, :reloc_model, :code_model], OpaqueTargetMachine
|
247
|
-
|
248
|
-
# (Not documented)
|
249
|
-
#
|
250
|
-
# @method set_target_machine_asm_verbosity(machine, boolean)
|
251
|
-
# @param [OpaqueTargetMachine] machine
|
252
|
-
# @param [Integer] boolean
|
253
|
-
# @return [nil]
|
254
|
-
# @scope class
|
255
|
-
attach_function :set_target_machine_asm_verbosity, :LLVMSetTargetMachineASMVerbosity, [OpaqueTargetMachine, :int], :void
|
256
|
-
|
257
|
-
# // Triple
|
258
|
-
#
|
259
|
-
# @method get_host_triple()
|
260
|
-
# @return [OpaqueTriple]
|
261
|
-
# @scope class
|
262
|
-
attach_function :get_host_triple, :LLVMGetHostTriple, [], OpaqueTriple
|
263
|
-
|
264
|
-
# (Not documented)
|
265
|
-
#
|
266
|
-
# @method get_host_triple_string()
|
267
|
-
# @return [String]
|
268
|
-
# @scope class
|
269
|
-
attach_function :get_host_triple_string, :LLVMGetHostTripleString, [], :string
|
270
|
-
|
271
|
-
# (Not documented)
|
272
|
-
#
|
273
|
-
# @method get_triple_string(triple)
|
274
|
-
# @param [OpaqueTriple] triple
|
275
|
-
# @return [String]
|
276
|
-
# @scope class
|
277
|
-
attach_function :get_triple_string, :LLVMGetTripleString, [OpaqueTriple], :string
|
278
|
-
|
279
|
-
# (Not documented)
|
280
|
-
#
|
281
|
-
# @method triple_create(string)
|
282
|
-
# @param [String] string
|
283
|
-
# @return [OpaqueTriple]
|
284
|
-
# @scope class
|
285
|
-
attach_function :triple_create, :LLVMTripleCreate, [:string], OpaqueTriple
|
286
|
-
|
287
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# Author: Chris Wailes <chris.wailes@gmail.com>
|
2
|
-
# Project: Ruby Language Toolkit
|
3
|
-
# Date: 2012/04/20
|
4
|
-
# Description: This file holds an implementation of an AbstractClass module.
|
5
|
-
|
6
|
-
# A module used for making abstract classes. Any class that includes this
|
7
|
-
# module will not be able to be instantiated directly.
|
8
|
-
module AbstractClass
|
9
|
-
# Callback method for when this module is included.
|
10
|
-
#
|
11
|
-
# @param [Class] klass The Class object for the including class.
|
12
|
-
def self.included(klass)
|
13
|
-
klass.instance_exec do
|
14
|
-
@abstract_class = klass
|
15
|
-
|
16
|
-
def self.new(*args)
|
17
|
-
if self == @abstract_class
|
18
|
-
raise "Instantiating abstract class #{self} is not allowed."
|
19
|
-
else
|
20
|
-
super
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|