tsumanne 0.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 (56) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +32 -0
  4. data/.ruby-version +1 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +31 -0
  7. data/Rakefile +45 -0
  8. data/lib/tsumanne/version.rb +7 -0
  9. data/lib/tsumanne.rb +128 -0
  10. data/sorbet/config +4 -0
  11. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  12. data/sorbet/rbi/gems/ast@2.4.2.rbi +584 -0
  13. data/sorbet/rbi/gems/base64@0.1.1.rbi +172 -0
  14. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +1083 -0
  15. data/sorbet/rbi/gems/erubi@1.12.0.rbi +145 -0
  16. data/sorbet/rbi/gems/ffi-compiler@1.0.1.rbi +206 -0
  17. data/sorbet/rbi/gems/ffi@1.15.5.rbi +1994 -0
  18. data/sorbet/rbi/gems/http-parser@1.2.3.rbi +422 -0
  19. data/sorbet/rbi/gems/json@2.6.3.rbi +1533 -0
  20. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14237 -0
  21. data/sorbet/rbi/gems/mhtml@0.1.6.rbi +353 -0
  22. data/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
  23. data/sorbet/rbi/gems/parallel@1.23.0.rbi +273 -0
  24. data/sorbet/rbi/gems/parser@3.2.2.3.rbi +7253 -0
  25. data/sorbet/rbi/gems/prettier_print@1.2.1.rbi +951 -0
  26. data/sorbet/rbi/gems/racc@1.7.1.rbi +161 -0
  27. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +402 -0
  28. data/sorbet/rbi/gems/rake@13.0.6.rbi +3024 -0
  29. data/sorbet/rbi/gems/rbi@0.0.17.rbi +2967 -0
  30. data/sorbet/rbi/gems/regexp_parser@2.8.1.rbi +3749 -0
  31. data/sorbet/rbi/gems/rexml@3.2.6.rbi +4781 -0
  32. data/sorbet/rbi/gems/rspec-core@3.12.2.rbi +10805 -0
  33. data/sorbet/rbi/gems/rspec-expectations@3.12.3.rbi +8100 -0
  34. data/sorbet/rbi/gems/rspec-mocks@3.12.6.rbi +5310 -0
  35. data/sorbet/rbi/gems/rspec-support@3.12.1.rbi +1609 -0
  36. data/sorbet/rbi/gems/rspec@3.12.0.rbi +82 -0
  37. data/sorbet/rbi/gems/rubocop-ast@1.29.0.rbi +7144 -0
  38. data/sorbet/rbi/gems/rubocop-capybara@2.18.0.rbi +827 -0
  39. data/sorbet/rbi/gems/rubocop-factory_bot@2.23.1.rbi +812 -0
  40. data/sorbet/rbi/gems/rubocop-performance@1.19.0.rbi +3157 -0
  41. data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +328 -0
  42. data/sorbet/rbi/gems/rubocop-rspec@2.23.2.rbi +7691 -0
  43. data/sorbet/rbi/gems/rubocop-sorbet@0.7.3.rbi +1226 -0
  44. data/sorbet/rbi/gems/rubocop@1.56.2.rbi +56541 -0
  45. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1317 -0
  46. data/sorbet/rbi/gems/spoom@1.2.3.rbi +3199 -0
  47. data/sorbet/rbi/gems/syntax_tree@6.1.1.rbi +22855 -0
  48. data/sorbet/rbi/gems/tapioca@0.11.8.rbi +3329 -0
  49. data/sorbet/rbi/gems/thor@1.2.2.rbi +3965 -0
  50. data/sorbet/rbi/gems/unicode-display_width@2.4.2.rbi +65 -0
  51. data/sorbet/rbi/gems/unparser@0.6.8.rbi +4525 -0
  52. data/sorbet/rbi/gems/yard-sorbet@0.8.1.rbi +425 -0
  53. data/sorbet/rbi/gems/yard@0.9.34.rbi +18219 -0
  54. data/sorbet/tapioca/config.yml +13 -0
  55. data/sorbet/tapioca/require.rb +4 -0
  56. metadata +254 -0
