ffi 1.17.3-aarch64-mingw-ucrt
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +498 -0
- data/COPYING +49 -0
- data/Gemfile +26 -0
- data/LICENSE +24 -0
- data/LICENSE.SPECS +22 -0
- data/README.md +138 -0
- data/Rakefile +209 -0
- data/Steepfile +8 -0
- data/ffi.gemspec +41 -0
- data/lib/3.4/ffi_c.so +0 -0
- data/lib/4.0/ffi_c.so +0 -0
- data/lib/ffi/abstract_memory.rb +44 -0
- data/lib/ffi/autopointer.rb +186 -0
- data/lib/ffi/buffer.rb +4 -0
- data/lib/ffi/callback.rb +4 -0
- data/lib/ffi/compat.rb +54 -0
- data/lib/ffi/data_converter.rb +67 -0
- data/lib/ffi/dynamic_library.rb +118 -0
- data/lib/ffi/enum.rb +302 -0
- data/lib/ffi/errno.rb +43 -0
- data/lib/ffi/ffi.rb +109 -0
- data/lib/ffi/function.rb +94 -0
- data/lib/ffi/io.rb +62 -0
- data/lib/ffi/library.rb +592 -0
- data/lib/ffi/library_path.rb +109 -0
- data/lib/ffi/managedstruct.rb +84 -0
- data/lib/ffi/memorypointer.rb +1 -0
- data/lib/ffi/platform/aarch64-darwin/types.conf +130 -0
- data/lib/ffi/platform/aarch64-freebsd/types.conf +128 -0
- data/lib/ffi/platform/aarch64-freebsd12/types.conf +181 -0
- data/lib/ffi/platform/aarch64-linux/types.conf +175 -0
- data/lib/ffi/platform/aarch64-openbsd/types.conf +134 -0
- data/lib/ffi/platform/aarch64-windows/types.conf +52 -0
- data/lib/ffi/platform/arm-freebsd/types.conf +152 -0
- data/lib/ffi/platform/arm-freebsd12/types.conf +152 -0
- data/lib/ffi/platform/arm-linux/types.conf +132 -0
- data/lib/ffi/platform/hppa1.1-linux/types.conf +178 -0
- data/lib/ffi/platform/hppa2.0-linux/types.conf +178 -0
- data/lib/ffi/platform/i386-cygwin/types.conf +3 -0
- data/lib/ffi/platform/i386-darwin/types.conf +100 -0
- data/lib/ffi/platform/i386-freebsd/types.conf +152 -0
- data/lib/ffi/platform/i386-freebsd12/types.conf +152 -0
- data/lib/ffi/platform/i386-gnu/types.conf +107 -0
- data/lib/ffi/platform/i386-linux/types.conf +103 -0
- data/lib/ffi/platform/i386-netbsd/types.conf +126 -0
- data/lib/ffi/platform/i386-openbsd/types.conf +128 -0
- data/lib/ffi/platform/i386-solaris/types.conf +122 -0
- data/lib/ffi/platform/i386-windows/types.conf +52 -0
- data/lib/ffi/platform/ia64-linux/types.conf +104 -0
- data/lib/ffi/platform/loongarch64-linux/types.conf +141 -0
- data/lib/ffi/platform/mips-linux/types.conf +102 -0
- data/lib/ffi/platform/mips64-linux/types.conf +104 -0
- data/lib/ffi/platform/mips64el-linux/types.conf +104 -0
- data/lib/ffi/platform/mipsel-linux/types.conf +102 -0
- data/lib/ffi/platform/mipsisa32r6-linux/types.conf +102 -0
- data/lib/ffi/platform/mipsisa32r6el-linux/types.conf +102 -0
- data/lib/ffi/platform/mipsisa64r6-linux/types.conf +104 -0
- data/lib/ffi/platform/mipsisa64r6el-linux/types.conf +104 -0
- data/lib/ffi/platform/powerpc-aix/types.conf +180 -0
- data/lib/ffi/platform/powerpc-darwin/types.conf +100 -0
- data/lib/ffi/platform/powerpc-linux/types.conf +130 -0
- data/lib/ffi/platform/powerpc-openbsd/types.conf +156 -0
- data/lib/ffi/platform/powerpc64-linux/types.conf +104 -0
- data/lib/ffi/platform/powerpc64le-linux/types.conf +100 -0
- data/lib/ffi/platform/riscv64-linux/types.conf +104 -0
- data/lib/ffi/platform/s390-linux/types.conf +102 -0
- data/lib/ffi/platform/s390x-linux/types.conf +102 -0
- data/lib/ffi/platform/sparc-linux/types.conf +102 -0
- data/lib/ffi/platform/sparc-solaris/types.conf +128 -0
- data/lib/ffi/platform/sparcv9-linux/types.conf +102 -0
- data/lib/ffi/platform/sparcv9-openbsd/types.conf +156 -0
- data/lib/ffi/platform/sparcv9-solaris/types.conf +128 -0
- data/lib/ffi/platform/sw_64-linux/types.conf +141 -0
- data/lib/ffi/platform/x86_64-cygwin/types.conf +3 -0
- data/lib/ffi/platform/x86_64-darwin/types.conf +130 -0
- data/lib/ffi/platform/x86_64-dragonflybsd/types.conf +130 -0
- data/lib/ffi/platform/x86_64-freebsd/types.conf +128 -0
- data/lib/ffi/platform/x86_64-freebsd12/types.conf +158 -0
- data/lib/ffi/platform/x86_64-haiku/types.conf +117 -0
- data/lib/ffi/platform/x86_64-linux/types.conf +132 -0
- data/lib/ffi/platform/x86_64-msys/types.conf +119 -0
- data/lib/ffi/platform/x86_64-netbsd/types.conf +128 -0
- data/lib/ffi/platform/x86_64-openbsd/types.conf +134 -0
- data/lib/ffi/platform/x86_64-solaris/types.conf +122 -0
- data/lib/ffi/platform/x86_64-windows/types.conf +52 -0
- data/lib/ffi/platform.rb +187 -0
- data/lib/ffi/pointer.rb +167 -0
- data/lib/ffi/struct.rb +317 -0
- data/lib/ffi/struct_by_reference.rb +72 -0
- data/lib/ffi/struct_layout.rb +96 -0
- data/lib/ffi/struct_layout_builder.rb +227 -0
- data/lib/ffi/tools/const_generator.rb +232 -0
- data/lib/ffi/tools/generator.rb +105 -0
- data/lib/ffi/tools/generator_task.rb +32 -0
- data/lib/ffi/tools/struct_generator.rb +195 -0
- data/lib/ffi/types.rb +222 -0
- data/lib/ffi/union.rb +43 -0
- data/lib/ffi/variadic.rb +80 -0
- data/lib/ffi/version.rb +3 -0
- data/lib/ffi.rb +27 -0
- data/samples/getlogin.rb +8 -0
- data/samples/getpid.rb +8 -0
- data/samples/gettimeofday.rb +18 -0
- data/samples/hello.rb +8 -0
- data/samples/hello_ractor.rb +19 -0
- data/samples/inotify.rb +60 -0
- data/samples/pty.rb +75 -0
- data/samples/qsort.rb +20 -0
- data/samples/qsort_ractor.rb +36 -0
- data/sig/ffi/abstract_memory.rbs +165 -0
- data/sig/ffi/auto_pointer.rbs +26 -0
- data/sig/ffi/buffer.rbs +18 -0
- data/sig/ffi/data_converter.rbs +10 -0
- data/sig/ffi/dynamic_library.rbs +9 -0
- data/sig/ffi/enum.rbs +38 -0
- data/sig/ffi/errno.rbs +8 -0
- data/sig/ffi/function.rbs +39 -0
- data/sig/ffi/library.rbs +42 -0
- data/sig/ffi/native_type.rbs +86 -0
- data/sig/ffi/platform.rbs +49 -0
- data/sig/ffi/pointer.rbs +42 -0
- data/sig/ffi/struct.rbs +76 -0
- data/sig/ffi/struct_by_reference.rbs +11 -0
- data/sig/ffi/struct_by_value.rbs +7 -0
- data/sig/ffi/struct_layout.rbs +9 -0
- data/sig/ffi/struct_layout_builder.rbs +5 -0
- data/sig/ffi/type.rbs +39 -0
- data/sig/ffi.rbs +29 -0
- metadata +179 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
module FFI
|
|
2
|
+
class Type
|
|
3
|
+
INT8: Builtin
|
|
4
|
+
SCHAR: Builtin
|
|
5
|
+
CHAR: Builtin
|
|
6
|
+
UINT8: Builtin
|
|
7
|
+
UCHAR: Builtin
|
|
8
|
+
INT16: Builtin
|
|
9
|
+
SHORT: Builtin
|
|
10
|
+
SSHORT: Builtin
|
|
11
|
+
UINT16: Builtin
|
|
12
|
+
USHORT: Builtin
|
|
13
|
+
INT32: Builtin
|
|
14
|
+
INT: Builtin
|
|
15
|
+
SINT: Builtin
|
|
16
|
+
UINT32: Builtin
|
|
17
|
+
UINT: Builtin
|
|
18
|
+
INT64: Builtin
|
|
19
|
+
LONG_LONG: Builtin
|
|
20
|
+
SLONG_LONG: Builtin
|
|
21
|
+
UINT64: Builtin
|
|
22
|
+
ULONG_LONG: Builtin
|
|
23
|
+
LONG: Builtin
|
|
24
|
+
SLONG: Builtin
|
|
25
|
+
ULONG: Builtin
|
|
26
|
+
FLOAT32: Builtin
|
|
27
|
+
FLOAT: Builtin
|
|
28
|
+
FLOAT64: Builtin
|
|
29
|
+
DOUBLE: Builtin
|
|
30
|
+
LONGDOUBLE: Builtin
|
|
31
|
+
POINTER: Builtin
|
|
32
|
+
BOOL: Builtin
|
|
33
|
+
STRING: Builtin
|
|
34
|
+
BUFFER_IN: Builtin
|
|
35
|
+
BUFFER_OUT: Builtin
|
|
36
|
+
BUFFER_INOUT: Builtin
|
|
37
|
+
VARARGS: Builtin
|
|
38
|
+
VOID: Builtin
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
module NativeType
|
|
42
|
+
INT8: Type::Builtin
|
|
43
|
+
UINT8: Type::Builtin
|
|
44
|
+
INT16: Type::Builtin
|
|
45
|
+
UINT16: Type::Builtin
|
|
46
|
+
INT32: Type::Builtin
|
|
47
|
+
UINT32: Type::Builtin
|
|
48
|
+
INT64: Type::Builtin
|
|
49
|
+
UINT64: Type::Builtin
|
|
50
|
+
LONG: Type::Builtin
|
|
51
|
+
ULONG: Type::Builtin
|
|
52
|
+
FLOAT32: Type::Builtin
|
|
53
|
+
FLOAT64: Type::Builtin
|
|
54
|
+
LONGDOUBLE: Type::Builtin
|
|
55
|
+
POINTER: Type::Builtin
|
|
56
|
+
BOOL: Type::Builtin
|
|
57
|
+
STRING: Type::Builtin
|
|
58
|
+
BUFFER_IN: Type::Builtin
|
|
59
|
+
BUFFER_OUT: Type::Builtin
|
|
60
|
+
BUFFER_INOUT: Type::Builtin
|
|
61
|
+
VARARGS: Type::Builtin
|
|
62
|
+
VOID: Type::Builtin
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
TYPE_INT8: Type::Builtin
|
|
66
|
+
TYPE_UINT8: Type::Builtin
|
|
67
|
+
TYPE_INT16: Type::Builtin
|
|
68
|
+
TYPE_UINT16: Type::Builtin
|
|
69
|
+
TYPE_INT32: Type::Builtin
|
|
70
|
+
TYPE_UINT32: Type::Builtin
|
|
71
|
+
TYPE_INT64: Type::Builtin
|
|
72
|
+
TYPE_UINT64: Type::Builtin
|
|
73
|
+
TYPE_LONG: Type::Builtin
|
|
74
|
+
TYPE_ULONG: Type::Builtin
|
|
75
|
+
TYPE_FLOAT32: Type::Builtin
|
|
76
|
+
TYPE_FLOAT64: Type::Builtin
|
|
77
|
+
TYPE_LONGDOUBLE: Type::Builtin
|
|
78
|
+
TYPE_POINTER: Type::Builtin
|
|
79
|
+
TYPE_BOOL: Type::Builtin
|
|
80
|
+
TYPE_STRING: Type::Builtin
|
|
81
|
+
TYPE_BUFFER_IN: Type::Builtin
|
|
82
|
+
TYPE_BUFFER_OUT: Type::Builtin
|
|
83
|
+
TYPE_BUFFER_INOUT: Type::Builtin
|
|
84
|
+
TYPE_VARARGS: Type::Builtin
|
|
85
|
+
TYPE_VOID: Type::Builtin
|
|
86
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module FFI
|
|
2
|
+
class PlatformError < LoadError
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
module Platform
|
|
6
|
+
OS: String
|
|
7
|
+
|
|
8
|
+
OSVERSION: Integer
|
|
9
|
+
|
|
10
|
+
CPU: String
|
|
11
|
+
|
|
12
|
+
ARCH: String
|
|
13
|
+
|
|
14
|
+
IS_GNU: bool
|
|
15
|
+
IS_LINUX: bool
|
|
16
|
+
IS_MAC: bool
|
|
17
|
+
IS_FREEBSD: bool
|
|
18
|
+
IS_NETBSD: bool
|
|
19
|
+
IS_OPENBSD: bool
|
|
20
|
+
IS_DRAGONFLYBSD: bool
|
|
21
|
+
IS_SOLARIS: bool
|
|
22
|
+
IS_WINDOWS: bool
|
|
23
|
+
IS_BSD: bool
|
|
24
|
+
|
|
25
|
+
NAME: String
|
|
26
|
+
|
|
27
|
+
CONF_DIR: String
|
|
28
|
+
|
|
29
|
+
LIBPREFIX: String
|
|
30
|
+
|
|
31
|
+
LIBSUFFIX: String
|
|
32
|
+
|
|
33
|
+
LIBC: String
|
|
34
|
+
|
|
35
|
+
LITTLE_ENDIAN: Integer
|
|
36
|
+
|
|
37
|
+
BIG_ENDIAN: Integer
|
|
38
|
+
|
|
39
|
+
def self.bsd?: () -> bool
|
|
40
|
+
def self.windows?: () -> bool
|
|
41
|
+
def self.mac?: () -> bool
|
|
42
|
+
def self.solaris?: () -> bool
|
|
43
|
+
def self.unix?: () -> bool
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
|
|
47
|
+
def self.is_os: (String os) -> bool
|
|
48
|
+
end
|
|
49
|
+
end
|
data/sig/ffi/pointer.rbs
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module FFI
|
|
2
|
+
type pointer = Pointer::_ToPtr? | Integer
|
|
3
|
+
class Pointer < AbstractMemory
|
|
4
|
+
interface _ToPtr
|
|
5
|
+
def to_ptr: () -> Pointer
|
|
6
|
+
end
|
|
7
|
+
include _ToPtr
|
|
8
|
+
|
|
9
|
+
SIZE: Integer
|
|
10
|
+
NULL: Pointer
|
|
11
|
+
def self.size: () -> Integer
|
|
12
|
+
|
|
13
|
+
def initialize: (?AbstractMemory::type_size type, (Pointer | Integer) address) -> void
|
|
14
|
+
def +: (Integer offset) -> Pointer
|
|
15
|
+
def ==: (Pointer? other) -> bool
|
|
16
|
+
def address: () -> Integer
|
|
17
|
+
alias to_i address
|
|
18
|
+
def autorelease?: () -> bool
|
|
19
|
+
def autorelease=: (boolish autorelease) -> boolish
|
|
20
|
+
def free: () -> self
|
|
21
|
+
def inspect: ...
|
|
22
|
+
def null?: () -> bool
|
|
23
|
+
def order: () -> AbstractMemory::order_out
|
|
24
|
+
| (AbstractMemory::order_in) -> Pointer
|
|
25
|
+
def read: (ffi_type type) -> top
|
|
26
|
+
def read_array_of_type: (ffi_auto_type type, Symbol reader, Integer length) -> Array[top]
|
|
27
|
+
def read_string: (?Integer? len) -> String
|
|
28
|
+
def read_string_length: (Integer len) -> String
|
|
29
|
+
def read_string_to_null: () -> String
|
|
30
|
+
def slice: (Integer offset, Integer length) -> Pointer
|
|
31
|
+
def type_size: () -> Integer
|
|
32
|
+
def write: (ffi_type type, top value) -> nil
|
|
33
|
+
def write_array_of_type: (ffi_auto_type type, Symbol writer, Array[top]) -> self
|
|
34
|
+
def write_string: (String str, ?Integer? len) -> self
|
|
35
|
+
def write_string_length: (String str, Integer len) -> self
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
class MemoryPointer < Pointer
|
|
39
|
+
def initialize: (AbstractMemory::type_size size, ?Integer count, ?boolish clear) -> self
|
|
40
|
+
def self.from_string: (String s) -> instance
|
|
41
|
+
end
|
|
42
|
+
end
|
data/sig/ffi/struct.rbs
ADDED
|
@@ -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, Struct[AbstractMemory, untyped], 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, ManagedStruct[AutoPointer, untyped], 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: (?ffi_auto_type? type) -> Type
|
|
9
|
+
def to_native: (S? value, untyped ctx) -> P
|
|
10
|
+
end
|
|
11
|
+
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,29 @@
|
|
|
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
|
+
class NotFoundError < LoadError
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private def self.custom_typedefs: () -> type_map
|
|
21
|
+
def self.errno: () -> Integer
|
|
22
|
+
def self.errno=: (Integer) -> Integer
|
|
23
|
+
def self.find_type: (ffi_auto_type name, ?type_map? type_map) -> Type
|
|
24
|
+
def self.make_shareable: [T] (T obj) -> T
|
|
25
|
+
def self.map_library_name: (_ToS lib) -> String
|
|
26
|
+
def self.type_size: (ffi_auto_type type) -> Integer
|
|
27
|
+
def self.typedef: (ffi_auto_type old, Symbol add) -> Type
|
|
28
|
+
alias self.add_typedef self.typedef
|
|
29
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: ffi
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.17.3
|
|
5
|
+
platform: aarch64-mingw-ucrt
|
|
6
|
+
authors:
|
|
7
|
+
- Wayne Meissner
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies: []
|
|
12
|
+
description: Ruby FFI library
|
|
13
|
+
email: wmeissner@gmail.com
|
|
14
|
+
executables: []
|
|
15
|
+
extensions: []
|
|
16
|
+
extra_rdoc_files: []
|
|
17
|
+
files:
|
|
18
|
+
- CHANGELOG.md
|
|
19
|
+
- COPYING
|
|
20
|
+
- Gemfile
|
|
21
|
+
- LICENSE
|
|
22
|
+
- LICENSE.SPECS
|
|
23
|
+
- README.md
|
|
24
|
+
- Rakefile
|
|
25
|
+
- Steepfile
|
|
26
|
+
- ffi.gemspec
|
|
27
|
+
- lib/3.4/ffi_c.so
|
|
28
|
+
- lib/4.0/ffi_c.so
|
|
29
|
+
- lib/ffi.rb
|
|
30
|
+
- lib/ffi/abstract_memory.rb
|
|
31
|
+
- lib/ffi/autopointer.rb
|
|
32
|
+
- lib/ffi/buffer.rb
|
|
33
|
+
- lib/ffi/callback.rb
|
|
34
|
+
- lib/ffi/compat.rb
|
|
35
|
+
- lib/ffi/data_converter.rb
|
|
36
|
+
- lib/ffi/dynamic_library.rb
|
|
37
|
+
- lib/ffi/enum.rb
|
|
38
|
+
- lib/ffi/errno.rb
|
|
39
|
+
- lib/ffi/ffi.rb
|
|
40
|
+
- lib/ffi/function.rb
|
|
41
|
+
- lib/ffi/io.rb
|
|
42
|
+
- lib/ffi/library.rb
|
|
43
|
+
- lib/ffi/library_path.rb
|
|
44
|
+
- lib/ffi/managedstruct.rb
|
|
45
|
+
- lib/ffi/memorypointer.rb
|
|
46
|
+
- lib/ffi/platform.rb
|
|
47
|
+
- lib/ffi/platform/aarch64-darwin/types.conf
|
|
48
|
+
- lib/ffi/platform/aarch64-freebsd/types.conf
|
|
49
|
+
- lib/ffi/platform/aarch64-freebsd12/types.conf
|
|
50
|
+
- lib/ffi/platform/aarch64-linux/types.conf
|
|
51
|
+
- lib/ffi/platform/aarch64-openbsd/types.conf
|
|
52
|
+
- lib/ffi/platform/aarch64-windows/types.conf
|
|
53
|
+
- lib/ffi/platform/arm-freebsd/types.conf
|
|
54
|
+
- lib/ffi/platform/arm-freebsd12/types.conf
|
|
55
|
+
- lib/ffi/platform/arm-linux/types.conf
|
|
56
|
+
- lib/ffi/platform/hppa1.1-linux/types.conf
|
|
57
|
+
- lib/ffi/platform/hppa2.0-linux/types.conf
|
|
58
|
+
- lib/ffi/platform/i386-cygwin/types.conf
|
|
59
|
+
- lib/ffi/platform/i386-darwin/types.conf
|
|
60
|
+
- lib/ffi/platform/i386-freebsd/types.conf
|
|
61
|
+
- lib/ffi/platform/i386-freebsd12/types.conf
|
|
62
|
+
- lib/ffi/platform/i386-gnu/types.conf
|
|
63
|
+
- lib/ffi/platform/i386-linux/types.conf
|
|
64
|
+
- lib/ffi/platform/i386-netbsd/types.conf
|
|
65
|
+
- lib/ffi/platform/i386-openbsd/types.conf
|
|
66
|
+
- lib/ffi/platform/i386-solaris/types.conf
|
|
67
|
+
- lib/ffi/platform/i386-windows/types.conf
|
|
68
|
+
- lib/ffi/platform/ia64-linux/types.conf
|
|
69
|
+
- lib/ffi/platform/loongarch64-linux/types.conf
|
|
70
|
+
- lib/ffi/platform/mips-linux/types.conf
|
|
71
|
+
- lib/ffi/platform/mips64-linux/types.conf
|
|
72
|
+
- lib/ffi/platform/mips64el-linux/types.conf
|
|
73
|
+
- lib/ffi/platform/mipsel-linux/types.conf
|
|
74
|
+
- lib/ffi/platform/mipsisa32r6-linux/types.conf
|
|
75
|
+
- lib/ffi/platform/mipsisa32r6el-linux/types.conf
|
|
76
|
+
- lib/ffi/platform/mipsisa64r6-linux/types.conf
|
|
77
|
+
- lib/ffi/platform/mipsisa64r6el-linux/types.conf
|
|
78
|
+
- lib/ffi/platform/powerpc-aix/types.conf
|
|
79
|
+
- lib/ffi/platform/powerpc-darwin/types.conf
|
|
80
|
+
- lib/ffi/platform/powerpc-linux/types.conf
|
|
81
|
+
- lib/ffi/platform/powerpc-openbsd/types.conf
|
|
82
|
+
- lib/ffi/platform/powerpc64-linux/types.conf
|
|
83
|
+
- lib/ffi/platform/powerpc64le-linux/types.conf
|
|
84
|
+
- lib/ffi/platform/riscv64-linux/types.conf
|
|
85
|
+
- lib/ffi/platform/s390-linux/types.conf
|
|
86
|
+
- lib/ffi/platform/s390x-linux/types.conf
|
|
87
|
+
- lib/ffi/platform/sparc-linux/types.conf
|
|
88
|
+
- lib/ffi/platform/sparc-solaris/types.conf
|
|
89
|
+
- lib/ffi/platform/sparcv9-linux/types.conf
|
|
90
|
+
- lib/ffi/platform/sparcv9-openbsd/types.conf
|
|
91
|
+
- lib/ffi/platform/sparcv9-solaris/types.conf
|
|
92
|
+
- lib/ffi/platform/sw_64-linux/types.conf
|
|
93
|
+
- lib/ffi/platform/x86_64-cygwin/types.conf
|
|
94
|
+
- lib/ffi/platform/x86_64-darwin/types.conf
|
|
95
|
+
- lib/ffi/platform/x86_64-dragonflybsd/types.conf
|
|
96
|
+
- lib/ffi/platform/x86_64-freebsd/types.conf
|
|
97
|
+
- lib/ffi/platform/x86_64-freebsd12/types.conf
|
|
98
|
+
- lib/ffi/platform/x86_64-haiku/types.conf
|
|
99
|
+
- lib/ffi/platform/x86_64-linux/types.conf
|
|
100
|
+
- lib/ffi/platform/x86_64-msys/types.conf
|
|
101
|
+
- lib/ffi/platform/x86_64-netbsd/types.conf
|
|
102
|
+
- lib/ffi/platform/x86_64-openbsd/types.conf
|
|
103
|
+
- lib/ffi/platform/x86_64-solaris/types.conf
|
|
104
|
+
- lib/ffi/platform/x86_64-windows/types.conf
|
|
105
|
+
- lib/ffi/pointer.rb
|
|
106
|
+
- lib/ffi/struct.rb
|
|
107
|
+
- lib/ffi/struct_by_reference.rb
|
|
108
|
+
- lib/ffi/struct_layout.rb
|
|
109
|
+
- lib/ffi/struct_layout_builder.rb
|
|
110
|
+
- lib/ffi/tools/const_generator.rb
|
|
111
|
+
- lib/ffi/tools/generator.rb
|
|
112
|
+
- lib/ffi/tools/generator_task.rb
|
|
113
|
+
- lib/ffi/tools/struct_generator.rb
|
|
114
|
+
- lib/ffi/types.rb
|
|
115
|
+
- lib/ffi/union.rb
|
|
116
|
+
- lib/ffi/variadic.rb
|
|
117
|
+
- lib/ffi/version.rb
|
|
118
|
+
- samples/getlogin.rb
|
|
119
|
+
- samples/getpid.rb
|
|
120
|
+
- samples/gettimeofday.rb
|
|
121
|
+
- samples/hello.rb
|
|
122
|
+
- samples/hello_ractor.rb
|
|
123
|
+
- samples/inotify.rb
|
|
124
|
+
- samples/pty.rb
|
|
125
|
+
- samples/qsort.rb
|
|
126
|
+
- samples/qsort_ractor.rb
|
|
127
|
+
- sig/ffi.rbs
|
|
128
|
+
- sig/ffi/abstract_memory.rbs
|
|
129
|
+
- sig/ffi/auto_pointer.rbs
|
|
130
|
+
- sig/ffi/buffer.rbs
|
|
131
|
+
- sig/ffi/data_converter.rbs
|
|
132
|
+
- sig/ffi/dynamic_library.rbs
|
|
133
|
+
- sig/ffi/enum.rbs
|
|
134
|
+
- sig/ffi/errno.rbs
|
|
135
|
+
- sig/ffi/function.rbs
|
|
136
|
+
- sig/ffi/library.rbs
|
|
137
|
+
- sig/ffi/native_type.rbs
|
|
138
|
+
- sig/ffi/platform.rbs
|
|
139
|
+
- sig/ffi/pointer.rbs
|
|
140
|
+
- sig/ffi/struct.rbs
|
|
141
|
+
- sig/ffi/struct_by_reference.rbs
|
|
142
|
+
- sig/ffi/struct_by_value.rbs
|
|
143
|
+
- sig/ffi/struct_layout.rbs
|
|
144
|
+
- sig/ffi/struct_layout_builder.rbs
|
|
145
|
+
- sig/ffi/type.rbs
|
|
146
|
+
homepage: https://github.com/ffi/ffi/wiki
|
|
147
|
+
licenses:
|
|
148
|
+
- BSD-3-Clause
|
|
149
|
+
metadata:
|
|
150
|
+
bug_tracker_uri: https://github.com/ffi/ffi/issues
|
|
151
|
+
changelog_uri: https://github.com/ffi/ffi/blob/master/CHANGELOG.md
|
|
152
|
+
documentation_uri: https://github.com/ffi/ffi/wiki
|
|
153
|
+
wiki_uri: https://github.com/ffi/ffi/wiki
|
|
154
|
+
source_code_uri: https://github.com/ffi/ffi/
|
|
155
|
+
mailing_list_uri: http://groups.google.com/group/ruby-ffi
|
|
156
|
+
rubygems_mfa_required: 'true'
|
|
157
|
+
rdoc_options:
|
|
158
|
+
- "--exclude=ext/ffi_c/.*\\.o$"
|
|
159
|
+
- "--exclude=ffi_c\\.(bundle|so)$"
|
|
160
|
+
require_paths:
|
|
161
|
+
- lib
|
|
162
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - ">="
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '3.4'
|
|
167
|
+
- - "<"
|
|
168
|
+
- !ruby/object:Gem::Version
|
|
169
|
+
version: 4.1.dev
|
|
170
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
171
|
+
requirements:
|
|
172
|
+
- - ">="
|
|
173
|
+
- !ruby/object:Gem::Version
|
|
174
|
+
version: '0'
|
|
175
|
+
requirements: []
|
|
176
|
+
rubygems_version: 4.0.3
|
|
177
|
+
specification_version: 4
|
|
178
|
+
summary: Ruby FFI
|
|
179
|
+
test_files: []
|