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.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +12 -12
  3. data/README.md +458 -285
  4. data/Rakefile +99 -92
  5. data/lib/rltk/ast.rb +221 -126
  6. data/lib/rltk/cfg.rb +218 -239
  7. data/lib/rltk/cg/basic_block.rb +1 -1
  8. data/lib/rltk/cg/bindings.rb +9 -26
  9. data/lib/rltk/cg/builder.rb +40 -8
  10. data/lib/rltk/cg/context.rb +1 -1
  11. data/lib/rltk/cg/contractor.rb +51 -0
  12. data/lib/rltk/cg/execution_engine.rb +45 -8
  13. data/lib/rltk/cg/function.rb +12 -2
  14. data/lib/rltk/cg/generated_bindings.rb +2541 -575
  15. data/lib/rltk/cg/generic_value.rb +2 -2
  16. data/lib/rltk/cg/instruction.rb +104 -83
  17. data/lib/rltk/cg/llvm.rb +44 -3
  18. data/lib/rltk/cg/memory_buffer.rb +22 -5
  19. data/lib/rltk/cg/module.rb +85 -36
  20. data/lib/rltk/cg/old_generated_bindings.rb +6152 -0
  21. data/lib/rltk/cg/pass_manager.rb +87 -43
  22. data/lib/rltk/cg/support.rb +2 -4
  23. data/lib/rltk/cg/target.rb +158 -28
  24. data/lib/rltk/cg/triple.rb +8 -8
  25. data/lib/rltk/cg/type.rb +69 -25
  26. data/lib/rltk/cg/value.rb +107 -66
  27. data/lib/rltk/cg.rb +16 -17
  28. data/lib/rltk/lexer.rb +21 -11
  29. data/lib/rltk/lexers/calculator.rb +1 -1
  30. data/lib/rltk/lexers/ebnf.rb +8 -7
  31. data/lib/rltk/parser.rb +300 -247
  32. data/lib/rltk/parsers/infix_calc.rb +1 -1
  33. data/lib/rltk/parsers/postfix_calc.rb +2 -2
  34. data/lib/rltk/parsers/prefix_calc.rb +2 -2
  35. data/lib/rltk/token.rb +1 -2
  36. data/lib/rltk/version.rb +3 -3
  37. data/lib/rltk.rb +6 -6
  38. data/test/cg/tc_basic_block.rb +83 -0
  39. data/test/cg/tc_control_flow.rb +191 -0
  40. data/test/cg/tc_function.rb +54 -0
  41. data/test/cg/tc_generic_value.rb +33 -0
  42. data/test/cg/tc_instruction.rb +256 -0
  43. data/test/cg/tc_llvm.rb +25 -0
  44. data/test/cg/tc_math.rb +88 -0
  45. data/test/cg/tc_module.rb +89 -0
  46. data/test/cg/tc_transforms.rb +68 -0
  47. data/test/cg/tc_type.rb +69 -0
  48. data/test/cg/tc_value.rb +151 -0
  49. data/test/cg/ts_cg.rb +23 -0
  50. data/test/tc_ast.rb +105 -8
  51. data/test/tc_cfg.rb +63 -48
  52. data/test/tc_lexer.rb +84 -96
  53. data/test/tc_parser.rb +224 -52
  54. data/test/tc_token.rb +6 -6
  55. data/test/ts_rltk.rb +12 -15
  56. metadata +149 -75
  57. data/lib/rltk/cg/generated_extended_bindings.rb +0 -287
  58. data/lib/rltk/util/abstract_class.rb +0 -25
  59. 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: 2.2.1
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: 2012-09-01 00:00:00.000000000 Z
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/cg.rb
172
- - lib/rltk/lexers/ebnf.rb
227
+ - lib/rltk/token.rb
173
228
  - lib/rltk/lexers/calculator.rb
174
- - lib/rltk/util/monkeys.rb
175
- - lib/rltk/util/abstract_class.rb
229
+ - lib/rltk/lexers/ebnf.rb
230
+ - lib/rltk/version.rb
176
231
  - lib/rltk/ast.rb
177
- - lib/rltk/parser.rb
178
- - lib/rltk/token.rb
179
- - lib/rltk/cg/generated_extended_bindings.rb
180
- - lib/rltk/cg/execution_engine.rb
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/memory_buffer.rb
189
- - lib/rltk/cg/function.rb
190
- - lib/rltk/cg/pass_manager.rb
191
- - lib/rltk/cg/generic_value.rb
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/triple.rb
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/tc_cfg.rb
254
+ - test/ts_rltk.rb
206
255
  - test/tc_parser.rb
207
256
  - test/tc_lexer.rb
208
- - test/ts_rltk.rb
209
- homepage: http://github.com/chriswailes/RLTK
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: '0'
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.8.24
291
+ rubygems_version: 2.1.11
231
292
  signing_key:
232
- specification_version: 3
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/tc_cfg.rb
297
+ - test/ts_rltk.rb
238
298
  - test/tc_parser.rb
239
299
  - test/tc_lexer.rb
240
- - test/ts_rltk.rb
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