ffi 1.15.4.pre1-java → 1.16.0-java
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +79 -0
- data/Gemfile +1 -1
- data/README.md +3 -2
- data/Rakefile +28 -11
- data/ffi.gemspec +2 -3
- data/lib/ffi/autopointer.rb +7 -22
- data/lib/ffi/compat.rb +43 -0
- data/lib/ffi/data_converter.rb +2 -2
- data/lib/ffi/dynamic_library.rb +89 -0
- data/lib/ffi/enum.rb +18 -11
- data/lib/ffi/ffi.rb +3 -0
- data/lib/ffi/function.rb +71 -0
- data/lib/ffi/library.rb +56 -72
- data/lib/ffi/library_path.rb +109 -0
- data/lib/ffi/managedstruct.rb +1 -1
- data/lib/ffi/platform/aarch64-windows/types.conf +52 -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/loongarch64-linux/types.conf +141 -0
- data/lib/ffi/platform/sw_64-linux/types.conf +141 -0
- data/lib/ffi/platform.rb +15 -13
- data/lib/ffi/struct.rb +2 -1
- data/lib/ffi/struct_layout.rb +1 -1
- data/lib/ffi/struct_layout_builder.rb +1 -1
- data/lib/ffi/tools/const_generator.rb +5 -4
- data/lib/ffi/types.rb +30 -5
- data/lib/ffi/variadic.rb +19 -8
- data/lib/ffi/version.rb +1 -1
- data/rakelib/ffi_gem_helper.rb +1 -1
- data.tar.gz.sig +2 -2
- metadata +43 -42
- metadata.gz.sig +0 -0
- /data/lib/ffi/platform/{sparc64-linux → sparcv9-linux}/types.conf +0 -0
data/lib/ffi/library.rb
CHANGED
@@ -28,10 +28,12 @@
|
|
28
28
|
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
29
29
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
|
30
30
|
|
31
|
+
require 'ffi/dynamic_library'
|
32
|
+
|
31
33
|
module FFI
|
32
|
-
CURRENT_PROCESS = USE_THIS_PROCESS_AS_LIBRARY = Object.new
|
34
|
+
CURRENT_PROCESS = USE_THIS_PROCESS_AS_LIBRARY = FFI.make_shareable(Object.new)
|
33
35
|
|
34
|
-
# @param [
|
36
|
+
# @param [String, FFI::LibraryPath] lib library name or LibraryPath object
|
35
37
|
# @return [String] library name formatted for current platform
|
36
38
|
# Transform a generic library name to a platform library name
|
37
39
|
# @example
|
@@ -43,15 +45,7 @@ module FFI
|
|
43
45
|
# FFI.map_library_name 'jpeg' # -> "jpeg.dll"
|
44
46
|
def self.map_library_name(lib)
|
45
47
|
# Mangle the library name to reflect the native library naming conventions
|
46
|
-
lib
|
47
|
-
|
48
|
-
if lib && File.basename(lib) == lib
|
49
|
-
lib = Platform::LIBPREFIX + lib unless lib =~ /^#{Platform::LIBPREFIX}/
|
50
|
-
r = Platform::IS_WINDOWS || Platform::IS_MAC ? "\\.#{Platform::LIBSUFFIX}$" : "\\.so($|\\.[1234567890]+)"
|
51
|
-
lib += ".#{Platform::LIBSUFFIX}" unless lib =~ /#{r}/
|
52
|
-
end
|
53
|
-
|
54
|
-
lib
|
48
|
+
LibraryPath.wrap(lib).to_s
|
55
49
|
end
|
56
50
|
|
57
51
|
# Exception raised when a function is not found in libraries
|
@@ -84,7 +78,7 @@ module FFI
|
|
84
78
|
# @raise {RuntimeError} if +mod+ is not a Module
|
85
79
|
# Test if extended object is a Module. If not, raise RuntimeError.
|
86
80
|
def self.extended(mod)
|
87
|
-
raise RuntimeError.new("must only be extended by module") unless mod.kind_of?(Module)
|
81
|
+
raise RuntimeError.new("must only be extended by module") unless mod.kind_of?(::Module)
|
88
82
|
end
|
89
83
|
|
90
84
|
|
@@ -95,62 +89,11 @@ module FFI
|
|
95
89
|
def ffi_lib(*names)
|
96
90
|
raise LoadError.new("library names list must not be empty") if names.empty?
|
97
91
|
|
98
|
-
lib_flags = defined?(@ffi_lib_flags)
|
99
|
-
ffi_libs = names.map do |name|
|
92
|
+
lib_flags = defined?(@ffi_lib_flags) && @ffi_lib_flags
|
100
93
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
else
|
105
|
-
libnames = (name.is_a?(::Array) ? name : [ name ]).map(&:to_s).map { |n| [ n, FFI.map_library_name(n) ].uniq }.flatten.compact
|
106
|
-
lib = nil
|
107
|
-
errors = {}
|
108
|
-
|
109
|
-
libnames.each do |libname|
|
110
|
-
begin
|
111
|
-
orig = libname
|
112
|
-
lib = FFI::DynamicLibrary.open(libname, lib_flags)
|
113
|
-
break if lib
|
114
|
-
|
115
|
-
rescue Exception => ex
|
116
|
-
ldscript = false
|
117
|
-
if ex.message =~ /(([^ \t()])+\.so([^ \t:()])*):([ \t])*(invalid ELF header|file too short|invalid file format)/
|
118
|
-
if File.binread($1) =~ /(?:GROUP|INPUT) *\( *([^ \)]+)/
|
119
|
-
libname = $1
|
120
|
-
ldscript = true
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
if ldscript
|
125
|
-
retry
|
126
|
-
else
|
127
|
-
# TODO better library lookup logic
|
128
|
-
unless libname.start_with?("/") || FFI::Platform.windows?
|
129
|
-
path = ['/usr/lib/','/usr/local/lib/','/opt/local/lib/', '/opt/homebrew/lib/'].find do |pth|
|
130
|
-
File.exist?(pth + libname)
|
131
|
-
end
|
132
|
-
if path
|
133
|
-
libname = path + libname
|
134
|
-
retry
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
libr = (orig == libname ? orig : "#{orig} #{libname}")
|
139
|
-
errors[libr] = ex
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
if lib.nil?
|
145
|
-
raise LoadError.new(errors.values.join(".\n"))
|
146
|
-
end
|
147
|
-
|
148
|
-
# return the found lib
|
149
|
-
lib
|
150
|
-
end
|
94
|
+
@ffi_libs = names.map do |name|
|
95
|
+
FFI::DynamicLibrary.send(:load_library, name, lib_flags)
|
151
96
|
end
|
152
|
-
|
153
|
-
@ffi_libs = ffi_libs
|
154
97
|
end
|
155
98
|
|
156
99
|
# Set the calling convention for {#attach_function} and {#callback}
|
@@ -258,7 +201,7 @@ module FFI
|
|
258
201
|
end
|
259
202
|
raise LoadError unless function
|
260
203
|
|
261
|
-
invokers << if arg_types
|
204
|
+
invokers << if arg_types[-1] == FFI::NativeType::VARARGS
|
262
205
|
VariadicInvoker.new(function, arg_types, find_type(ret_type), options)
|
263
206
|
|
264
207
|
else
|
@@ -330,6 +273,7 @@ module FFI
|
|
330
273
|
# Attach C variable +cname+ to this module.
|
331
274
|
def attach_variable(mname, a1, a2 = nil)
|
332
275
|
cname, type = a2 ? [ a1, a2 ] : [ mname.to_s, a1 ]
|
276
|
+
mname = mname.to_sym
|
333
277
|
address = nil
|
334
278
|
ffi_libraries.each do |lib|
|
335
279
|
begin
|
@@ -344,9 +288,10 @@ module FFI
|
|
344
288
|
# If it is a global struct, just attach directly to the pointer
|
345
289
|
s = s = type.new(address) # Assigning twice to suppress unused variable warning
|
346
290
|
self.module_eval <<-code, __FILE__, __LINE__
|
347
|
-
|
291
|
+
@ffi_gsvars = {} unless defined?(@ffi_gsvars)
|
292
|
+
@ffi_gsvars[#{mname.inspect}] = s
|
348
293
|
def self.#{mname}
|
349
|
-
|
294
|
+
@ffi_gsvars[#{mname.inspect}]
|
350
295
|
end
|
351
296
|
code
|
352
297
|
|
@@ -358,12 +303,13 @@ module FFI
|
|
358
303
|
# Attach to this module as mname/mname=
|
359
304
|
#
|
360
305
|
self.module_eval <<-code, __FILE__, __LINE__
|
361
|
-
|
306
|
+
@ffi_gvars = {} unless defined?(@ffi_gvars)
|
307
|
+
@ffi_gvars[#{mname.inspect}] = s
|
362
308
|
def self.#{mname}
|
363
|
-
|
309
|
+
@ffi_gvars[#{mname.inspect}][:gvar]
|
364
310
|
end
|
365
311
|
def self.#{mname}=(value)
|
366
|
-
|
312
|
+
@ffi_gvars[#{mname.inspect}][:gvar] = value
|
367
313
|
end
|
368
314
|
code
|
369
315
|
|
@@ -588,5 +534,43 @@ module FFI
|
|
588
534
|
|
589
535
|
end || FFI.find_type(t)
|
590
536
|
end
|
537
|
+
|
538
|
+
# Retrieve all attached functions and their function signature
|
539
|
+
#
|
540
|
+
# This method returns a Hash of method names of attached functions connected by #attach_function and the corresponding function type.
|
541
|
+
# The function type responds to #return_type and #param_types which return the FFI types of the function signature.
|
542
|
+
#
|
543
|
+
# @return [Hash< Symbol => [FFI::Function, FFI::VariadicInvoker] >]
|
544
|
+
def attached_functions
|
545
|
+
@ffi_functions || {}
|
546
|
+
end
|
547
|
+
|
548
|
+
# Retrieve all attached variables and their type
|
549
|
+
#
|
550
|
+
# This method returns a Hash of variable names and the corresponding type or variables connected by #attach_variable .
|
551
|
+
#
|
552
|
+
# @return [Hash< Symbol => ffi_type >]
|
553
|
+
def attached_variables
|
554
|
+
(
|
555
|
+
(@ffi_gsvars || {}).map do |name, gvar|
|
556
|
+
[name, gvar.class]
|
557
|
+
end +
|
558
|
+
(@ffi_gvars || {}).map do |name, gvar|
|
559
|
+
[name, gvar.layout[:gvar].type]
|
560
|
+
end
|
561
|
+
).to_h
|
562
|
+
end
|
563
|
+
|
564
|
+
# Freeze all definitions of the module
|
565
|
+
#
|
566
|
+
# This freezes the module's definitions, so that it can be used in a Ractor.
|
567
|
+
# No further methods or variables can be attached and no further enums or typedefs can be created in this module afterwards.
|
568
|
+
def freeze
|
569
|
+
instance_variables.each do |name|
|
570
|
+
var = instance_variable_get(name)
|
571
|
+
FFI.make_shareable(var)
|
572
|
+
end
|
573
|
+
nil
|
574
|
+
end
|
591
575
|
end
|
592
576
|
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (C) 2023 Lars Kanis
|
3
|
+
#
|
4
|
+
# This file is part of ruby-ffi.
|
5
|
+
#
|
6
|
+
# All rights reserved.
|
7
|
+
#
|
8
|
+
# Redistribution and use in source and binary forms, with or without
|
9
|
+
# modification, are permitted provided that the following conditions are met:
|
10
|
+
#
|
11
|
+
# * Redistributions of source code must retain the above copyright notice, this
|
12
|
+
# list of conditions and the following disclaimer.
|
13
|
+
# * Redistributions in binary form must reproduce the above copyright notice
|
14
|
+
# this list of conditions and the following disclaimer in the documentation
|
15
|
+
# and/or other materials provided with the distribution.
|
16
|
+
# * Neither the name of the Ruby FFI project nor the names of its contributors
|
17
|
+
# may be used to endorse or promote products derived from this software
|
18
|
+
# without specific prior written permission.
|
19
|
+
#
|
20
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
21
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
22
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
23
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
24
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
25
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
26
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
27
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
28
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
29
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
|
30
|
+
|
31
|
+
module FFI
|
32
|
+
# Transform a generic library name and ABI number to a platform library name
|
33
|
+
#
|
34
|
+
# Example:
|
35
|
+
# module LibVips
|
36
|
+
# extend FFI::Library
|
37
|
+
# ffi_lib LibraryPath.new("vips", abi_number: 42)
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# This translates to the following library file names:
|
41
|
+
# libvips-42.dll on Windows
|
42
|
+
# libvips.so.42 on Linux
|
43
|
+
# libvips.42.dylib on Macos
|
44
|
+
#
|
45
|
+
# See https://packaging.ubuntu.com/html/libraries.html for more information about library naming.
|
46
|
+
class LibraryPath
|
47
|
+
attr_reader :name
|
48
|
+
attr_reader :abi_number
|
49
|
+
attr_reader :root
|
50
|
+
|
51
|
+
# Build a new library path
|
52
|
+
#
|
53
|
+
# * <tt>name</tt> : The name of the library without file prefix or suffix.
|
54
|
+
# * <tt>abi_number</tt> : The ABI number of the library.
|
55
|
+
# * <tt>root</tt> : An optional base path prepended to the library name.
|
56
|
+
def initialize(name, abi_number: nil, root: nil)
|
57
|
+
@name = name
|
58
|
+
@abi_number = abi_number
|
59
|
+
@root = root
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.wrap(value)
|
63
|
+
# We allow instances of LibraryPath to pass through transparently:
|
64
|
+
return value if value.is_a?(self)
|
65
|
+
|
66
|
+
# We special case a library named 'c' to be the standard C library:
|
67
|
+
return Library::LIBC if value == 'c'
|
68
|
+
|
69
|
+
# If provided a relative file name we convert it into a library path:
|
70
|
+
if value && File.basename(value) == value
|
71
|
+
return self.new(value)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Otherwise, we assume it's a full path to a library:
|
75
|
+
return value
|
76
|
+
end
|
77
|
+
|
78
|
+
def full_name
|
79
|
+
# If the abi_number is given, we format it specifically according to platform rules:
|
80
|
+
if abi_number
|
81
|
+
if Platform.windows?
|
82
|
+
"#{Platform::LIBPREFIX}#{name}-#{abi_number}.#{Platform::LIBSUFFIX}"
|
83
|
+
elsif Platform.mac?
|
84
|
+
"#{Platform::LIBPREFIX}#{name}.#{abi_number}.#{Platform::LIBSUFFIX}"
|
85
|
+
else # Linux? BSD? etc.
|
86
|
+
"#{Platform::LIBPREFIX}#{name}.#{Platform::LIBSUFFIX}.#{abi_number}"
|
87
|
+
end
|
88
|
+
else
|
89
|
+
# Otherwise we just add prefix and suffix:
|
90
|
+
lib = name
|
91
|
+
# Add library prefix if missing
|
92
|
+
lib = Platform::LIBPREFIX + lib unless lib =~ /^#{Platform::LIBPREFIX}/
|
93
|
+
# Add library extension if missing
|
94
|
+
r = Platform.windows? || Platform.mac? ? "\\.#{Platform::LIBSUFFIX}$" : "\\.so($|\\.[1234567890]+)"
|
95
|
+
lib += ".#{Platform::LIBSUFFIX}" unless lib =~ /#{r}/
|
96
|
+
lib
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def to_s
|
101
|
+
if root
|
102
|
+
# If the root path is given, we generate the full path:
|
103
|
+
File.join(root, full_name)
|
104
|
+
else
|
105
|
+
full_name
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
data/lib/ffi/managedstruct.rb
CHANGED
@@ -75,7 +75,7 @@ module FFI
|
|
75
75
|
# @overload initialize
|
76
76
|
# A new instance of FFI::ManagedStruct.
|
77
77
|
def initialize(pointer=nil)
|
78
|
-
raise NoMethodError, "release() not implemented for class #{self}" unless self.class.respond_to?
|
78
|
+
raise NoMethodError, "release() not implemented for class #{self}" unless self.class.respond_to?(:release, true)
|
79
79
|
raise ArgumentError, "Must supply a pointer to memory for the Struct" unless pointer
|
80
80
|
super AutoPointer.new(pointer, self.class.method(:release))
|
81
81
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
rbx.platform.typedef.__time32_t = long
|
2
|
+
rbx.platform.typedef.__time64_t = long_long
|
3
|
+
rbx.platform.typedef._dev_t = uint
|
4
|
+
rbx.platform.typedef._ino_t = ushort
|
5
|
+
rbx.platform.typedef._mode_t = ushort
|
6
|
+
rbx.platform.typedef._off64_t = long_long
|
7
|
+
rbx.platform.typedef._off_t = long
|
8
|
+
rbx.platform.typedef._pid_t = long_long
|
9
|
+
rbx.platform.typedef._sigset_t = ulong_long
|
10
|
+
rbx.platform.typedef.dev_t = uint
|
11
|
+
rbx.platform.typedef.errno_t = int
|
12
|
+
rbx.platform.typedef.ino_t = ushort
|
13
|
+
rbx.platform.typedef.int16_t = short
|
14
|
+
rbx.platform.typedef.int32_t = int
|
15
|
+
rbx.platform.typedef.int64_t = long_long
|
16
|
+
rbx.platform.typedef.int8_t = char
|
17
|
+
rbx.platform.typedef.int_fast16_t = short
|
18
|
+
rbx.platform.typedef.int_fast32_t = int
|
19
|
+
rbx.platform.typedef.int_fast64_t = long_long
|
20
|
+
rbx.platform.typedef.int_fast8_t = char
|
21
|
+
rbx.platform.typedef.int_least16_t = short
|
22
|
+
rbx.platform.typedef.int_least32_t = int
|
23
|
+
rbx.platform.typedef.int_least64_t = long_long
|
24
|
+
rbx.platform.typedef.int_least8_t = char
|
25
|
+
rbx.platform.typedef.intmax_t = long_long
|
26
|
+
rbx.platform.typedef.intptr_t = long_long
|
27
|
+
rbx.platform.typedef.mode_t = ushort
|
28
|
+
rbx.platform.typedef.off32_t = long
|
29
|
+
rbx.platform.typedef.off64_t = long_long
|
30
|
+
rbx.platform.typedef.off_t = long_long
|
31
|
+
rbx.platform.typedef.pid_t = long_long
|
32
|
+
rbx.platform.typedef.ptrdiff_t = long_long
|
33
|
+
rbx.platform.typedef.rsize_t = ulong_long
|
34
|
+
rbx.platform.typedef.size_t = ulong_long
|
35
|
+
rbx.platform.typedef.ssize_t = long_long
|
36
|
+
rbx.platform.typedef.time_t = long_long
|
37
|
+
rbx.platform.typedef.uint16_t = ushort
|
38
|
+
rbx.platform.typedef.uint64_t = ulong_long
|
39
|
+
rbx.platform.typedef.uint8_t = uchar
|
40
|
+
rbx.platform.typedef.uint_fast16_t = ushort
|
41
|
+
rbx.platform.typedef.uint_fast32_t = uint
|
42
|
+
rbx.platform.typedef.uint_fast64_t = ulong_long
|
43
|
+
rbx.platform.typedef.uint_fast8_t = uchar
|
44
|
+
rbx.platform.typedef.uint_least16_t = ushort
|
45
|
+
rbx.platform.typedef.uint_least64_t = ulong_long
|
46
|
+
rbx.platform.typedef.uint_least8_t = uchar
|
47
|
+
rbx.platform.typedef.uintmax_t = ulong_long
|
48
|
+
rbx.platform.typedef.uintptr_t = ulong_long
|
49
|
+
rbx.platform.typedef.useconds_t = uint
|
50
|
+
rbx.platform.typedef.wchar_t = ushort
|
51
|
+
rbx.platform.typedef.wctype_t = ushort
|
52
|
+
rbx.platform.typedef.wint_t = ushort
|
@@ -0,0 +1,178 @@
|
|
1
|
+
rbx.platform.typedef.*__caddr_t = char
|
2
|
+
rbx.platform.typedef.__blkcnt64_t = long_long
|
3
|
+
rbx.platform.typedef.__blkcnt_t = long
|
4
|
+
rbx.platform.typedef.__blksize_t = long
|
5
|
+
rbx.platform.typedef.__clock_t = long
|
6
|
+
rbx.platform.typedef.__clockid_t = int
|
7
|
+
rbx.platform.typedef.__daddr_t = int
|
8
|
+
rbx.platform.typedef.__dev_t = ulong_long
|
9
|
+
rbx.platform.typedef.__fd_mask = long
|
10
|
+
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
|
11
|
+
rbx.platform.typedef.__fsblkcnt_t = ulong
|
12
|
+
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
|
13
|
+
rbx.platform.typedef.__fsfilcnt_t = ulong
|
14
|
+
rbx.platform.typedef.__fsword_t = int
|
15
|
+
rbx.platform.typedef.__gid_t = uint
|
16
|
+
rbx.platform.typedef.__id_t = uint
|
17
|
+
rbx.platform.typedef.__ino64_t = ulong_long
|
18
|
+
rbx.platform.typedef.__ino_t = ulong
|
19
|
+
rbx.platform.typedef.__int16_t = short
|
20
|
+
rbx.platform.typedef.__int32_t = int
|
21
|
+
rbx.platform.typedef.__int64_t = long_long
|
22
|
+
rbx.platform.typedef.__int8_t = char
|
23
|
+
rbx.platform.typedef.__int_least16_t = short
|
24
|
+
rbx.platform.typedef.__int_least32_t = int
|
25
|
+
rbx.platform.typedef.__int_least64_t = long_long
|
26
|
+
rbx.platform.typedef.__int_least8_t = char
|
27
|
+
rbx.platform.typedef.__intmax_t = long_long
|
28
|
+
rbx.platform.typedef.__intptr_t = int
|
29
|
+
rbx.platform.typedef.__kernel_caddr_t = string
|
30
|
+
rbx.platform.typedef.__kernel_clock_t = long
|
31
|
+
rbx.platform.typedef.__kernel_clockid_t = int
|
32
|
+
rbx.platform.typedef.__kernel_daddr_t = int
|
33
|
+
rbx.platform.typedef.__kernel_gid16_t = ushort
|
34
|
+
rbx.platform.typedef.__kernel_gid32_t = uint
|
35
|
+
rbx.platform.typedef.__kernel_gid_t = uint
|
36
|
+
rbx.platform.typedef.__kernel_ino64_t = ulong_long
|
37
|
+
rbx.platform.typedef.__kernel_ino_t = ulong
|
38
|
+
rbx.platform.typedef.__kernel_ipc_pid_t = ushort
|
39
|
+
rbx.platform.typedef.__kernel_key_t = int
|
40
|
+
rbx.platform.typedef.__kernel_loff_t = long_long
|
41
|
+
rbx.platform.typedef.__kernel_long_t = long
|
42
|
+
rbx.platform.typedef.__kernel_mode_t = ushort
|
43
|
+
rbx.platform.typedef.__kernel_mqd_t = int
|
44
|
+
rbx.platform.typedef.__kernel_off64_t = long_long
|
45
|
+
rbx.platform.typedef.__kernel_off_t = long
|
46
|
+
rbx.platform.typedef.__kernel_old_dev_t = uint
|
47
|
+
rbx.platform.typedef.__kernel_old_gid_t = uint
|
48
|
+
rbx.platform.typedef.__kernel_old_time_t = long
|
49
|
+
rbx.platform.typedef.__kernel_old_uid_t = uint
|
50
|
+
rbx.platform.typedef.__kernel_pid_t = int
|
51
|
+
rbx.platform.typedef.__kernel_ptrdiff_t = int
|
52
|
+
rbx.platform.typedef.__kernel_size_t = uint
|
53
|
+
rbx.platform.typedef.__kernel_ssize_t = int
|
54
|
+
rbx.platform.typedef.__kernel_suseconds_t = long
|
55
|
+
rbx.platform.typedef.__kernel_time64_t = long_long
|
56
|
+
rbx.platform.typedef.__kernel_time_t = long
|
57
|
+
rbx.platform.typedef.__kernel_timer_t = int
|
58
|
+
rbx.platform.typedef.__kernel_uid16_t = ushort
|
59
|
+
rbx.platform.typedef.__kernel_uid32_t = uint
|
60
|
+
rbx.platform.typedef.__kernel_uid_t = uint
|
61
|
+
rbx.platform.typedef.__kernel_ulong_t = ulong
|
62
|
+
rbx.platform.typedef.__key_t = int
|
63
|
+
rbx.platform.typedef.__loff_t = long_long
|
64
|
+
rbx.platform.typedef.__mode_t = uint
|
65
|
+
rbx.platform.typedef.__nlink_t = uint
|
66
|
+
rbx.platform.typedef.__off64_t = long_long
|
67
|
+
rbx.platform.typedef.__off_t = long
|
68
|
+
rbx.platform.typedef.__pid_t = int
|
69
|
+
rbx.platform.typedef.__priority_which_t = int
|
70
|
+
rbx.platform.typedef.__quad_t = long_long
|
71
|
+
rbx.platform.typedef.__rlim64_t = ulong_long
|
72
|
+
rbx.platform.typedef.__rlim_t = ulong
|
73
|
+
rbx.platform.typedef.__rlimit_resource_t = int
|
74
|
+
rbx.platform.typedef.__rusage_who_t = int
|
75
|
+
rbx.platform.typedef.__sig_atomic_t = int
|
76
|
+
rbx.platform.typedef.__socklen_t = uint
|
77
|
+
rbx.platform.typedef.__ssize_t = int
|
78
|
+
rbx.platform.typedef.__suseconds64_t = long_long
|
79
|
+
rbx.platform.typedef.__suseconds_t = long
|
80
|
+
rbx.platform.typedef.__syscall_slong_t = long
|
81
|
+
rbx.platform.typedef.__syscall_ulong_t = ulong
|
82
|
+
rbx.platform.typedef.__thrd_t = ulong
|
83
|
+
rbx.platform.typedef.__time64_t = long_long
|
84
|
+
rbx.platform.typedef.__time_t = long
|
85
|
+
rbx.platform.typedef.__timer_t = pointer
|
86
|
+
rbx.platform.typedef.__tss_t = uint
|
87
|
+
rbx.platform.typedef.__u_char = uchar
|
88
|
+
rbx.platform.typedef.__u_int = uint
|
89
|
+
rbx.platform.typedef.__u_long = ulong
|
90
|
+
rbx.platform.typedef.__u_quad_t = ulong_long
|
91
|
+
rbx.platform.typedef.__u_short = ushort
|
92
|
+
rbx.platform.typedef.__uid_t = uint
|
93
|
+
rbx.platform.typedef.__uint16_t = ushort
|
94
|
+
rbx.platform.typedef.__uint32_t = uint
|
95
|
+
rbx.platform.typedef.__uint64_t = ulong_long
|
96
|
+
rbx.platform.typedef.__uint8_t = uchar
|
97
|
+
rbx.platform.typedef.__uint_least16_t = ushort
|
98
|
+
rbx.platform.typedef.__uint_least32_t = uint
|
99
|
+
rbx.platform.typedef.__uint_least64_t = ulong_long
|
100
|
+
rbx.platform.typedef.__uint_least8_t = uchar
|
101
|
+
rbx.platform.typedef.__uintmax_t = ulong_long
|
102
|
+
rbx.platform.typedef.__useconds_t = uint
|
103
|
+
rbx.platform.typedef.blkcnt_t = long_long
|
104
|
+
rbx.platform.typedef.blksize_t = long
|
105
|
+
rbx.platform.typedef.clock_t = long
|
106
|
+
rbx.platform.typedef.clockid_t = int
|
107
|
+
rbx.platform.typedef.daddr_t = int
|
108
|
+
rbx.platform.typedef.dev_t = ulong_long
|
109
|
+
rbx.platform.typedef.fd_mask = long
|
110
|
+
rbx.platform.typedef.fsblkcnt_t = ulong_long
|
111
|
+
rbx.platform.typedef.fsfilcnt_t = ulong_long
|
112
|
+
rbx.platform.typedef.gid_t = uint
|
113
|
+
rbx.platform.typedef.id_t = uint
|
114
|
+
rbx.platform.typedef.in_addr_t = uint
|
115
|
+
rbx.platform.typedef.in_port_t = ushort
|
116
|
+
rbx.platform.typedef.ino_t = ulong_long
|
117
|
+
rbx.platform.typedef.int16_t = short
|
118
|
+
rbx.platform.typedef.int32_t = int
|
119
|
+
rbx.platform.typedef.int64_t = long_long
|
120
|
+
rbx.platform.typedef.int8_t = char
|
121
|
+
rbx.platform.typedef.int_fast16_t = int
|
122
|
+
rbx.platform.typedef.int_fast32_t = int
|
123
|
+
rbx.platform.typedef.int_fast64_t = long_long
|
124
|
+
rbx.platform.typedef.int_fast8_t = char
|
125
|
+
rbx.platform.typedef.int_least16_t = short
|
126
|
+
rbx.platform.typedef.int_least32_t = int
|
127
|
+
rbx.platform.typedef.int_least64_t = long_long
|
128
|
+
rbx.platform.typedef.int_least8_t = char
|
129
|
+
rbx.platform.typedef.intmax_t = long_long
|
130
|
+
rbx.platform.typedef.intptr_t = int
|
131
|
+
rbx.platform.typedef.key_t = int
|
132
|
+
rbx.platform.typedef.loff_t = long_long
|
133
|
+
rbx.platform.typedef.mode_t = uint
|
134
|
+
rbx.platform.typedef.nlink_t = uint
|
135
|
+
rbx.platform.typedef.off_t = long_long
|
136
|
+
rbx.platform.typedef.pid_t = int
|
137
|
+
rbx.platform.typedef.pthread_key_t = uint
|
138
|
+
rbx.platform.typedef.pthread_once_t = int
|
139
|
+
rbx.platform.typedef.pthread_t = ulong
|
140
|
+
rbx.platform.typedef.ptrdiff_t = int
|
141
|
+
rbx.platform.typedef.quad_t = long_long
|
142
|
+
rbx.platform.typedef.register_t = long
|
143
|
+
rbx.platform.typedef.rlim_t = ulong_long
|
144
|
+
rbx.platform.typedef.sa_family_t = ushort
|
145
|
+
rbx.platform.typedef.size_t = uint
|
146
|
+
rbx.platform.typedef.socklen_t = uint
|
147
|
+
rbx.platform.typedef.ssize_t = int
|
148
|
+
rbx.platform.typedef.suseconds_t = long
|
149
|
+
rbx.platform.typedef.time_t = long
|
150
|
+
rbx.platform.typedef.timer_t = pointer
|
151
|
+
rbx.platform.typedef.u_char = uchar
|
152
|
+
rbx.platform.typedef.u_int = uint
|
153
|
+
rbx.platform.typedef.u_int16_t = ushort
|
154
|
+
rbx.platform.typedef.u_int32_t = uint
|
155
|
+
rbx.platform.typedef.u_int64_t = ulong_long
|
156
|
+
rbx.platform.typedef.u_int8_t = uchar
|
157
|
+
rbx.platform.typedef.u_long = ulong
|
158
|
+
rbx.platform.typedef.u_quad_t = ulong_long
|
159
|
+
rbx.platform.typedef.u_short = ushort
|
160
|
+
rbx.platform.typedef.uid_t = uint
|
161
|
+
rbx.platform.typedef.uint = uint
|
162
|
+
rbx.platform.typedef.uint16_t = ushort
|
163
|
+
rbx.platform.typedef.uint32_t = uint
|
164
|
+
rbx.platform.typedef.uint64_t = ulong_long
|
165
|
+
rbx.platform.typedef.uint8_t = uchar
|
166
|
+
rbx.platform.typedef.uint_fast16_t = uint
|
167
|
+
rbx.platform.typedef.uint_fast32_t = uint
|
168
|
+
rbx.platform.typedef.uint_fast64_t = ulong_long
|
169
|
+
rbx.platform.typedef.uint_fast8_t = uchar
|
170
|
+
rbx.platform.typedef.uint_least16_t = ushort
|
171
|
+
rbx.platform.typedef.uint_least32_t = uint
|
172
|
+
rbx.platform.typedef.uint_least64_t = ulong_long
|
173
|
+
rbx.platform.typedef.uint_least8_t = uchar
|
174
|
+
rbx.platform.typedef.uintmax_t = ulong_long
|
175
|
+
rbx.platform.typedef.uintptr_t = uint
|
176
|
+
rbx.platform.typedef.ulong = ulong
|
177
|
+
rbx.platform.typedef.ushort = ushort
|
178
|
+
rbx.platform.typedef.wchar_t = long
|