@@ -0,0 +1,1994 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `ffi` gem.
5
+ # Please instead update this file by running `bin/tapioca gem ffi`.
6
+
7
+ # source://ffi//lib/ffi/platform.rb#32
8
+ module FFI
9
+ class << self
10
+ # Add a definition type to type definitions.
11
+ #
12
+ # @param old [Type, DataConverter, Symbol] type definition used by {FFI.find_type}
13
+ # @param add [Symbol] new type definition's name to add
14
+ # @return [Type]
15
+ #
16
+ # source://ffi//lib/ffi/types.rb#45
17
+ def add_typedef(old, add); end
18
+
19
+ # @see FFI::LastError.error
20
+ #
21
+ # source://ffi//lib/ffi/errno.rb#34
22
+ def errno; end
23
+
24
+ # @see FFI::LastError.error=
25
+ #
26
+ # source://ffi//lib/ffi/errno.rb#40
27
+ def errno=(error); end
28
+
29
+ # Find a type in +type_map+ ({FFI::TypeDefs}, by default) from
30
+ # a type objet, a type name (symbol). If +name+ is a {DataConverter},
31
+ # a new {Type::Mapped} is created.
32
+ #
33
+ # @param name [Type, DataConverter, Symbol]
34
+ # @param type_map [Hash] if nil, {FFI::TypeDefs} is used
35
+ # @return [Type]
36
+ #
37
+ # source://ffi//lib/ffi/types.rb#56
38
+ def find_type(name, type_map = T.unsafe(nil)); end
39
+
40
+ # Transform a generic library name to a platform library name
41
+ #
42
+ # @example
43
+ # # Linux
44
+ # FFI.map_library_name 'c' # -> "libc.so.6"
45
+ # FFI.map_library_name 'jpeg' # -> "libjpeg.so"
46
+ # # Windows
47
+ # FFI.map_library_name 'c' # -> "msvcrt.dll"
48
+ # FFI.map_library_name 'jpeg' # -> "jpeg.dll"
49
+ # @param lib [#to_s] library name
50
+ # @return [String] library name formatted for current platform
51
+ #
52
+ # source://ffi//lib/ffi/library.rb#44
53
+ def map_library_name(lib); end
54
+
55
+ # Get +type+ size, in bytes.
56
+ #
57
+ # @param type +type+ is an instance of class accepted by {FFI.find_type}
58
+ # @return [Numeric]
59
+ #
60
+ # source://ffi//lib/ffi/types.rb#176
61
+ def type_size(type); end
62
+
63
+ # Add a definition type to type definitions.
64
+ #
65
+ # @param old [Type, DataConverter, Symbol] type definition used by {FFI.find_type}
66
+ # @param add [Symbol] new type definition's name to add
67
+ # @return [Type]
68
+ #
69
+ # source://ffi//lib/ffi/types.rb#40
70
+ def typedef(old, add); end
71
+ end
72
+ end
73
+
74
+ # source://ffi//lib/ffi/abstract_memory.rb#33
75
+ class FFI::AbstractMemory
76
+ def [](_arg0); end
77
+ def __copy_from__(_arg0, _arg1); end
78
+ def clear; end
79
+ def get(_arg0, _arg1); end
80
+ def get_array_of_char(_arg0, _arg1); end
81
+ def get_array_of_double(_arg0, _arg1); end
82
+ def get_array_of_float(_arg0, _arg1); end
83
+ def get_array_of_float32(_arg0, _arg1); end
84
+ def get_array_of_float64(_arg0, _arg1); end
85
+ def get_array_of_int(_arg0, _arg1); end
86
+ def get_array_of_int16(_arg0, _arg1); end
87
+ def get_array_of_int32(_arg0, _arg1); end
88
+ def get_array_of_int64(_arg0, _arg1); end
89
+ def get_array_of_int8(_arg0, _arg1); end
90
+ def get_array_of_long(_arg0, _arg1); end
91
+ def get_array_of_long_long(_arg0, _arg1); end
92
+ def get_array_of_pointer(_arg0, _arg1); end
93
+ def get_array_of_short(_arg0, _arg1); end
94
+ def get_array_of_string(*_arg0); end
95
+ def get_array_of_uchar(_arg0, _arg1); end
96
+ def get_array_of_uint(_arg0, _arg1); end
97
+ def get_array_of_uint16(_arg0, _arg1); end
98
+ def get_array_of_uint32(_arg0, _arg1); end
99
+ def get_array_of_uint64(_arg0, _arg1); end
100
+ def get_array_of_uint8(_arg0, _arg1); end
101
+ def get_array_of_ulong(_arg0, _arg1); end
102
+ def get_array_of_ulong_long(_arg0, _arg1); end
103
+ def get_array_of_ushort(_arg0, _arg1); end
104
+ def get_bytes(_arg0, _arg1); end
105
+ def get_char(_arg0); end
106
+ def get_double(_arg0); end
107
+ def get_float(_arg0); end
108
+ def get_float32(_arg0); end
109
+ def get_float64(_arg0); end
110
+ def get_int(_arg0); end
111
+ def get_int16(_arg0); end
112
+ def get_int32(_arg0); end
113
+ def get_int64(_arg0); end
114
+ def get_int8(_arg0); end
115
+ def get_long(_arg0); end
116
+ def get_long_long(_arg0); end
117
+ def get_pointer(_arg0); end
118
+ def get_short(_arg0); end
119
+ def get_string(*_arg0); end
120
+ def get_uchar(_arg0); end
121
+ def get_uint(_arg0); end
122
+ def get_uint16(_arg0); end
123
+ def get_uint32(_arg0); end
124
+ def get_uint64(_arg0); end
125
+ def get_uint8(_arg0); end
126
+ def get_ulong(_arg0); end
127
+ def get_ulong_long(_arg0); end
128
+ def get_ushort(_arg0); end
129
+ def put(_arg0, _arg1, _arg2); end
130
+ def put_array_of_char(_arg0, _arg1); end
131
+ def put_array_of_double(_arg0, _arg1); end
132
+ def put_array_of_float(_arg0, _arg1); end
133
+ def put_array_of_float32(_arg0, _arg1); end
134
+ def put_array_of_float64(_arg0, _arg1); end
135
+ def put_array_of_int(_arg0, _arg1); end
136
+ def put_array_of_int16(_arg0, _arg1); end
137
+ def put_array_of_int32(_arg0, _arg1); end
138
+ def put_array_of_int64(_arg0, _arg1); end
139
+ def put_array_of_int8(_arg0, _arg1); end
140
+ def put_array_of_long(_arg0, _arg1); end
141
+ def put_array_of_long_long(_arg0, _arg1); end
142
+ def put_array_of_pointer(_arg0, _arg1); end
143
+ def put_array_of_short(_arg0, _arg1); end
144
+ def put_array_of_uchar(_arg0, _arg1); end
145
+ def put_array_of_uint(_arg0, _arg1); end
146
+ def put_array_of_uint16(_arg0, _arg1); end
147
+ def put_array_of_uint32(_arg0, _arg1); end
148
+ def put_array_of_uint64(_arg0, _arg1); end
149
+ def put_array_of_uint8(_arg0, _arg1); end
150
+ def put_array_of_ulong(_arg0, _arg1); end
151
+ def put_array_of_ulong_long(_arg0, _arg1); end
152
+ def put_array_of_ushort(_arg0, _arg1); end
153
+ def put_bytes(*_arg0); end
154
+ def put_char(_arg0, _arg1); end
155
+ def put_double(_arg0, _arg1); end
156
+ def put_float(_arg0, _arg1); end
157
+ def put_float32(_arg0, _arg1); end
158
+ def put_float64(_arg0, _arg1); end
159
+ def put_int(_arg0, _arg1); end
160
+ def put_int16(_arg0, _arg1); end
161
+ def put_int32(_arg0, _arg1); end
162
+ def put_int64(_arg0, _arg1); end
163
+ def put_int8(_arg0, _arg1); end
164
+ def put_long(_arg0, _arg1); end
165
+ def put_long_long(_arg0, _arg1); end
166
+ def put_pointer(_arg0, _arg1); end
167
+ def put_short(_arg0, _arg1); end
168
+ def put_string(_arg0, _arg1); end
169
+ def put_uchar(_arg0, _arg1); end
170
+ def put_uint(_arg0, _arg1); end
171
+ def put_uint16(_arg0, _arg1); end
172
+ def put_uint32(_arg0, _arg1); end
173
+ def put_uint64(_arg0, _arg1); end
174
+ def put_uint8(_arg0, _arg1); end
175
+ def put_ulong(_arg0, _arg1); end
176
+ def put_ulong_long(_arg0, _arg1); end
177
+ def put_ushort(_arg0, _arg1); end
178
+ def read_array_of_char(_arg0); end
179
+ def read_array_of_double(_arg0); end
180
+ def read_array_of_float(_arg0); end
181
+ def read_array_of_int(_arg0); end
182
+ def read_array_of_int16(_arg0); end
183
+ def read_array_of_int32(_arg0); end
184
+ def read_array_of_int64(_arg0); end
185
+ def read_array_of_int8(_arg0); end
186
+ def read_array_of_long(_arg0); end
187
+ def read_array_of_long_long(_arg0); end
188
+ def read_array_of_pointer(_arg0); end
189
+ def read_array_of_short(_arg0); end
190
+ def read_array_of_uchar(_arg0); end
191
+ def read_array_of_uint(_arg0); end
192
+ def read_array_of_uint16(_arg0); end
193
+ def read_array_of_uint32(_arg0); end
194
+ def read_array_of_uint64(_arg0); end
195
+ def read_array_of_uint8(_arg0); end
196
+ def read_array_of_ulong(_arg0); end
197
+ def read_array_of_ulong_long(_arg0); end
198
+ def read_array_of_ushort(_arg0); end
199
+ def read_bytes(_arg0); end
200
+ def read_char; end
201
+ def read_double; end
202
+ def read_float; end
203
+ def read_int; end
204
+ def read_int16; end
205
+ def read_int32; end
206
+ def read_int64; end
207
+ def read_int8; end
208
+ def read_long; end
209
+ def read_long_long; end
210
+ def read_pointer; end
211
+ def read_short; end
212
+ def read_uchar; end
213
+ def read_uint; end
214
+ def read_uint16; end
215
+ def read_uint32; end
216
+ def read_uint64; end
217
+ def read_uint8; end
218
+ def read_ulong; end
219
+ def read_ulong_long; end
220
+ def read_ushort; end
221
+ def size; end
222
+
223
+ # Return +true+ if +self+ has a size limit.
224
+ #
225
+ # @return [Boolean]
226
+ #
227
+ # source://ffi//lib/ffi/abstract_memory.rb#40
228
+ def size_limit?; end
229
+
230
+ def total; end
231
+ def type_size; end
232
+ def write_array_of_char(_arg0); end
233
+ def write_array_of_double(_arg0); end
234
+ def write_array_of_float(_arg0); end
235
+ def write_array_of_int(_arg0); end
236
+ def write_array_of_int16(_arg0); end
237
+ def write_array_of_int32(_arg0); end
238
+ def write_array_of_int64(_arg0); end
239
+ def write_array_of_int8(_arg0); end
240
+ def write_array_of_long(_arg0); end
241
+ def write_array_of_long_long(_arg0); end
242
+ def write_array_of_pointer(_arg0); end
243
+ def write_array_of_short(_arg0); end
244
+ def write_array_of_uchar(_arg0); end
245
+ def write_array_of_uint(_arg0); end
246
+ def write_array_of_uint16(_arg0); end
247
+ def write_array_of_uint32(_arg0); end
248
+ def write_array_of_uint64(_arg0); end
249
+ def write_array_of_uint8(_arg0); end
250
+ def write_array_of_ulong(_arg0); end
251
+ def write_array_of_ulong_long(_arg0); end
252
+ def write_array_of_ushort(_arg0); end
253
+ def write_bytes(*_arg0); end
254
+ def write_char(_arg0); end
255
+ def write_double(_arg0); end
256
+ def write_float(_arg0); end
257
+ def write_int(_arg0); end
258
+ def write_int16(_arg0); end
259
+ def write_int32(_arg0); end
260
+ def write_int64(_arg0); end
261
+ def write_int8(_arg0); end
262
+ def write_long(_arg0); end
263
+ def write_long_long(_arg0); end
264
+ def write_pointer(_arg0); end
265
+ def write_short(_arg0); end
266
+ def write_uchar(_arg0); end
267
+ def write_uint(_arg0); end
268
+ def write_uint16(_arg0); end
269
+ def write_uint32(_arg0); end
270
+ def write_uint64(_arg0); end
271
+ def write_uint8(_arg0); end
272
+ def write_ulong(_arg0); end
273
+ def write_ulong_long(_arg0); end
274
+ def write_ushort(_arg0); end
275
+ end
276
+
277
+ # source://ffi//lib/ffi/abstract_memory.rb#34
278
+ FFI::AbstractMemory::LONG_MAX = T.let(T.unsafe(nil), Integer)
279
+
280
+ class FFI::ArrayType < ::FFI::Type
281
+ def initialize(_arg0, _arg1); end
282
+
283
+ def elem_type; end
284
+ def length; end
285
+ end
286
+
287
+ # source://ffi//lib/ffi/autopointer.rb#33
288
+ class FFI::AutoPointer < ::FFI::Pointer
289
+ extend ::FFI::DataConverter
290
+
291
+ # @note The safest, and therefore preferred, calling
292
+ # idiom is to pass a Method as the second parameter. Example usage:
293
+ #
294
+ # class PointerHelper
295
+ # def self.release(pointer)
296
+ # ...
297
+ # end
298
+ # end
299
+ #
300
+ # p = AutoPointer.new(other_pointer, PointerHelper.method(:release))
301
+ #
302
+ # The above code will cause PointerHelper#release to be invoked at GC time.
303
+ # @note The last calling idiom (only one parameter) is generally only
304
+ # going to be useful if you subclass {AutoPointer}, and override
305
+ # #release, which by default does nothing.
306
+ # @overload initialize
307
+ # @overload initialize
308
+ # @overload initialize
309
+ # @overload initialize
310
+ # @raise [TypeError]
311
+ # @return [AutoPointer] a new instance of AutoPointer
312
+ #
313
+ # source://ffi//lib/ffi/autopointer.rb#78
314
+ def initialize(ptr, proc = T.unsafe(nil), &block); end
315
+
316
+ # Set +autorelease+ property. See {Pointer Autorelease section at Pointer}.
317
+ #
318
+ # @param autorelease [Boolean]
319
+ # @return [Boolean] +autorelease+
320
+ #
321
+ # source://ffi//lib/ffi/autopointer.rb#109
322
+ def autorelease=(autorelease); end
323
+
324
+ # Get +autorelease+ property. See {Pointer Autorelease section at Pointer}.
325
+ #
326
+ # @return [Boolean] +autorelease+
327
+ #
328
+ # source://ffi//lib/ffi/autopointer.rb#115
329
+ def autorelease?; end
330
+
331
+ # Free the pointer.
332
+ #
333
+ # @return [nil]
334
+ #
335
+ # source://ffi//lib/ffi/autopointer.rb#102
336
+ def free; end
337
+
338
+ class << self
339
+ # Create a new AutoPointer.
340
+ #
341
+ # Override {DataConverter#from_native}.
342
+ #
343
+ # @overload self.from_native
344
+ # @return [AutoPointer]
345
+ #
346
+ # source://ffi//lib/ffi/autopointer.rb#198
347
+ def from_native(val, ctx); end
348
+
349
+ # Return native type of AutoPointer.
350
+ #
351
+ # Override {DataConverter#native_type}.
352
+ #
353
+ # @raise [RuntimeError] if class does not implement a +#release+ method
354
+ # @return [Type::POINTER]
355
+ #
356
+ # source://ffi//lib/ffi/autopointer.rb#184
357
+ def native_type; end
358
+ end
359
+ end
360
+
361
+ # CallableReleaser is a {Releaser} used when an {AutoPointer} is defined with a
362
+ # Proc or a Method.
363
+ #
364
+ # source://ffi//lib/ffi/autopointer.rb#168
365
+ class FFI::AutoPointer::CallableReleaser < ::FFI::AutoPointer::Releaser
366
+ # Release +ptr+ by using Proc or Method defined at +ptr+
367
+ # {AutoPointer#initialize initialization}.
368
+ #
369
+ # @param ptr [Pointer]
370
+ # @return [nil]
371
+ #
372
+ # source://ffi//lib/ffi/autopointer.rb#174
373
+ def release(ptr); end
374
+ end
375
+
376
+ # DefaultReleaser is a {Releaser} used when an {AutoPointer} is defined
377
+ # without Proc or Method. In this case, the pointer to release must be of
378
+ # a class derived from AutoPointer with a {release} class method.
379
+ #
380
+ # source://ffi//lib/ffi/autopointer.rb#157
381
+ class FFI::AutoPointer::DefaultReleaser < ::FFI::AutoPointer::Releaser
382
+ # Release +ptr+ using the {release} class method of its class.
383
+ #
384
+ # @param ptr [Pointer]
385
+ # @return [nil]
386
+ #
387
+ # source://ffi//lib/ffi/autopointer.rb#161
388
+ def release(ptr); end
389
+ end
390
+
391
+ # A releaser is an object in charge of release an {AutoPointer}.
392
+ #
393
+ # @abstract Base class for {AutoPointer}'s releasers.
394
+ #
395
+ # All subclasses of Releaser should define a +#release(ptr)+ method.
396
+ #
397
+ # source://ffi//lib/ffi/autopointer.rb#123
398
+ class FFI::AutoPointer::Releaser
399
+ # A new instance of Releaser.
400
+ #
401
+ # @param ptr [Pointer]
402
+ # @param proc [#call]
403
+ # @return [nil]
404
+ #
405
+ # source://ffi//lib/ffi/autopointer.rb#130
406
+ def initialize(ptr, proc); end
407
+
408
+ # Returns the value of attribute autorelease.
409
+ #
410
+ # source://ffi//lib/ffi/autopointer.rb#124
411
+ def autorelease; end
412
+
413
+ # Sets the attribute autorelease
414
+ #
415
+ # @param value the value to set the attribute autorelease to.
416
+ #
417
+ # source://ffi//lib/ffi/autopointer.rb#124
418
+ def autorelease=(_arg0); end
419
+
420
+ # Release pointer if +autorelease+ is set.
421
+ #
422
+ # @param args
423
+ #
424
+ # source://ffi//lib/ffi/autopointer.rb#149
425
+ def call(*args); end
426
+
427
+ # Free pointer.
428
+ #
429
+ # @return [nil]
430
+ #
431
+ # source://ffi//lib/ffi/autopointer.rb#138
432
+ def free; end
433
+ end
434
+
435
+ # Represents a C enum whose values are power of 2
436
+ #
437
+ # Contrary to classical enums, bitmask values are usually combined
438
+ # when used.
439
+ #
440
+ # @example
441
+ # enum {
442
+ # red = (1<<0),
443
+ # green = (1<<1),
444
+ # blue = (1<<2)
445
+ # }
446
+ #
447
+ # source://ffi//lib/ffi/enum.rb#184
448
+ class FFI::Bitmask < ::FFI::Enum
449
+ # @overload initialize
450
+ # @overload initialize
451
+ # @return [Bitmask] a new instance of Bitmask
452
+ #
453
+ # source://ffi//lib/ffi/enum.rb#193
454
+ def initialize(*args); end
455
+
456
+ # Get a symbol list or a value from the bitmask
457
+ #
458
+ # @overload []
459
+ # @overload []
460
+ # @overload []
461
+ # @overload []
462
+ # @raise [ArgumentError]
463
+ #
464
+ # source://ffi//lib/ffi/enum.rb#236
465
+ def [](*query); end
466
+
467
+ # @param val [Integer]
468
+ # @param ctx unused
469
+ # @return [Array<Symbol, Integer>] list of symbol names corresponding to val, plus an optional remainder if some bits don't match any constant
470
+ #
471
+ # source://ffi//lib/ffi/enum.rb#282
472
+ def from_native(val, ctx); end
473
+
474
+ # Get the native value of a bitmask
475
+ #
476
+ # @overload to_native
477
+ # @overload to_native
478
+ #
479
+ # source://ffi//lib/ffi/enum.rb#260
480
+ def to_native(query, ctx); end
481
+ end
482
+
483
+ class FFI::Buffer < ::FFI::AbstractMemory
484
+ def initialize(*_arg0); end
485
+
486
+ def +(_arg0); end
487
+ def inspect; end
488
+ def length; end
489
+ def order(*_arg0); end
490
+ def slice(_arg0, _arg1); end
491
+
492
+ private
493
+
494
+ def initialize_copy(_arg0); end
495
+
496
+ class << self
497
+ def alloc_in(*_arg0); end
498
+ def alloc_inout(*_arg0); end
499
+ def alloc_out(*_arg0); end
500
+ def new_in(*_arg0); end
501
+ def new_inout(*_arg0); end
502
+ def new_out(*_arg0); end
503
+ end
504
+ end
505
+
506
+ # source://ffi//lib/ffi/library.rb#32
507
+ FFI::CURRENT_PROCESS = T.let(T.unsafe(nil), Object)
508
+
509
+ FFI::CallbackInfo = FFI::FunctionType
510
+
511
+ # This module is used to extend somes classes and give then a common API.
512
+ #
513
+ # Most of methods defined here must be overriden.
514
+ #
515
+ # source://ffi//lib/ffi/data_converter.rb#35
516
+ module FFI::DataConverter
517
+ # Convert from a native type.
518
+ #
519
+ # source://ffi//lib/ffi/data_converter.rb#63
520
+ def from_native(value, ctx); end
521
+
522
+ # Get native type.
523
+ #
524
+ # @overload native_type
525
+ # @overload native_type
526
+ #
527
+ # source://ffi//lib/ffi/data_converter.rb#45
528
+ def native_type(type = T.unsafe(nil)); end
529
+
530
+ # Convert to a native type.
531
+ #
532
+ # source://ffi//lib/ffi/data_converter.rb#58
533
+ def to_native(value, ctx); end
534
+ end
535
+
536
+ class FFI::DynamicLibrary
537
+ def initialize(_arg0, _arg1); end
538
+
539
+ def find_function(_arg0); end
540
+ def find_symbol(_arg0); end
541
+ def find_variable(_arg0); end
542
+ def last_error; end
543
+ def name; end
544
+
545
+ class << self
546
+ def last_error; end
547
+ def open(_arg0, _arg1); end
548
+ end
549
+ end
550
+
551
+ FFI::DynamicLibrary::RTLD_ALL_MASK = T.let(T.unsafe(nil), Integer)
552
+ FFI::DynamicLibrary::RTLD_BINDING_MASK = T.let(T.unsafe(nil), Integer)
553
+ FFI::DynamicLibrary::RTLD_DEEPBIND = T.let(T.unsafe(nil), Integer)
554
+ FFI::DynamicLibrary::RTLD_FIRST = T.let(T.unsafe(nil), Integer)
555
+ FFI::DynamicLibrary::RTLD_GLOBAL = T.let(T.unsafe(nil), Integer)
556
+ FFI::DynamicLibrary::RTLD_LAZY = T.let(T.unsafe(nil), Integer)
557
+ FFI::DynamicLibrary::RTLD_LOCAL = T.let(T.unsafe(nil), Integer)
558
+ FFI::DynamicLibrary::RTLD_LOCATION_MASK = T.let(T.unsafe(nil), Integer)
559
+ FFI::DynamicLibrary::RTLD_MEMBER = T.let(T.unsafe(nil), Integer)
560
+ FFI::DynamicLibrary::RTLD_NODELETE = T.let(T.unsafe(nil), Integer)
561
+ FFI::DynamicLibrary::RTLD_NOLOAD = T.let(T.unsafe(nil), Integer)
562
+ FFI::DynamicLibrary::RTLD_NOW = T.let(T.unsafe(nil), Integer)
563
+
564
+ class FFI::DynamicLibrary::Symbol < ::FFI::Pointer
565
+ def inspect; end
566
+
567
+ private
568
+
569
+ def initialize_copy(_arg0); end
570
+ end
571
+
572
+ # Represents a C enum.
573
+ #
574
+ # For a C enum:
575
+ # enum fruits {
576
+ # apple,
577
+ # banana,
578
+ # orange,
579
+ # pineapple
580
+ # };
581
+ # are defined this vocabulary:
582
+ # * a _symbol_ is a word from the enumeration (ie. _apple_, by example);
583
+ # * a _value_ is the value of a symbol in the enumeration (by example, apple has value _0_ and banana _1_).
584
+ #
585
+ # source://ffi//lib/ffi/enum.rb#84
586
+ class FFI::Enum
587
+ include ::FFI::DataConverter
588
+
589
+ # @overload initialize
590
+ # @overload initialize
591
+ # @return [Enum] a new instance of Enum
592
+ #
593
+ # source://ffi//lib/ffi/enum.rb#97
594
+ def initialize(*args); end
595
+
596
+ # Get a symbol or a value from the enum.
597
+ #
598
+ # @overload []
599
+ # @overload []
600
+ #
601
+ # source://ffi//lib/ffi/enum.rb#134
602
+ def [](query); end
603
+
604
+ # Get a symbol or a value from the enum.
605
+ #
606
+ # @overload []
607
+ # @overload []
608
+ #
609
+ # source://ffi//lib/ffi/enum.rb#134
610
+ def find(query); end
611
+
612
+ # @param val
613
+ # @return symbol name if it exists for +val+.
614
+ #
615
+ # source://ffi//lib/ffi/enum.rb#168
616
+ def from_native(val, ctx); end
617
+
618
+ # Returns the value of attribute native_type.
619
+ #
620
+ # source://ffi//lib/ffi/enum.rb#88
621
+ def native_type; end
622
+
623
+ # Get the symbol map.
624
+ #
625
+ # @return [Hash]
626
+ #
627
+ # source://ffi//lib/ffi/enum.rb#146
628
+ def symbol_map; end
629
+
630
+ # @return [Array] enum symbol names
631
+ #
632
+ # source://ffi//lib/ffi/enum.rb#121
633
+ def symbols; end
634
+
635
+ # Returns the value of attribute tag.
636
+ #
637
+ # source://ffi//lib/ffi/enum.rb#87
638
+ def tag; end
639
+
640
+ # Get the symbol map.
641
+ #
642
+ # @return [Hash]
643
+ #
644
+ # source://ffi//lib/ffi/enum.rb#146
645
+ def to_h; end
646
+
647
+ # Get the symbol map.
648
+ #
649
+ # @return [Hash]
650
+ #
651
+ # source://ffi//lib/ffi/enum.rb#146
652
+ def to_hash; end
653
+
654
+ # @param val [Symbol, Integer, #to_int]
655
+ # @param ctx unused
656
+ # @return [Integer] value of a enum symbol
657
+ #
658
+ # source://ffi//lib/ffi/enum.rb#156
659
+ def to_native(val, ctx); end
660
+ end
661
+
662
+ # An instance of this class permits to manage {Enum}s. In fact, Enums is a collection of {Enum}s.
663
+ #
664
+ # source://ffi//lib/ffi/enum.rb#36
665
+ class FFI::Enums
666
+ # @return [nil]
667
+ #
668
+ # source://ffi//lib/ffi/enum.rb#39
669
+ def initialize; end
670
+
671
+ # Add an {Enum} to the collection.
672
+ #
673
+ # @param enum [Enum]
674
+ #
675
+ # source://ffi//lib/ffi/enum.rb#47
676
+ def <<(enum); end
677
+
678
+ # @param symbol a symbol to find in merge symbol maps of all enums.
679
+ # @return a symbol
680
+ #
681
+ # source://ffi//lib/ffi/enum.rb#66
682
+ def __map_symbol(symbol); end
683
+
684
+ # Find a {Enum} in collection.
685
+ #
686
+ # @param query enum tag or part of an enum name
687
+ # @return [Enum]
688
+ #
689
+ # source://ffi//lib/ffi/enum.rb#56
690
+ def find(query); end
691
+ end
692
+
693
+ class FFI::Function < ::FFI::Pointer
694
+ def initialize(*_arg0); end
695
+
696
+ def attach(_arg0, _arg1); end
697
+ def autorelease; end
698
+ def autorelease=(_arg0); end
699
+ def autorelease?; end
700
+ def call(*_arg0); end
701
+ def free; end
702
+
703
+ private
704
+
705
+ def initialize_copy(_arg0); end
706
+ end
707
+
708
+ FFI::FunctionInfo = FFI::FunctionType
709
+
710
+ class FFI::FunctionType < ::FFI::Type
711
+ def initialize(*_arg0); end
712
+
713
+ def param_types; end
714
+ def result_type; end
715
+ end
716
+
717
+ # This module implements a couple of class methods to play with IO.
718
+ #
719
+ # source://ffi//lib/ffi/io.rb#34
720
+ module FFI::IO
721
+ class << self
722
+ # Synonym for IO::for_fd.
723
+ #
724
+ # @param fd [Integer] file decriptor
725
+ # @param mode [String] mode string
726
+ # @return [::IO]
727
+ #
728
+ # source://ffi//lib/ffi/io.rb#39
729
+ def for_fd(fd, mode = T.unsafe(nil)); end
730
+
731
+ # A version of IO#read that reads data from an IO and put then into a native buffer.
732
+ #
733
+ # This will be optimized at some future time to eliminate the double copy.
734
+ #
735
+ # @param io [#read] io to read from
736
+ # @param buf [AbstractMemory] destination for data read from +io+
737
+ # @param len [nil, Numeric] maximul number of bytes to read from +io+. If +nil+,
738
+ # read until end of file.
739
+ # @return [Numeric] length really read, in bytes
740
+ #
741
+ # source://ffi//lib/ffi/io.rb#53
742
+ def native_read(io, buf, len); end
743
+ end
744
+ end
745
+
746
+ module FFI::LastError
747
+ private
748
+
749
+ def error; end
750
+ def error=(_arg0); end
751
+
752
+ class << self
753
+ def error; end
754
+ def error=(_arg0); end
755
+ end
756
+ end
757
+
758
+ # This module is the base to use native functions.
759
+ #
760
+ # A basic usage may be:
761
+ # require 'ffi'
762
+ #
763
+ # module Hello
764
+ # extend FFI::Library
765
+ # ffi_lib FFI::Library::LIBC
766
+ # attach_function 'puts', [ :string ], :int
767
+ # end
768
+ #
769
+ # Hello.puts("Hello, World")
770
+ #
771
+ # source://ffi//lib/ffi/library.rb#78
772
+ module FFI::Library
773
+ # Attach C function +func+ to this module.
774
+ #
775
+ # @option options
776
+ # @option options
777
+ # @option options
778
+ # @option options
779
+ # @overload attach_function
780
+ # @overload attach_function
781
+ # @param name [#to_s] name of ruby method to attach as
782
+ # @param func [#to_s] name of C function to attach
783
+ # @param args [Array<Symbol>] an array of types
784
+ # @param returns [Symbol] type of return value
785
+ # @param options [Hash] a customizable set of options
786
+ # @raise [FFI::NotFoundError] if +func+ cannot be found in the attached libraries (see {#ffi_lib})
787
+ # @return [FFI::VariadicInvoker]
788
+ #
789
+ # source://ffi//lib/ffi/library.rb#234
790
+ def attach_function(name, func, args, returns = T.unsafe(nil), options = T.unsafe(nil)); end
791
+
792
+ # Attach C variable +cname+ to this module.
793
+ #
794
+ # @overload attach_variable
795
+ # @overload attach_variable
796
+ # @raise [FFI::NotFoundError] if +cname+ cannot be found in libraries
797
+ # @return [DynamicLibrary::Symbol]
798
+ #
799
+ # source://ffi//lib/ffi/library.rb#331
800
+ def attach_variable(mname, a1, a2 = T.unsafe(nil)); end
801
+
802
+ # Create a new FFI::Bitmask
803
+ #
804
+ # @overload bitmask
805
+ # @overload bitmask
806
+ # @overload bitmask
807
+ # @overload bitmask
808
+ # @overload bitmask
809
+ # @overload bitmask
810
+ # @return [FFI::Bitmask]
811
+ #
812
+ # source://ffi//lib/ffi/library.rb#554
813
+ def bitmask(*args); end
814
+
815
+ # @overload callback
816
+ # @overload callback
817
+ # @raise [ArgumentError]
818
+ # @return [FFI::CallbackInfo]
819
+ #
820
+ # source://ffi//lib/ffi/library.rb#384
821
+ def callback(*args); end
822
+
823
+ # Create a new {FFI::Enum}.
824
+ #
825
+ # @overload enum
826
+ # @overload enum
827
+ # @overload enum
828
+ # @overload enum
829
+ # @overload enum
830
+ # @overload enum
831
+ # @return [FFI::Enum]
832
+ #
833
+ # source://ffi//lib/ffi/library.rb#511
834
+ def enum(*args); end
835
+
836
+ # Find an enum by name.
837
+ #
838
+ # @param name
839
+ # @return [FFI::Enum]
840
+ #
841
+ # source://ffi//lib/ffi/library.rb#561
842
+ def enum_type(name); end
843
+
844
+ # Find an enum by a symbol it contains.
845
+ #
846
+ # @param symbol
847
+ # @return [FFI::Enum]
848
+ #
849
+ # source://ffi//lib/ffi/library.rb#568
850
+ def enum_value(symbol); end
851
+
852
+ # Set the calling convention for {#attach_function} and {#callback}
853
+ #
854
+ # @note +:stdcall+ is typically used for attaching Windows API functions
855
+ # @param convention [Symbol] one of +:default+, +:stdcall+
856
+ # @return [Symbol] the new calling convention
857
+ # @see http://en.wikipedia.org/wiki/Stdcall#stdcall
858
+ #
859
+ # source://ffi//lib/ffi/library.rb#163
860
+ def ffi_convention(convention = T.unsafe(nil)); end
861
+
862
+ # Load native libraries.
863
+ #
864
+ # @param names [Array] names of libraries to load
865
+ # @raise [LoadError] if a library cannot be opened
866
+ # @return [Array<DynamicLibrary>]
867
+ #
868
+ # source://ffi//lib/ffi/library.rb#95
869
+ def ffi_lib(*names); end
870
+
871
+ # Sets library flags for {#ffi_lib}.
872
+ #
873
+ # @example
874
+ # ffi_lib_flags(:lazy, :local) # => 5
875
+ # @param flags [Symbol, …] (see {FlagsMap})
876
+ # @return [Fixnum] the new value
877
+ #
878
+ # source://ffi//lib/ffi/library.rb#196
879
+ def ffi_lib_flags(*flags); end
880
+
881
+ # Get FFI libraries loaded using {#ffi_lib}.
882
+ #
883
+ # @raise [LoadError] if no libraries have been loaded (using {#ffi_lib})
884
+ # @return [Array<FFI::DynamicLibrary>] array of currently loaded FFI libraries
885
+ # @see #ffi_lib
886
+ #
887
+ # source://ffi//lib/ffi/library.rb#173
888
+ def ffi_libraries; end
889
+
890
+ # Find a type definition.
891
+ #
892
+ # @param t [DataConverter, Type, Struct, Symbol] type to find
893
+ # @return [Type]
894
+ #
895
+ # source://ffi//lib/ffi/library.rb#575
896
+ def find_type(t); end
897
+
898
+ # This function returns a list of possible names to lookup.
899
+ #
900
+ # @note Function names on windows may be decorated if they are using stdcall. See
901
+ # * http://en.wikipedia.org/wiki/Name_mangling#C_name_decoration_in_Microsoft_Windows
902
+ # * http://msdn.microsoft.com/en-us/library/zxk0tw93%28v=VS.100%29.aspx
903
+ # * http://en.wikibooks.org/wiki/X86_Disassembly/Calling_Conventions#STDCALL
904
+ # Note that decorated names can be overridden via def files. Also note that the
905
+ # windows api, although using, doesn't have decorated names.
906
+ # @param name [#to_s] function name
907
+ # @param arg_types [Array] function's argument types
908
+ # @return [Array<String>]
909
+ #
910
+ # source://ffi//lib/ffi/library.rb#289
911
+ def function_names(name, arg_types); end
912
+
913
+ # Register or get an already registered type definition.
914
+ #
915
+ # To register a new type definition, +old+ should be a {FFI::Type}. +add+
916
+ # is in this case the type definition.
917
+ #
918
+ # If +old+ is a {DataConverter}, a {Type::Mapped} is returned.
919
+ #
920
+ # If +old+ is +:enum+
921
+ # * and +add+ is an +Array+, a call to {#enum} is made with +add+ as single parameter;
922
+ # * in others cases, +info+ is used to create a named enum.
923
+ #
924
+ # If +old+ is a key for type map, #typedef get +old+ type definition.
925
+ #
926
+ # @param old [DataConverter, Symbol, Type]
927
+ # @param add [Symbol]
928
+ # @param info [Symbol]
929
+ # @return [FFI::Enum, FFI::Type]
930
+ #
931
+ # source://ffi//lib/ffi/library.rb#428
932
+ def typedef(old, add, info = T.unsafe(nil)); end
933
+
934
+ private
935
+
936
+ # Generic enum builder
937
+ # @param [Class] klass can be one of FFI::Enum or FFI::Bitmask
938
+ # @param args (see #enum or #bitmask)
939
+ #
940
+ # source://ffi//lib/ffi/library.rb#456
941
+ def generic_enum(klass, *args); end
942
+
943
+ class << self
944
+ # Test if extended object is a Module. If not, raise RuntimeError.
945
+ #
946
+ # @param mod extended object
947
+ # @raise [RuntimeError] if +mod+ is not a Module
948
+ # @return [nil]
949
+ #
950
+ # source://ffi//lib/ffi/library.rb#86
951
+ def extended(mod); end
952
+ end
953
+ end
954
+
955
+ # source://ffi//lib/ffi/library.rb#79
956
+ FFI::Library::CURRENT_PROCESS = T.let(T.unsafe(nil), Object)
957
+
958
+ # Flags used in {#ffi_lib}.
959
+ #
960
+ # This map allows you to supply symbols to {#ffi_lib_flags} instead of
961
+ # the actual constants.
962
+ #
963
+ # source://ffi//lib/ffi/library.rb#182
964
+ FFI::Library::FlagsMap = T.let(T.unsafe(nil), Hash)
965
+
966
+ # source://ffi//lib/ffi/library.rb#80
967
+ FFI::Library::LIBC = T.let(T.unsafe(nil), String)
968
+
969
+ # FFI::ManagedStruct allows custom garbage-collection of your FFI::Structs.
970
+ #
971
+ # The typical use case would be when interacting with a library
972
+ # that has a nontrivial memory management design, such as a linked
973
+ # list or a binary tree.
974
+ #
975
+ # When the {Struct} instance is garbage collected, FFI::ManagedStruct will
976
+ # invoke the class's release() method during object finalization.
977
+ #
978
+ # @example Example usage:
979
+ # module MyLibrary
980
+ # ffi_lib "libmylibrary"
981
+ # attach_function :new_dlist, [], :pointer
982
+ # attach_function :destroy_dlist, [:pointer], :void
983
+ # end
984
+ #
985
+ # class DoublyLinkedList < FFI::ManagedStruct
986
+ # @@@
987
+ # struct do |s|
988
+ # s.name 'struct dlist'
989
+ # s.include 'dlist.h'
990
+ # s.field :head, :pointer
991
+ # s.field :tail, :pointer
992
+ # end
993
+ # @@@
994
+ #
995
+ # def self.release ptr
996
+ # MyLibrary.destroy_dlist(ptr)
997
+ # end
998
+ # end
999
+ #
1000
+ # begin
1001
+ # ptr = DoublyLinkedList.new(MyLibrary.new_dlist)
1002
+ # # do something with the list
1003
+ # end
1004
+ # # struct is out of scope, and will be GC'd using DoublyLinkedList#release
1005
+ #
1006
+ # source://ffi//lib/ffi/managedstruct.rb#70
1007
+ class FFI::ManagedStruct < ::FFI::Struct
1008
+ # A new instance of FFI::ManagedStruct.
1009
+ #
1010
+ # @overload initialize
1011
+ # @overload initialize
1012
+ # @raise [NoMethodError]
1013
+ # @return [ManagedStruct] a new instance of ManagedStruct
1014
+ #
1015
+ # source://ffi//lib/ffi/managedstruct.rb#77
1016
+ def initialize(pointer = T.unsafe(nil)); end
1017
+ end
1018
+
1019
+ class FFI::MemoryPointer < ::FFI::Pointer
1020
+ def initialize(*_arg0); end
1021
+
1022
+ class << self
1023
+ def from_string(_arg0); end
1024
+ end
1025
+ end
1026
+
1027
+ FFI::NativeLibrary = FFI::DynamicLibrary
1028
+ module FFI::NativeType; end
1029
+ FFI::NativeType::BOOL = T.let(T.unsafe(nil), FFI::Type::Builtin)
1030
+ FFI::NativeType::BUFFER_IN = T.let(T.unsafe(nil), FFI::Type::Builtin)
1031
+ FFI::NativeType::BUFFER_INOUT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1032
+ FFI::NativeType::BUFFER_OUT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1033
+ FFI::NativeType::FLOAT32 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1034
+ FFI::NativeType::FLOAT64 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1035
+ FFI::NativeType::INT16 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1036
+ FFI::NativeType::INT32 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1037
+ FFI::NativeType::INT64 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1038
+ FFI::NativeType::INT8 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1039
+ FFI::NativeType::LONG = T.let(T.unsafe(nil), FFI::Type::Builtin)
1040
+ FFI::NativeType::LONGDOUBLE = T.let(T.unsafe(nil), FFI::Type::Builtin)
1041
+ FFI::NativeType::POINTER = T.let(T.unsafe(nil), FFI::Type::Builtin)
1042
+ FFI::NativeType::STRING = T.let(T.unsafe(nil), FFI::Type::Builtin)
1043
+ FFI::NativeType::UINT16 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1044
+ FFI::NativeType::UINT32 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1045
+ FFI::NativeType::UINT64 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1046
+ FFI::NativeType::UINT8 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1047
+ FFI::NativeType::ULONG = T.let(T.unsafe(nil), FFI::Type::Builtin)
1048
+ FFI::NativeType::VARARGS = T.let(T.unsafe(nil), FFI::Type::Builtin)
1049
+ FFI::NativeType::VOID = T.let(T.unsafe(nil), FFI::Type::Builtin)
1050
+
1051
+ # Exception raised when a function is not found in libraries
1052
+ #
1053
+ # source://ffi//lib/ffi/library.rb#58
1054
+ class FFI::NotFoundError < ::LoadError
1055
+ # @return [NotFoundError] a new instance of NotFoundError
1056
+ #
1057
+ # source://ffi//lib/ffi/library.rb#59
1058
+ def initialize(function, *libraries); end
1059
+ end
1060
+
1061
+ class FFI::NullPointerError < ::RuntimeError; end
1062
+
1063
+ # This module defines different constants and class methods to play with
1064
+ # various platforms.
1065
+ #
1066
+ # source://ffi//lib/ffi/platform.rb#37
1067
+ module FFI::Platform
1068
+ class << self
1069
+ # Test if current OS is a *BSD (include MAC)
1070
+ #
1071
+ # @return [Boolean]
1072
+ #
1073
+ # source://ffi//lib/ffi/platform.rb#156
1074
+ def bsd?; end
1075
+
1076
+ # Test if current OS is +os+.
1077
+ #
1078
+ # @param os [String]
1079
+ # @return [Boolean]
1080
+ #
1081
+ # source://ffi//lib/ffi/platform.rb#90
1082
+ def is_os(os); end
1083
+
1084
+ # Test if current OS is Mac OS
1085
+ #
1086
+ # @return [Boolean]
1087
+ #
1088
+ # source://ffi//lib/ffi/platform.rb#168
1089
+ def mac?; end
1090
+
1091
+ # Test if current OS is Solaris (Sun OS)
1092
+ #
1093
+ # @return [Boolean]
1094
+ #
1095
+ # source://ffi//lib/ffi/platform.rb#174
1096
+ def solaris?; end
1097
+
1098
+ # Test if current OS is a unix OS
1099
+ #
1100
+ # @return [Boolean]
1101
+ #
1102
+ # source://ffi//lib/ffi/platform.rb#180
1103
+ def unix?; end
1104
+
1105
+ # Test if current OS is Windows
1106
+ #
1107
+ # @return [Boolean]
1108
+ #
1109
+ # source://ffi//lib/ffi/platform.rb#162
1110
+ def windows?; end
1111
+ end
1112
+ end
1113
+
1114
+ FFI::Platform::ADDRESS_ALIGN = T.let(T.unsafe(nil), Integer)
1115
+ FFI::Platform::ADDRESS_SIZE = T.let(T.unsafe(nil), Integer)
1116
+
1117
+ # source://ffi//lib/ffi/platform.rb#63
1118
+ FFI::Platform::ARCH = T.let(T.unsafe(nil), String)
1119
+
1120
+ FFI::Platform::BIG_ENDIAN = T.let(T.unsafe(nil), Integer)
1121
+ FFI::Platform::BYTE_ORDER = T.let(T.unsafe(nil), Integer)
1122
+
1123
+ # source://ffi//lib/ffi/platform.rb#109
1124
+ FFI::Platform::CONF_DIR = T.let(T.unsafe(nil), String)
1125
+
1126
+ # source://ffi//lib/ffi/platform.rb#61
1127
+ FFI::Platform::CPU = T.let(T.unsafe(nil), String)
1128
+
1129
+ FFI::Platform::DOUBLE_ALIGN = T.let(T.unsafe(nil), Integer)
1130
+ FFI::Platform::DOUBLE_SIZE = T.let(T.unsafe(nil), Integer)
1131
+ FFI::Platform::FLOAT_ALIGN = T.let(T.unsafe(nil), Integer)
1132
+ FFI::Platform::FLOAT_SIZE = T.let(T.unsafe(nil), Integer)
1133
+ FFI::Platform::GNU_LIBC = T.let(T.unsafe(nil), String)
1134
+ FFI::Platform::INT16_ALIGN = T.let(T.unsafe(nil), Integer)
1135
+ FFI::Platform::INT16_SIZE = T.let(T.unsafe(nil), Integer)
1136
+ FFI::Platform::INT32_ALIGN = T.let(T.unsafe(nil), Integer)
1137
+ FFI::Platform::INT32_SIZE = T.let(T.unsafe(nil), Integer)
1138
+ FFI::Platform::INT64_ALIGN = T.let(T.unsafe(nil), Integer)
1139
+ FFI::Platform::INT64_SIZE = T.let(T.unsafe(nil), Integer)
1140
+ FFI::Platform::INT8_ALIGN = T.let(T.unsafe(nil), Integer)
1141
+ FFI::Platform::INT8_SIZE = T.let(T.unsafe(nil), Integer)
1142
+
1143
+ # source://ffi//lib/ffi/platform.rb#103
1144
+ FFI::Platform::IS_BSD = T.let(T.unsafe(nil), FalseClass)
1145
+
1146
+ # source://ffi//lib/ffi/platform.rb#100
1147
+ FFI::Platform::IS_DRAGONFLYBSD = T.let(T.unsafe(nil), FalseClass)
1148
+
1149
+ # source://ffi//lib/ffi/platform.rb#97
1150
+ FFI::Platform::IS_FREEBSD = T.let(T.unsafe(nil), FalseClass)
1151
+
1152
+ # source://ffi//lib/ffi/platform.rb#94
1153
+ FFI::Platform::IS_GNU = T.let(T.unsafe(nil), String)
1154
+
1155
+ # source://ffi//lib/ffi/platform.rb#95
1156
+ FFI::Platform::IS_LINUX = T.let(T.unsafe(nil), TrueClass)
1157
+
1158
+ # source://ffi//lib/ffi/platform.rb#96
1159
+ FFI::Platform::IS_MAC = T.let(T.unsafe(nil), FalseClass)
1160
+
1161
+ # source://ffi//lib/ffi/platform.rb#98
1162
+ FFI::Platform::IS_NETBSD = T.let(T.unsafe(nil), FalseClass)
1163
+
1164
+ # source://ffi//lib/ffi/platform.rb#99
1165
+ FFI::Platform::IS_OPENBSD = T.let(T.unsafe(nil), FalseClass)
1166
+
1167
+ # source://ffi//lib/ffi/platform.rb#101
1168
+ FFI::Platform::IS_SOLARIS = T.let(T.unsafe(nil), FalseClass)
1169
+
1170
+ # source://ffi//lib/ffi/platform.rb#102
1171
+ FFI::Platform::IS_WINDOWS = T.let(T.unsafe(nil), FalseClass)
1172
+
1173
+ # source://ffi//lib/ffi/platform.rb#134
1174
+ FFI::Platform::LIBC = T.let(T.unsafe(nil), String)
1175
+
1176
+ # source://ffi//lib/ffi/platform.rb#113
1177
+ FFI::Platform::LIBPREFIX = T.let(T.unsafe(nil), String)
1178
+
1179
+ # source://ffi//lib/ffi/platform.rb#122
1180
+ FFI::Platform::LIBSUFFIX = T.let(T.unsafe(nil), String)
1181
+
1182
+ FFI::Platform::LITTLE_ENDIAN = T.let(T.unsafe(nil), Integer)
1183
+ FFI::Platform::LONG_ALIGN = T.let(T.unsafe(nil), Integer)
1184
+ FFI::Platform::LONG_DOUBLE_ALIGN = T.let(T.unsafe(nil), Integer)
1185
+ FFI::Platform::LONG_DOUBLE_SIZE = T.let(T.unsafe(nil), Integer)
1186
+ FFI::Platform::LONG_SIZE = T.let(T.unsafe(nil), Integer)
1187
+
1188
+ # 64-bit inodes
1189
+ #
1190
+ # source://ffi//lib/ffi/platform.rb#108
1191
+ FFI::Platform::NAME = T.let(T.unsafe(nil), String)
1192
+
1193
+ # source://ffi//lib/ffi/platform.rb#38
1194
+ FFI::Platform::OS = T.let(T.unsafe(nil), String)
1195
+
1196
+ # source://ffi//lib/ffi/platform.rb#59
1197
+ FFI::Platform::OSVERSION = T.let(T.unsafe(nil), Integer)
1198
+
1199
+ # source://ffi//lib/ffi/platform.rb#33
1200
+ class FFI::PlatformError < ::LoadError; end
1201
+
1202
+ # source://ffi//lib/ffi/pointer.rb#42
1203
+ class FFI::Pointer < ::FFI::AbstractMemory
1204
+ def initialize(*_arg0); end
1205
+
1206
+ def +(_arg0); end
1207
+ def ==(_arg0); end
1208
+ def address; end
1209
+ def autorelease=(_arg0); end
1210
+ def autorelease?; end
1211
+ def free; end
1212
+ def inspect; end
1213
+ def null?; end
1214
+ def order(*_arg0); end
1215
+
1216
+ # Read pointer's contents as +type+
1217
+ #
1218
+ # Same as:
1219
+ # ptr.get(type, 0)
1220
+ #
1221
+ # @param type [Symbol, Type] of data to read
1222
+ # @return [Object]
1223
+ #
1224
+ # source://ffi//lib/ffi/pointer.rb#152
1225
+ def read(type); end
1226
+
1227
+ # Read an array of +type+ of length +length+.
1228
+ #
1229
+ # @example
1230
+ # ptr.read_array_of_type(TYPE_UINT8, :read_uint8, 4) # -> [1, 2, 3, 4]
1231
+ # @param type [Type] type of data to read from pointer's contents
1232
+ # @param reader [Symbol] method to send to +self+ to read +type+
1233
+ # @param length [Numeric]
1234
+ # @return [Array]
1235
+ #
1236
+ # source://ffi//lib/ffi/pointer.rb#114
1237
+ def read_array_of_type(type, reader, length); end
1238
+
1239
+ # Read pointer's contents as a string, or the first +len+ bytes of the
1240
+ # equivalent string if +len+ is not +nil+.
1241
+ #
1242
+ # @param len [nil, Numeric] length of string to return
1243
+ # @return [String]
1244
+ #
1245
+ # source://ffi//lib/ffi/pointer.rb#57
1246
+ def read_string(len = T.unsafe(nil)); end
1247
+
1248
+ # Read the first +len+ bytes of pointer's contents as a string.
1249
+ #
1250
+ # Same as:
1251
+ # ptr.read_string(len) # with len not nil
1252
+ #
1253
+ # @param len [Numeric] length of string to return
1254
+ # @return [String]
1255
+ #
1256
+ # source://ffi//lib/ffi/pointer.rb#72
1257
+ def read_string_length(len); end
1258
+
1259
+ # Read pointer's contents as a string.
1260
+ #
1261
+ # Same as:
1262
+ # ptr.read_string # with no len
1263
+ #
1264
+ # @return [String]
1265
+ #
1266
+ # source://ffi//lib/ffi/pointer.rb#81
1267
+ def read_string_to_null; end
1268
+
1269
+ def slice(_arg0, _arg1); end
1270
+ def to_i; end
1271
+
1272
+ # @return [self]
1273
+ #
1274
+ # source://ffi//lib/ffi/pointer.rb#142
1275
+ def to_ptr; end
1276
+
1277
+ def to_s; end
1278
+ def type_size; end
1279
+
1280
+ # Write +value+ of type +type+ to pointer's content
1281
+ #
1282
+ # Same as:
1283
+ # ptr.put(type, 0)
1284
+ #
1285
+ # @param type [Symbol, Type] of data to read
1286
+ # @param value [Object] to write
1287
+ # @return [nil]
1288
+ #
1289
+ # source://ffi//lib/ffi/pointer.rb#163
1290
+ def write(type, value); end
1291
+
1292
+ # Write +ary+ in pointer's contents as +type+.
1293
+ #
1294
+ # @example
1295
+ # ptr.write_array_of_type(TYPE_UINT8, :put_uint8, [1, 2, 3 ,4])
1296
+ # @param type [Type] type of data to write to pointer's contents
1297
+ # @param writer [Symbol] method to send to +self+ to write +type+
1298
+ # @param ary [Array]
1299
+ # @return [self]
1300
+ #
1301
+ # source://ffi//lib/ffi/pointer.rb#132
1302
+ def write_array_of_type(type, writer, ary); end
1303
+
1304
+ # Write +str+ in pointer's contents, or first +len+ bytes if
1305
+ # +len+ is not +nil+.
1306
+ #
1307
+ # @param str [String] string to write
1308
+ # @param len [Numeric] length of string to return
1309
+ # @return [self]
1310
+ #
1311
+ # source://ffi//lib/ffi/pointer.rb#101
1312
+ def write_string(str, len = T.unsafe(nil)); end
1313
+
1314
+ # Write +len+ first bytes of +str+ in pointer's contents.
1315
+ #
1316
+ # Same as:
1317
+ # ptr.write_string(str, len) # with len not nil
1318
+ #
1319
+ # @param str [String] string to write
1320
+ # @param len [Numeric] length of string to return
1321
+ # @return [self]
1322
+ #
1323
+ # source://ffi//lib/ffi/pointer.rb#92
1324
+ def write_string_length(str, len); end
1325
+
1326
+ private
1327
+
1328
+ def initialize_copy(_arg0); end
1329
+
1330
+ class << self
1331
+ # Return the size of a pointer on the current platform, in bytes
1332
+ #
1333
+ # @return [Numeric]
1334
+ #
1335
+ # source://ffi//lib/ffi/pointer.rb#49
1336
+ def size; end
1337
+ end
1338
+ end
1339
+
1340
+ FFI::Pointer::NULL = T.let(T.unsafe(nil), FFI::Pointer)
1341
+
1342
+ # Pointer size
1343
+ #
1344
+ # source://ffi//lib/ffi/pointer.rb#45
1345
+ FFI::Pointer::SIZE = T.let(T.unsafe(nil), Integer)
1346
+
1347
+ FFI::SizeTypes = T.let(T.unsafe(nil), Hash)
1348
+
1349
+ # This will convert a pointer to a Ruby string (just like `:string`), but
1350
+ # also allow to work with the pointer itself. This is useful when you want
1351
+ # a Ruby string already containing a copy of the data, but also the pointer
1352
+ # to the data for you to do something with it, like freeing it, in case the
1353
+ # library handed the memory off to the caller (Ruby-FFI).
1354
+ #
1355
+ # It's {typedef}'d as +:strptr+.
1356
+ #
1357
+ # source://ffi//lib/ffi/types.rb#158
1358
+ class FFI::StrPtrConverter
1359
+ extend ::FFI::DataConverter
1360
+
1361
+ class << self
1362
+ # Returns a [ String, Pointer ] tuple so the C memory for the string can be freed
1363
+ #
1364
+ # @param val [Pointer]
1365
+ # @param ctx not used
1366
+ # @return [Array(String, Pointer)]
1367
+ #
1368
+ # source://ffi//lib/ffi/types.rb#166
1369
+ def from_native(val, ctx); end
1370
+ end
1371
+ end
1372
+
1373
+ # source://ffi//lib/ffi/struct.rb#41
1374
+ class FFI::Struct
1375
+ def initialize(*_arg0); end
1376
+
1377
+ def [](_arg0); end
1378
+ def []=(_arg0, _arg1); end
1379
+
1380
+ # @return [Fixnum] Struct alignment
1381
+ #
1382
+ # source://ffi//lib/ffi/struct.rb#50
1383
+ def align; end
1384
+
1385
+ # @return [Fixnum] Struct alignment
1386
+ #
1387
+ # source://ffi//lib/ffi/struct.rb#50
1388
+ def alignment; end
1389
+
1390
+ # Clear the struct content.
1391
+ #
1392
+ # @return [self]
1393
+ #
1394
+ # source://ffi//lib/ffi/struct.rb#78
1395
+ def clear; end
1396
+
1397
+ def layout; end
1398
+
1399
+ # source://ffi//lib/ffi/struct.rb#61
1400
+ def members; end
1401
+
1402
+ def null?; end
1403
+
1404
+ # Get the offset of a field.
1405
+ #
1406
+ # @return [Numeric]
1407
+ #
1408
+ # source://ffi//lib/ffi/struct.rb#56
1409
+ def offset_of(name); end
1410
+
1411
+ # Get an array of tuples (field name, offset of the field).
1412
+ #
1413
+ # @return [Array<Array(Symbol, Numeric)>] Array<Array(Symbol, Numeric)>
1414
+ #
1415
+ # source://ffi//lib/ffi/struct.rb#72
1416
+ def offsets; end
1417
+
1418
+ def order(*_arg0); end
1419
+ def pointer; end
1420
+
1421
+ # Get struct size
1422
+ #
1423
+ # @return [Numeric]
1424
+ #
1425
+ # source://ffi//lib/ffi/struct.rb#45
1426
+ def size; end
1427
+
1428
+ # Get {Pointer} to struct content.
1429
+ #
1430
+ # @return [AbstractMemory]
1431
+ #
1432
+ # source://ffi//lib/ffi/struct.rb#85
1433
+ def to_ptr; end
1434
+
1435
+ # Get array of values from Struct fields.
1436
+ #
1437
+ # @return [Array]
1438
+ #
1439
+ # source://ffi//lib/ffi/struct.rb#67
1440
+ def values; end
1441
+
1442
+ private
1443
+
1444
+ def initialize_copy(_arg0); end
1445
+ def layout=(_arg0); end
1446
+ def pointer=(_arg0); end
1447
+
1448
+ class << self
1449
+ # @return [Fixnum] Struct alignment
1450
+ #
1451
+ # source://ffi//lib/ffi/struct.rb#104
1452
+ def alignment; end
1453
+
1454
+ def alloc_in(*_arg0); end
1455
+ def alloc_inout(*_arg0); end
1456
+ def alloc_out(*_arg0); end
1457
+
1458
+ # source://ffi//lib/ffi/struct.rb#165
1459
+ def auto_ptr; end
1460
+
1461
+ # source://ffi//lib/ffi/struct.rb#143
1462
+ def by_ref(flags = T.unsafe(nil)); end
1463
+
1464
+ # source://ffi//lib/ffi/struct.rb#139
1465
+ def by_value; end
1466
+
1467
+ # source://ffi//lib/ffi/struct.rb#123
1468
+ def in; end
1469
+
1470
+ # @overload layout
1471
+ # @overload layout
1472
+ # @return [StructLayout]
1473
+ #
1474
+ # source://ffi//lib/ffi/struct.rb#205
1475
+ def layout(*spec); end
1476
+
1477
+ # source://ffi//lib/ffi/struct.rb#109
1478
+ def members; end
1479
+
1480
+ def new_in(*_arg0); end
1481
+ def new_inout(*_arg0); end
1482
+ def new_out(*_arg0); end
1483
+
1484
+ # Get the offset of a field.
1485
+ #
1486
+ # @return [Numeric]
1487
+ #
1488
+ # source://ffi//lib/ffi/struct.rb#119
1489
+ def offset_of(name); end
1490
+
1491
+ # Get an array of tuples (field name, offset of the field).
1492
+ #
1493
+ # @return [Array<Array(Symbol, Numeric)>] Array<Array(Symbol, Numeric)>
1494
+ #
1495
+ # source://ffi//lib/ffi/struct.rb#114
1496
+ def offsets; end
1497
+
1498
+ # source://ffi//lib/ffi/struct.rb#127
1499
+ def out; end
1500
+
1501
+ # source://ffi//lib/ffi/struct.rb#131
1502
+ def ptr(flags = T.unsafe(nil)); end
1503
+
1504
+ # Get struct size
1505
+ #
1506
+ # @return [Numeric]
1507
+ #
1508
+ # source://ffi//lib/ffi/struct.rb#91
1509
+ def size; end
1510
+
1511
+ # set struct size
1512
+ #
1513
+ # @param size [Numeric]
1514
+ # @raise [ArgumentError]
1515
+ # @return [size]
1516
+ #
1517
+ # source://ffi//lib/ffi/struct.rb#98
1518
+ def size=(size); end
1519
+
1520
+ # source://ffi//lib/ffi/struct.rb#135
1521
+ def val; end
1522
+
1523
+ protected
1524
+
1525
+ # source://ffi//lib/ffi/struct.rb#243
1526
+ def align(alignment = T.unsafe(nil)); end
1527
+
1528
+ # source://ffi//lib/ffi/struct.rb#243
1529
+ def aligned(alignment = T.unsafe(nil)); end
1530
+
1531
+ # source://ffi//lib/ffi/struct.rb#229
1532
+ def callback(params, ret); end
1533
+
1534
+ # source://ffi//lib/ffi/struct.rb#248
1535
+ def enclosing_module; end
1536
+
1537
+ # source://ffi//lib/ffi/struct.rb#260
1538
+ def find_field_type(type, mod = T.unsafe(nil)); end
1539
+
1540
+ # source://ffi//lib/ffi/struct.rb#275
1541
+ def find_type(type, mod = T.unsafe(nil)); end
1542
+
1543
+ # source://ffi//lib/ffi/struct.rb#238
1544
+ def pack(packed = T.unsafe(nil)); end
1545
+
1546
+ # source://ffi//lib/ffi/struct.rb#238
1547
+ def packed(packed = T.unsafe(nil)); end
1548
+
1549
+ private
1550
+
1551
+ # Add array +spec+ to +builder+.
1552
+ #
1553
+ # @param builder [StructLayoutBuilder]
1554
+ # @param spec [Array<Symbol, Integer>]
1555
+ # @return [builder]
1556
+ #
1557
+ # source://ffi//lib/ffi/struct.rb#297
1558
+ def array_layout(builder, spec); end
1559
+
1560
+ # Add hash +spec+ to +builder+.
1561
+ #
1562
+ # @param builder [StructLayoutBuilder]
1563
+ # @param spec [Hash]
1564
+ # @return [builder]
1565
+ #
1566
+ # source://ffi//lib/ffi/struct.rb#287
1567
+ def hash_layout(builder, spec); end
1568
+ end
1569
+ end
1570
+
1571
+ class FFI::Struct::InlineArray
1572
+ include ::Enumerable
1573
+
1574
+ def initialize(_arg0, _arg1); end
1575
+
1576
+ def [](_arg0); end
1577
+ def []=(_arg0, _arg1); end
1578
+ def each; end
1579
+ def size; end
1580
+ def to_a; end
1581
+ def to_ptr; end
1582
+ end
1583
+
1584
+ # source://ffi//lib/ffi/struct.rb#147
1585
+ class FFI::Struct::ManagedStructConverter < ::FFI::StructByReference
1586
+ # @param struct_class [Struct]
1587
+ # @raise [NoMethodError]
1588
+ # @return [ManagedStructConverter] a new instance of ManagedStructConverter
1589
+ #
1590
+ # source://ffi//lib/ffi/struct.rb#150
1591
+ def initialize(struct_class); end
1592
+
1593
+ # @param ptr [Pointer]
1594
+ # @param ctx [nil]
1595
+ # @return [Struct]
1596
+ #
1597
+ # source://ffi//lib/ffi/struct.rb#160
1598
+ def from_native(ptr, ctx); end
1599
+ end
1600
+
1601
+ # This class includes the {FFI::DataConverter} module.
1602
+ #
1603
+ # source://ffi//lib/ffi/struct_by_reference.rb#33
1604
+ class FFI::StructByReference
1605
+ include ::FFI::DataConverter
1606
+
1607
+ # @param struct_class [Struct]
1608
+ # @return [StructByReference] a new instance of StructByReference
1609
+ #
1610
+ # source://ffi//lib/ffi/struct_by_reference.rb#39
1611
+ def initialize(struct_class); end
1612
+
1613
+ # Create a struct from content of memory +value+.
1614
+ #
1615
+ # @param value [AbstractMemory]
1616
+ # @param ctx [nil]
1617
+ # @return [Struct]
1618
+ #
1619
+ # source://ffi//lib/ffi/struct_by_reference.rb#68
1620
+ def from_native(value, ctx); end
1621
+
1622
+ # Always get {FFI::Type}::POINTER.
1623
+ #
1624
+ # source://ffi//lib/ffi/struct_by_reference.rb#47
1625
+ def native_type; end
1626
+
1627
+ # Returns the value of attribute struct_class.
1628
+ #
1629
+ # source://ffi//lib/ffi/struct_by_reference.rb#36
1630
+ def struct_class; end
1631
+
1632
+ # @param value [nil, Struct]
1633
+ # @param ctx [nil]
1634
+ # @return [AbstractMemory] Pointer on +value+.
1635
+ #
1636
+ # source://ffi//lib/ffi/struct_by_reference.rb#54
1637
+ def to_native(value, ctx); end
1638
+ end
1639
+
1640
+ class FFI::StructByValue < ::FFI::Type
1641
+ def initialize(_arg0); end
1642
+
1643
+ def layout; end
1644
+ def struct_class; end
1645
+ end
1646
+
1647
+ # source://ffi//lib/ffi/struct_layout.rb#36
1648
+ class FFI::StructLayout < ::FFI::Type
1649
+ def initialize(_arg0, _arg1, _arg2); end
1650
+
1651
+ def [](_arg0); end
1652
+ def __union!; end
1653
+ def fields; end
1654
+ def members; end
1655
+
1656
+ # Get the offset of a field.
1657
+ #
1658
+ # @return [Numeric]
1659
+ #
1660
+ # source://ffi//lib/ffi/struct_layout.rb#46
1661
+ def offset_of(field_name); end
1662
+
1663
+ # Get an array of tuples (field name, offset of the field).
1664
+ #
1665
+ # @return [Array<Array(Symbol, Numeric)>] Array<Array(Symbol, Numeric)>
1666
+ #
1667
+ # source://ffi//lib/ffi/struct_layout.rb#40
1668
+ def offsets; end
1669
+
1670
+ def to_a; end
1671
+ end
1672
+
1673
+ class FFI::StructLayout::Array < ::FFI::StructLayout::Field
1674
+ def get(_arg0); end
1675
+ def put(_arg0, _arg1); end
1676
+ end
1677
+
1678
+ class FFI::StructLayout::CharArray < ::FFI::Struct::InlineArray
1679
+ def to_s; end
1680
+ def to_str; end
1681
+ end
1682
+
1683
+ # An enum {Field} in a {StructLayout}.
1684
+ #
1685
+ # source://ffi//lib/ffi/struct_layout.rb#51
1686
+ class FFI::StructLayout::Enum < ::FFI::StructLayout::Field
1687
+ # Get an object of type {#type} from memory pointed by +ptr+.
1688
+ #
1689
+ # @param ptr [AbstractMemory] pointer on a {Struct}
1690
+ # @return [Object]
1691
+ #
1692
+ # source://ffi//lib/ffi/struct_layout.rb#56
1693
+ def get(ptr); end
1694
+
1695
+ # Set +value+ into memory pointed by +ptr+.
1696
+ #
1697
+ # @param ptr [AbstractMemory] pointer on a {Struct}
1698
+ # @param value
1699
+ # @return [nil]
1700
+ #
1701
+ # source://ffi//lib/ffi/struct_layout.rb#64
1702
+ def put(ptr, value); end
1703
+ end
1704
+
1705
+ class FFI::StructLayout::Field
1706
+ def initialize(*_arg0); end
1707
+
1708
+ def alignment; end
1709
+ def get(_arg0); end
1710
+ def name; end
1711
+ def offset; end
1712
+ def put(_arg0, _arg1); end
1713
+ def size; end
1714
+ def type; end
1715
+ end
1716
+
1717
+ class FFI::StructLayout::Function < ::FFI::StructLayout::Field
1718
+ def get(_arg0); end
1719
+ def put(_arg0, _arg1); end
1720
+ end
1721
+
1722
+ # source://ffi//lib/ffi/struct_layout.rb#70
1723
+ class FFI::StructLayout::InnerStruct < ::FFI::StructLayout::Field
1724
+ # source://ffi//lib/ffi/struct_layout.rb#71
1725
+ def get(ptr); end
1726
+
1727
+ # @raise [TypeError]
1728
+ #
1729
+ # source://ffi//lib/ffi/struct_layout.rb#75
1730
+ def put(ptr, value); end
1731
+ end
1732
+
1733
+ # source://ffi//lib/ffi/struct_layout.rb#81
1734
+ class FFI::StructLayout::Mapped < ::FFI::StructLayout::Field
1735
+ # @return [Mapped] a new instance of Mapped
1736
+ #
1737
+ # source://ffi//lib/ffi/struct_layout.rb#82
1738
+ def initialize(name, offset, type, orig_field); end
1739
+
1740
+ # source://ffi//lib/ffi/struct_layout.rb#87
1741
+ def get(ptr); end
1742
+
1743
+ # source://ffi//lib/ffi/struct_layout.rb#91
1744
+ def put(ptr, value); end
1745
+ end
1746
+
1747
+ class FFI::StructLayout::Number < ::FFI::StructLayout::Field; end
1748
+ class FFI::StructLayout::Pointer < ::FFI::StructLayout::Field; end
1749
+ class FFI::StructLayout::String < ::FFI::StructLayout::Field; end
1750
+
1751
+ # Build a {StructLayout struct layout}.
1752
+ #
1753
+ # source://ffi//lib/ffi/struct_layout_builder.rb#35
1754
+ class FFI::StructLayoutBuilder
1755
+ # @return [StructLayoutBuilder] a new instance of StructLayoutBuilder
1756
+ #
1757
+ # source://ffi//lib/ffi/struct_layout_builder.rb#39
1758
+ def initialize; end
1759
+
1760
+ # Add a field to the builder.
1761
+ #
1762
+ # @note Setting +offset+ to +nil+ or +-1+ is equivalent to +0+.
1763
+ # @param name [String, Symbol] name of the field
1764
+ # @param type [Array, DataConverter, Struct, StructLayout::Field, Symbol, Type] type of the field
1765
+ # @param offset [Numeric, nil]
1766
+ # @return [self]
1767
+ #
1768
+ # source://ffi//lib/ffi/struct_layout_builder.rb#123
1769
+ def add(name, type, offset = T.unsafe(nil)); end
1770
+
1771
+ # Add an array as a field to the builder.
1772
+ #
1773
+ # @param count [Numeric] array length
1774
+ # @param name [String, Symbol] name of the field
1775
+ # @param type [Array, DataConverter, Struct, StructLayout::Field, Symbol, Type] type of the field
1776
+ # @param offset [Numeric, nil]
1777
+ # @return [self]
1778
+ #
1779
+ # source://ffi//lib/ffi/struct_layout_builder.rb#161
1780
+ def add_array(name, type, count, offset = T.unsafe(nil)); end
1781
+
1782
+ # Same as {#add}.
1783
+ #
1784
+ # @param name [String, Symbol] name of the field
1785
+ # @param type [Array, DataConverter, Struct, StructLayout::Field, Symbol, Type] type of the field
1786
+ # @param offset [Numeric, nil]
1787
+ # @return [self]
1788
+ # @see #add
1789
+ #
1790
+ # source://ffi//lib/ffi/struct_layout_builder.rb#144
1791
+ def add_field(name, type, offset = T.unsafe(nil)); end
1792
+
1793
+ # Add a struct as a field to the builder.
1794
+ #
1795
+ # @param name [String, Symbol] name of the field
1796
+ # @param type [Array, DataConverter, Struct, StructLayout::Field, Symbol, Type] type of the field
1797
+ # @param offset [Numeric, nil]
1798
+ # @return [self]
1799
+ #
1800
+ # source://ffi//lib/ffi/struct_layout_builder.rb#151
1801
+ def add_struct(name, type, offset = T.unsafe(nil)); end
1802
+
1803
+ # Returns the value of attribute alignment.
1804
+ #
1805
+ # source://ffi//lib/ffi/struct_layout_builder.rb#37
1806
+ def alignment; end
1807
+
1808
+ # Set alignment attribute with +align+ only if it is greater than attribute value.
1809
+ #
1810
+ # @param align [Numeric]
1811
+ #
1812
+ # source://ffi//lib/ffi/struct_layout_builder.rb#56
1813
+ def alignment=(align); end
1814
+
1815
+ # Build and return the struct layout.
1816
+ #
1817
+ # @return [StructLayout]
1818
+ #
1819
+ # source://ffi//lib/ffi/struct_layout_builder.rb#167
1820
+ def build; end
1821
+
1822
+ # Set packed attribute
1823
+ #
1824
+ # @overload packed=
1825
+ # @overload packed=
1826
+ #
1827
+ # source://ffi//lib/ffi/struct_layout_builder.rb#89
1828
+ def packed=(packed); end
1829
+
1830
+ # Returns the value of attribute size.
1831
+ #
1832
+ # source://ffi//lib/ffi/struct_layout_builder.rb#36
1833
+ def size; end
1834
+
1835
+ # Set size attribute with +size+ only if +size+ is greater than attribute value.
1836
+ #
1837
+ # @param size [Numeric]
1838
+ #
1839
+ # source://ffi//lib/ffi/struct_layout_builder.rb#50
1840
+ def size=(size); end
1841
+
1842
+ # Set union attribute.
1843
+ # Set to +true+ to build a {Union} instead of a {Struct}.
1844
+ #
1845
+ # @param is_union [Boolean]
1846
+ # @return [is_union]
1847
+ #
1848
+ # source://ffi//lib/ffi/struct_layout_builder.rb#65
1849
+ def union=(is_union); end
1850
+
1851
+ # Building a {Union} or a {Struct} ?
1852
+ #
1853
+ # @return [Boolean]
1854
+ #
1855
+ # source://ffi//lib/ffi/struct_layout_builder.rb#73
1856
+ def union?; end
1857
+
1858
+ private
1859
+
1860
+ # @param offset [Numeric]
1861
+ # @param align [Numeric]
1862
+ # @return [Numeric]
1863
+ #
1864
+ # source://ffi//lib/ffi/struct_layout_builder.rb#181
1865
+ def align(offset, align); end
1866
+
1867
+ # @param name [String, Symbol] name of the field
1868
+ # @param type [Array, DataConverter, Struct, StructLayout::Field, Symbol, Type] type of the field
1869
+ # @param offset [Numeric, nil]
1870
+ # @return [StructLayout::Field]
1871
+ #
1872
+ # source://ffi//lib/ffi/struct_layout_builder.rb#187
1873
+ def field_for_type(name, offset, type); end
1874
+ end
1875
+
1876
+ # List of number types
1877
+ #
1878
+ # source://ffi//lib/ffi/struct_layout_builder.rb#100
1879
+ FFI::StructLayoutBuilder::NUMBER_TYPES = T.let(T.unsafe(nil), Array)
1880
+
1881
+ FFI::TYPE_BOOL = T.let(T.unsafe(nil), FFI::Type::Builtin)
1882
+ FFI::TYPE_BUFFER_IN = T.let(T.unsafe(nil), FFI::Type::Builtin)
1883
+ FFI::TYPE_BUFFER_INOUT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1884
+ FFI::TYPE_BUFFER_OUT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1885
+ FFI::TYPE_FLOAT32 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1886
+ FFI::TYPE_FLOAT64 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1887
+ FFI::TYPE_INT16 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1888
+ FFI::TYPE_INT32 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1889
+ FFI::TYPE_INT64 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1890
+ FFI::TYPE_INT8 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1891
+ FFI::TYPE_LONG = T.let(T.unsafe(nil), FFI::Type::Builtin)
1892
+ FFI::TYPE_LONGDOUBLE = T.let(T.unsafe(nil), FFI::Type::Builtin)
1893
+ FFI::TYPE_POINTER = T.let(T.unsafe(nil), FFI::Type::Builtin)
1894
+ FFI::TYPE_STRING = T.let(T.unsafe(nil), FFI::Type::Builtin)
1895
+ FFI::TYPE_UINT16 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1896
+ FFI::TYPE_UINT32 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1897
+ FFI::TYPE_UINT64 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1898
+ FFI::TYPE_UINT8 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1899
+ FFI::TYPE_ULONG = T.let(T.unsafe(nil), FFI::Type::Builtin)
1900
+ FFI::TYPE_VARARGS = T.let(T.unsafe(nil), FFI::Type::Builtin)
1901
+ FFI::TYPE_VOID = T.let(T.unsafe(nil), FFI::Type::Builtin)
1902
+
1903
+ class FFI::Type
1904
+ def initialize(_arg0); end
1905
+
1906
+ def alignment; end
1907
+ def inspect; end
1908
+ def size; end
1909
+ end
1910
+
1911
+ FFI::Type::Array = FFI::ArrayType
1912
+ FFI::Type::BOOL = T.let(T.unsafe(nil), FFI::Type::Builtin)
1913
+ FFI::Type::BUFFER_IN = T.let(T.unsafe(nil), FFI::Type::Builtin)
1914
+ FFI::Type::BUFFER_INOUT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1915
+ FFI::Type::BUFFER_OUT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1916
+
1917
+ class FFI::Type::Builtin < ::FFI::Type
1918
+ def inspect; end
1919
+ end
1920
+
1921
+ FFI::Type::CHAR = T.let(T.unsafe(nil), FFI::Type::Builtin)
1922
+ FFI::Type::DOUBLE = T.let(T.unsafe(nil), FFI::Type::Builtin)
1923
+ FFI::Type::FLOAT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1924
+ FFI::Type::FLOAT32 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1925
+ FFI::Type::FLOAT64 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1926
+ FFI::Type::Function = FFI::FunctionType
1927
+ FFI::Type::INT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1928
+ FFI::Type::INT16 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1929
+ FFI::Type::INT32 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1930
+ FFI::Type::INT64 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1931
+ FFI::Type::INT8 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1932
+ FFI::Type::LONG = T.let(T.unsafe(nil), FFI::Type::Builtin)
1933
+ FFI::Type::LONGDOUBLE = T.let(T.unsafe(nil), FFI::Type::Builtin)
1934
+ FFI::Type::LONG_LONG = T.let(T.unsafe(nil), FFI::Type::Builtin)
1935
+
1936
+ class FFI::Type::Mapped < ::FFI::Type
1937
+ def initialize(_arg0); end
1938
+
1939
+ def from_native(*_arg0); end
1940
+ def native_type; end
1941
+ def to_native(*_arg0); end
1942
+ def type; end
1943
+ end
1944
+
1945
+ FFI::Type::POINTER = T.let(T.unsafe(nil), FFI::Type::Builtin)
1946
+ FFI::Type::SCHAR = T.let(T.unsafe(nil), FFI::Type::Builtin)
1947
+ FFI::Type::SHORT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1948
+ FFI::Type::SINT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1949
+ FFI::Type::SLONG = T.let(T.unsafe(nil), FFI::Type::Builtin)
1950
+ FFI::Type::SLONG_LONG = T.let(T.unsafe(nil), FFI::Type::Builtin)
1951
+ FFI::Type::SSHORT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1952
+ FFI::Type::STRING = T.let(T.unsafe(nil), FFI::Type::Builtin)
1953
+ FFI::Type::Struct = FFI::StructByValue
1954
+ FFI::Type::UCHAR = T.let(T.unsafe(nil), FFI::Type::Builtin)
1955
+ FFI::Type::UINT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1956
+ FFI::Type::UINT16 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1957
+ FFI::Type::UINT32 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1958
+ FFI::Type::UINT64 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1959
+ FFI::Type::UINT8 = T.let(T.unsafe(nil), FFI::Type::Builtin)
1960
+ FFI::Type::ULONG = T.let(T.unsafe(nil), FFI::Type::Builtin)
1961
+ FFI::Type::ULONG_LONG = T.let(T.unsafe(nil), FFI::Type::Builtin)
1962
+ FFI::Type::USHORT = T.let(T.unsafe(nil), FFI::Type::Builtin)
1963
+ FFI::Type::VARARGS = T.let(T.unsafe(nil), FFI::Type::Builtin)
1964
+ FFI::Type::VOID = T.let(T.unsafe(nil), FFI::Type::Builtin)
1965
+ FFI::TypeDefs = T.let(T.unsafe(nil), Hash)
1966
+
1967
+ # source://ffi//lib/ffi/library.rb#32
1968
+ FFI::USE_THIS_PROCESS_AS_LIBRARY = T.let(T.unsafe(nil), Object)
1969
+
1970
+ # source://ffi//lib/ffi/union.rb#36
1971
+ class FFI::Union < ::FFI::Struct
1972
+ class << self
1973
+ # source://ffi//lib/ffi/union.rb#37
1974
+ def builder; end
1975
+ end
1976
+ end
1977
+
1978
+ # source://ffi//lib/ffi/version.rb#2
1979
+ FFI::VERSION = T.let(T.unsafe(nil), String)
1980
+
1981
+ # source://ffi//lib/ffi/variadic.rb#34
1982
+ class FFI::VariadicInvoker
1983
+ def initialize(_arg0, _arg1, _arg2, _arg3); end
1984
+
1985
+ # Attach the invoker to module +mod+ as +mname+
1986
+ #
1987
+ # source://ffi//lib/ffi/variadic.rb#53
1988
+ def attach(mod, mname); end
1989
+
1990
+ # source://ffi//lib/ffi/variadic.rb#35
1991
+ def call(*args, &block); end
1992
+
1993
+ def invoke(_arg0, _arg1); end
1994
+ end