ffi 1.16.3-x86-mingw32 → 1.17.0.rc1-x86-mingw32

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.
@@ -0,0 +1,76 @@
1
+ module FFI
2
+ class Struct[out P < AbstractMemory, unchecked out E]
3
+ type layout = Library::ffi_lib_type | singleton(StructLayout::Field) | [layout, Integer]
4
+
5
+ type ptr = Type::Mapped[
6
+ StructByReference[Struct[AbstractMemory, untyped], AbstractMemory],
7
+ AbstractMemory, instance, untyped
8
+ ]
9
+ def self.ptr: (?untyped flags) -> ptr # https://github.com/ffi/ffi/issues/1073
10
+ alias self.by_ref self.ptr
11
+ def self.in: () -> ptr
12
+ def self.out: () -> ptr
13
+ def self.val: () -> StructByValue[singleton(Struct)]
14
+ alias self.by_value self.val
15
+
16
+ alias self.alloc_inout self.new
17
+ alias self.alloc_in self.new
18
+ alias self.alloc_out self.new
19
+ alias self.new_inout self.new
20
+ alias self.new_in self.new
21
+ alias self.new_out self.new
22
+
23
+ def self.auto_ptr: () -> Type::Mapped[
24
+ ManagedStructConverter[ManagedStruct[AutoPointer, untyped], AutoPointer],
25
+ Pointer, instance, untyped
26
+ ]
27
+ def self.layout: (*layout | Integer) -> StructLayout
28
+ | (Hash[Symbol, layout]) -> StructLayout
29
+ def self.size=: (Integer size) -> Integer
30
+
31
+ def self?.alignment: () -> Integer
32
+ def self?.members: () -> Array[Symbol]
33
+ def self?.offset_of: (Symbol name) -> Integer
34
+ def self?.offsets: () -> Array[[Symbol, Integer]]
35
+ def self?.size: -> Integer
36
+
37
+ def initialize: (?P pointer, *layout args) -> void
38
+ def []: (Symbol field_name) -> E
39
+ def []=: (Symbol field_name, E value) -> E
40
+ alias align alignment
41
+ def clear: () -> self
42
+ def layout: () -> StructLayout
43
+ def null?: () -> bool
44
+ def order: (AbstractMemory::order_in order) -> Struct[P, E]
45
+ | () -> AbstractMemory::order_out
46
+ def pointer: () -> P
47
+ alias to_ptr pointer
48
+ def values: () -> Array[E]
49
+
50
+ class InlineArray[out P < AbstractMemory, unchecked out E]
51
+ include Enumerable[E]
52
+ include AbstractMemory::_Size
53
+
54
+ def initialize: (P memory, StructLayout::Field field) -> self
55
+ def []: (Integer index) -> E
56
+ def []=: (Integer index, E value) -> E
57
+ def each: () { (E) -> void } -> self
58
+ def to_a: () -> Array[E]
59
+ def to_ptr: () -> P
60
+ end
61
+
62
+ class ManagedStructConverter[S < ManagedStruct[P, untyped], P < AutoPointer] < StructByReference[S, P]
63
+ def initialize: ...
64
+ def from_native: (Pointer ptr, untyped ctx) -> S
65
+ end
66
+ end
67
+
68
+ class ManagedStruct[out P < AutoPointer, unchecked out E] < Struct[P, E]
69
+ def self.release: (AbstractMemory ptr) -> void
70
+ def initialize: (Pointer pointer) -> self
71
+ end
72
+
73
+ class Union[out P < AbstractMemory, unchecked out E] < Struct[P, E]
74
+ def self.builder: () -> StructLayoutBuilder
75
+ end
76
+ end
@@ -0,0 +1,11 @@
1
+ module FFI
2
+ class StructByReference[S < Struct[P, untyped], P < AbstractMemory]
3
+ include DataConverter[P, S, untyped]
4
+ attr_reader struct_class: Struct[P, untyped]
5
+
6
+ def initialize: (S struct_class) -> void
7
+ def from_native: (P value, untyped ctx) -> S
8
+ def native_type: () -> Type::Builtin
9
+ def to_native: (S? value, untyped ctx) -> P
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ module FFI
2
+ class StructByValue[C < singleton(Struct)] < Type
3
+ def initialize: (C) -> self
4
+ def layout: () -> StructLayout
5
+ def struct_class: () -> C
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ module FFI
2
+ class StructLayout
3
+ #TODO
4
+
5
+ class Field
6
+ #TODO
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module FFI
2
+ class StructLayoutBuilder
3
+ #TODO
4
+ end
5
+ end
data/sig/ffi/type.rbs ADDED
@@ -0,0 +1,39 @@
1
+ module FFI
2
+ class Type
3
+ class Array = ArrayType
4
+ class Function = FunctionType
5
+ class Struct = StructByValue
6
+
7
+ include AbstractMemory::_Size
8
+ def initialize: (Integer | Type value) -> self
9
+ def alignment: () -> Integer
10
+ def inspect: ...
11
+
12
+ class Builtin < Type
13
+ def inspect: ...
14
+ end
15
+
16
+ class Mapped[X < _DataConverter[N, R, C], N, R, C]
17
+ include _DataConverter[N, R, C]
18
+
19
+ def initialize: (X converter) -> self
20
+ def converter: () -> X
21
+ end
22
+ end
23
+
24
+ class ArrayType
25
+ def initialize: (Type component_type, Integer length) -> self
26
+ def element_type: -> Type
27
+ def length: -> Integer
28
+ end
29
+
30
+ class FunctionType < Type
31
+ def initialize:
32
+ (
33
+ ffi_type return_type, Array[ffi_type] param_types,
34
+ ?blocking: boolish, ?convention: Library::convention, ?enums: Enums
35
+ ) -> self
36
+ def param_types: () -> Array[Type]
37
+ def return_type: () -> Type
38
+ end
39
+ end
data/sig/ffi.rbs ADDED
@@ -0,0 +1,26 @@
1
+ module FFI
2
+ type ffi_type = Type | Symbol
3
+ type ffi_auto_type = ffi_type | DataConverter[untyped, untyped, untyped]
4
+ type type_map = Hash[Symbol | DataConverter[untyped, untyped, untyped], Type]
5
+
6
+ class CallbackInfo = FunctionType
7
+ class FunctionInfo = FunctionType
8
+ class NativeLibrary = DynamicLibrary
9
+
10
+ VERSION: String
11
+ TypeDefs: type_map
12
+
13
+ type current_process = Object
14
+ CURRENT_PROCESS: current_process
15
+ USE_THIS_PROCESS_AS_LIBRARY: current_process
16
+
17
+ private def self.custom_typedefs: () -> type_map
18
+ def self.errno: () -> Integer
19
+ def self.errno=: (Integer) -> nil
20
+ def self.find_type: (ffi_auto_type name, ?type_map? type_map) -> Type
21
+ def self.make_shareable: [T] (T obj) -> T
22
+ def self.map_library_name: (_ToS lib) -> String
23
+ def self.type_size: (ffi_auto_type type) -> Integer
24
+ def self.typedef: (ffi_auto_type old, Symbol add) -> Type
25
+ alias self.add_typedef self.typedef
26
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.3
4
+ version: 1.17.0.rc1
5
5
  platform: x86-mingw32
6
6
  authors:
7
7
  - Wayne Meissner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-04 00:00:00.000000000 Z
11
+ date: 2024-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -86,6 +86,7 @@ files:
86
86
  - lib/3.0/ffi_c.so
87
87
  - lib/3.1/ffi_c.so
88
88
  - lib/3.2/ffi_c.so
89
+ - lib/3.3/ffi_c.so
89
90
  - lib/ffi.rb
90
91
  - lib/ffi/abstract_memory.rb
91
92
  - lib/ffi/autopointer.rb
@@ -186,6 +187,23 @@ files:
186
187
  - samples/pty.rb
187
188
  - samples/qsort.rb
188
189
  - samples/qsort_ractor.rb
190
+ - sig/ffi.rbs
191
+ - sig/ffi/abstract_memory.rbs
192
+ - sig/ffi/auto_pointer.rbs
193
+ - sig/ffi/buffer.rbs
194
+ - sig/ffi/data_converter.rbs
195
+ - sig/ffi/dynamic_library.rbs
196
+ - sig/ffi/enum.rbs
197
+ - sig/ffi/function.rbs
198
+ - sig/ffi/library.rbs
199
+ - sig/ffi/native_type.rbs
200
+ - sig/ffi/pointer.rbs
201
+ - sig/ffi/struct.rbs
202
+ - sig/ffi/struct_by_reference.rbs
203
+ - sig/ffi/struct_by_value.rbs
204
+ - sig/ffi/struct_layout.rbs
205
+ - sig/ffi/struct_layout_builder.rbs
206
+ - sig/ffi/type.rbs
189
207
  homepage: https://github.com/ffi/ffi/wiki
190
208
  licenses:
191
209
  - BSD-3-Clause
@@ -209,12 +227,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
227
  version: '2.5'
210
228
  - - "<"
211
229
  - !ruby/object:Gem::Version
212
- version: 3.3.dev
230
+ version: 3.4.dev
213
231
  required_rubygems_version: !ruby/object:Gem::Requirement
214
232
  requirements:
215
- - - ">="
233
+ - - ">"
216
234
  - !ruby/object:Gem::Version
217
- version: '0'
235
+ version: 1.3.1
218
236
  requirements: []
219
237
  rubygems_version: 3.3.26
220
238
  signing_key: