Add bin and edit workflow
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s

This commit is contained in:
2026-09-16 13:11:16 -06:00
parent c8ac4fcae5
commit 4cee170d66
17576 changed files with 895740 additions and 2 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,27 @@
if RUBY_ENGINE == 'ruby'
begin
require RUBY_VERSION.split('.')[0, 2].join('.') + '/ffi_c'
rescue Exception
require 'ffi_c'
end
require 'ffi/ffi'
elsif RUBY_ENGINE == 'jruby' && (RUBY_ENGINE_VERSION.split('.').map(&:to_i) <=> [9, 2, 20]) >= 0
JRuby::Util.load_ext("org.jruby.ext.ffi.FFIService")
require 'ffi/ffi'
elsif RUBY_ENGINE == 'truffleruby' && (RUBY_ENGINE_VERSION.split('.').map(&:to_i) <=> [20, 1, 0]) >= 0
require 'truffleruby/ffi_backend'
require 'ffi/ffi'
else
# Remove the ffi gem dir from the load path, then reload the internal ffi implementation
$LOAD_PATH.delete(File.dirname(__FILE__))
$LOAD_PATH.delete(File.join(File.dirname(__FILE__), 'ffi'))
unless $LOADED_FEATURES.nil?
$LOADED_FEATURES.delete(__FILE__)
$LOADED_FEATURES.delete('ffi.rb')
end
require 'ffi.rb'
end
@@ -0,0 +1,44 @@
#
# Copyright (C) 2020 Lars Kanis
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
module FFI
class AbstractMemory
LONG_MAX = FFI::Pointer.new(1).size
private_constant :LONG_MAX
# Return +true+ if +self+ has a size limit.
#
# @return [Boolean]
def size_limit?
size != LONG_MAX
end
end
end
@@ -0,0 +1,186 @@
#
# Copyright (C) 2008-2010 Wayne Meissner
# Copyright (C) 2008 Mike Dalessio
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module FFI
class AutoPointer < Pointer
extend DataConverter
# @overload initialize(pointer, method)
# @param pointer [Pointer]
# @param method [Method]
# @return [self]
# The passed Method will be invoked at GC time.
# @overload initialize(pointer, proc)
# @param pointer [Pointer]
# @return [self]
# The passed Proc will be invoked at GC time (SEE WARNING BELOW!)
# @note WARNING: passing a proc _may_ cause your pointer to never be
# GC'd, unless you're careful to avoid trapping a reference to the
# pointer in the proc. See the test specs for examples.
# @overload initialize(pointer)
# @param pointer [Pointer]
# @return [self]
# The pointer's release() class method will be invoked at GC time.
#
# @note The safest, and therefore preferred, calling
# idiom is to pass a Method as the second parameter. Example usage:
#
# class PointerHelper
# def self.release(pointer)
# ...
# end
# end
#
# p = AutoPointer.new(other_pointer, PointerHelper.method(:release))
#
# The above code will cause PointerHelper#release to be invoked at GC time.
#
# @note
# The last calling idiom (only one parameter) is generally only
# going to be useful if you subclass {AutoPointer}, and override
# #release, which by default does nothing.
def initialize(ptr, proc=nil)
raise TypeError, "Invalid pointer" if ptr.nil? || !ptr.kind_of?(Pointer) ||
ptr.kind_of?(MemoryPointer) || ptr.kind_of?(AutoPointer)
super(ptr.type_size, ptr)
@releaser = if proc
if not proc.respond_to?(:call)
raise RuntimeError.new("proc must be callable")
end
Releaser.new(ptr, proc)
else
if not self.class.respond_to?(:release, true)
raise RuntimeError.new("no release method defined")
end
Releaser.new(ptr, self.class.method(:release))
end
ObjectSpace.define_finalizer(self, @releaser)
self
end
def dup
raise RuntimeError, "cannot duplicate FFI::AutoPointer"
end
alias clone dup
# @return [nil]
# Free the pointer.
def free
@releaser.free
end
# @param [Boolean] autorelease
# @return [Boolean] +autorelease+
# Set +autorelease+ property. See {Pointer Autorelease section at Pointer}.
def autorelease=(autorelease)
raise FrozenError.new("can't modify frozen #{self.class}") if frozen?
@releaser.autorelease=(autorelease)
end
# @return [Boolean] +autorelease+
# Get +autorelease+ property. See {Pointer Autorelease section at Pointer}.
def autorelease?
@releaser.autorelease
end
# @abstract Base class for {AutoPointer}'s releasers.
#
# All subclasses of Releaser should define a +#release(ptr)+ method.
# A releaser is an object in charge of release an {AutoPointer}.
class Releaser
attr_accessor :autorelease
# @param [Pointer] ptr
# @param [#call] proc
# @return [nil]
# A new instance of Releaser.
def initialize(ptr, proc)
@ptr = ptr
@proc = proc
@autorelease = true
end
# @return [nil]
# Free pointer.
def free
if @ptr
release(@ptr)
@autorelease = false
@ptr = nil
@proc = nil
end
end
# @param args
# Release pointer if +autorelease+ is set.
def call(*args)
release(@ptr) if @autorelease && @ptr
end
# Release +ptr+ by using Proc or Method defined at +ptr+
# {AutoPointer#initialize initialization}.
#
# @param [Pointer] ptr
# @return [nil]
def release(ptr)
@proc.call(ptr)
end
end
# Return native type of AutoPointer.
#
# Override {DataConverter#native_type}.
# @return [Type::POINTER]
# @raise {RuntimeError} if class does not implement a +#release+ method
def self.native_type
if not self.respond_to?(:release, true)
raise RuntimeError.new("no release method defined for #{self.inspect}")
end
Type::POINTER
end
# Create a new AutoPointer.
#
# Override {DataConverter#from_native}.
# @overload self.from_native(ptr, ctx)
# @param [Pointer] ptr
# @param ctx not used. Please set +nil+.
# @return [AutoPointer]
def self.from_native(val, ctx)
self.new(val)
end
end
end
@@ -0,0 +1,4 @@
#
# All the code from this file is now implemented in C. This file remains
# to satisfy any leftover require 'ffi/buffer' in user code
#
@@ -0,0 +1,4 @@
#
# All the code from this file is now implemented in C. This file remains
# to satisfy any leftover require 'ffi/callback' in user code
#
@@ -0,0 +1,54 @@
#
# Copyright (C) 2023-2023 Lars Kanis
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
module FFI
if defined?(Ractor.make_shareable)
# This is for FFI internal use only.
def self.make_shareable(obj)
Ractor.make_shareable(obj)
end
else
def self.make_shareable(obj)
obj.freeze
end
end
if defined?(Ractor.shareable_proc)
# This is for FFI internal use only.
def self.shareable_proc(**kwargs, &block)
Ractor.shareable_proc(**kwargs, &block)
end
else
def self.shareable_proc(**_kwargs, &block)
block
end
end
end
@@ -0,0 +1,67 @@
#
# Copyright (C) 2008-2010 Wayne Meissner
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
module FFI
# This module is used to extend somes classes and give then a common API.
#
# Most of methods defined here must be overridden.
module DataConverter
# Get native type.
#
# @overload native_type(type)
# @param [String, Symbol, Type] type
# @return [Type]
# Get native type from +type+.
#
# @overload native_type
# @raise {NotImplementedError} This method must be overridden.
def native_type(type = nil)
if type
@native_type = FFI.find_type(type)
else
native_type = @native_type
unless native_type
raise NotImplementedError, 'native_type method not overridden and no native_type set'
end
native_type
end
end
# Convert to a native type.
def to_native(value, ctx)
value
end
# Convert from a native type.
def from_native(value, ctx)
value
end
end
end
@@ -0,0 +1,118 @@
#
# Copyright (C) 2008-2010 Wayne Meissner
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
module FFI
class DynamicLibrary
SEARCH_PATH = []
# The following search paths are tried, if the library could not be loaded in the first attempt.
# They are only executed on Macos in the following order:
if FFI::Platform.mac?
# 1. Try library paths possibly defined in LD_LIBRARY_PATH DYLD_LIBRARY_PATH first.
# This is because dlopen doesn't respect LD_LIBRARY_PATH and DYLD_LIBRARY_PATH is deleted by SIP-protected binaries.
# See here for details: https://github.com/ffi/ffi/issues/923#issuecomment-1872565313
%w[LD_LIBRARY_PATH DYLD_LIBRARY_PATH].each do |custom_path|
SEARCH_PATH.concat ENV.fetch(custom_path,"").split(File::PATH_SEPARATOR)
end
# 2. Then on macos/arm64 try /opt/homebrew/lib, since this is a typical standard directory.
# FFI is often used together with homebrew, so that we hardcode the path for arm64 here.
if FFI::Platform::ARCH == 'aarch64'
SEARCH_PATH << '/opt/homebrew/lib'
end
# 3. Then try typical system directories starting with the /local/ directory first.
#
# /usr/local/lib is used by homebrow on x86_64.
# /opt/local/lib is used by MacPorts and Fink.
# /usr/lib is there, because it was always there.
SEARCH_PATH.concat %w[/opt/local/lib /usr/local/lib /usr/lib]
end
# On Linux the library lookup paths are usually defined through /etc/ld.so.conf, which can be changed at will with root permissions.
# Also LD_LIBRARY_PATH is respected by the dynamic loader, so that there's usually no need and no advantage to do a fallback handling.
#
# Windows has it's own library lookup logic, very different to what we do here.
# See: https://github.com/oneclick/rubyinstaller2/wiki/For-gem-developers#user-content-dll-loading
FFI.make_shareable(SEARCH_PATH)
SEARCH_PATH_MESSAGE = "Searched in <system library path>#{ SEARCH_PATH.map{|a| ', ' + a}.join }".freeze
def self.load_library(name, flags)
if name == FFI::CURRENT_PROCESS
FFI::DynamicLibrary.open(nil, RTLD_LAZY | RTLD_LOCAL)
else
flags ||= RTLD_LAZY | RTLD_LOCAL
libnames = (name.is_a?(::Array) ? name : [name])
libnames = libnames.map(&:to_s).map { |n| [n, FFI.map_library_name(n)].uniq }.flatten.compact
errors = []
libnames.each do |libname|
lib = try_load(libname, flags, errors)
return lib if lib
unless libname.start_with?("/")
SEARCH_PATH.each do |prefix|
path = "#{prefix}/#{libname}"
if File.exist?(path)
lib = try_load(path, flags, errors)
return lib if lib
end
end
end
end
raise LoadError, [*errors, SEARCH_PATH_MESSAGE].join(".\n")
end
end
private_class_method :load_library
def self.try_load(libname, flags, errors)
begin
lib = FFI::DynamicLibrary.open(libname, flags)
return lib if lib
# LoadError for C ext & JRuby, RuntimeError for TruffleRuby
rescue LoadError, RuntimeError => ex
if ex.message =~ /(([^ \t()])+\.so([^ \t:()])*):([ \t])*(invalid ELF header|file too short|invalid file format)/
if File.binread($1) =~ /(?:GROUP|INPUT) *\( *([^ \)]+)/
return try_load($1, flags, errors)
end
end
errors << ex
nil
end
end
private_class_method :try_load
end
end
@@ -0,0 +1,302 @@
#
# Copyright (C) 2009, 2010 Wayne Meissner
# Copyright (C) 2009 Luc Heinrich
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
module FFI
# An instance of this class permits to manage {Enum}s. In fact, Enums is a collection of {Enum}s.
class Enums
def initialize
@all_enums = Array.new
@tagged_enums = Hash.new
@symbol_map = Hash.new
end
# @param [Enum] enum
# Add an {Enum} to the collection.
def <<(enum)
@all_enums << enum
@tagged_enums[enum.tag] = enum unless enum.tag.nil?
@symbol_map.merge!(enum.symbol_map)
end
# @param query enum tag or part of an enum name
# @return [Enum]
# Find a {Enum} in collection.
def find(query)
if @tagged_enums.has_key?(query)
@tagged_enums[query]
else
@all_enums.detect { |enum| enum.symbols.include?(query) }
end
end
# @param symbol a symbol to find in merge symbol maps of all enums.
# @return a symbol
def __map_symbol(symbol)
@symbol_map[symbol]
end
end
# Represents a C enum.
#
# For a C enum:
# enum fruits {
# apple,
# banana,
# orange,
# pineapple
# };
# are defined this vocabulary:
# * a _symbol_ is a word from the enumeration (ie. _apple_, by example);
# * a _value_ is the value of a symbol in the enumeration (by example, apple has value _0_ and banana _1_).
class Enum
include DataConverter
attr_reader :tag
attr_reader :native_type
# @overload initialize(info, tag=nil)
# @param [nil, Enumerable] info
# @param [nil, Symbol] tag enum tag
# @overload initialize(native_type, info, tag=nil)
# @param [FFI::Type] native_type Native type for new Enum
# @param [nil, Enumerable] info symbols and values for new Enum
# @param [nil, Symbol] tag name of new Enum
def initialize(*args)
@native_type = args.first.kind_of?(FFI::Type) ? args.shift : Type::INT
info, @tag = *args
@kv_map = Hash.new
unless info.nil?
last_cst = nil
value = 0
info.each do |i|
case i
when Symbol
raise ArgumentError, "duplicate enum key" if @kv_map.has_key?(i)
@kv_map[i] = value
last_cst = i
value += 1
when Integer
@kv_map[last_cst] = i
value = i+1
end
end
end
@vk_map = @kv_map.invert
end
# @return [Array] enum symbol names
def symbols
@kv_map.keys
end
# Get a symbol or a value from the enum.
# @overload [](query)
# Get enum value from symbol.
# @param [Symbol] query
# @return [Integer]
# @overload [](query)
# Get enum symbol from value.
# @param [Integer] query
# @return [Symbol]
def [](query)
case query
when Symbol
@kv_map[query]
when Integer
@vk_map[query]
end
end
alias find []
# Get the symbol map.
# @return [Hash]
def symbol_map
@kv_map
end
alias to_h symbol_map
alias to_hash symbol_map
# @param [Symbol, Integer, #to_int] val
# @param ctx unused
# @return [Integer] value of a enum symbol
def to_native(val, ctx)
@kv_map[val] || if val.is_a?(Integer)
val
elsif val.respond_to?(:to_int)
val.to_int
else
raise ArgumentError, "invalid enum value, #{val.inspect}"
end
end
# @param val
# @return symbol name if it exists for +val+.
def from_native(val, ctx)
@vk_map[val] || val
end
end
# Represents a C enum whose values are power of 2
#
# @example
# enum {
# red = (1<<0),
# green = (1<<1),
# blue = (1<<2)
# }
#
# Contrary to classical enums, bitmask values are usually combined
# when used.
class Bitmask < Enum
# @overload initialize(info, tag=nil)
# @param [nil, Enumerable] info symbols and bit rank for new Bitmask
# @param [nil, Symbol] tag name of new Bitmask
# @overload initialize(native_type, info, tag=nil)
# @param [FFI::Type] native_type Native type for new Bitmask
# @param [nil, Enumerable] info symbols and bit rank for new Bitmask
# @param [nil, Symbol] tag name of new Bitmask
def initialize(*args)
@native_type = args.first.kind_of?(FFI::Type) ? args.shift : Type::INT
@signed = [Type::INT8, Type::INT16, Type::INT32, Type::INT64].include?(@native_type)
info, @tag = *args
@kv_map = Hash.new
unless info.nil?
last_cst = nil
value = 0
info.each do |i|
case i
when Symbol
raise ArgumentError, "duplicate bitmask key" if @kv_map.has_key?(i)
@kv_map[i] = 1 << value
last_cst = i
value += 1
when Integer
raise ArgumentError, "bitmask index should be positive" if i<0
@kv_map[last_cst] = 1 << i
value = i+1
end
end
end
@vk_map = @kv_map.invert
end
# Get a symbol list or a value from the bitmask
# @overload [](*query)
# Get bitmask value from symbol list
# @param [Symbol] query
# @return [Integer]
# @overload [](query)
# Get bitmask value from symbol array
# @param [Array<Symbol>] query
# @return [Integer]
# @overload [](*query)
# Get a list of bitmask symbols corresponding to
# the or reduction of a list of integer
# @param [Integer] query
# @return [Array<Symbol>]
# @overload [](query)
# Get a list of bitmask symbols corresponding to
# the or reduction of a list of integer
# @param [Array<Integer>] query
# @return [Array<Symbol>]
def [](*query)
flat_query = query.flatten
raise ArgumentError, "query should be homogeneous, #{query.inspect}" unless flat_query.all? { |o| o.is_a?(Symbol) } || flat_query.all? { |o| o.is_a?(Integer) || o.respond_to?(:to_int) }
case flat_query[0]
when Symbol
flat_query.inject(0) do |val, o|
v = @kv_map[o]
if v then val | v else val end
end
when Integer, ->(o) { o.respond_to?(:to_int) }
val = flat_query.inject(0) { |mask, o| mask |= o.to_int }
@kv_map.select { |_, v| v & val != 0 }.keys
end
end
# Get the native value of a bitmask
# @overload to_native(query, ctx)
# @param [Symbol, Integer, #to_int] query
# @param ctx unused
# @return [Integer] value of a bitmask
# @overload to_native(query, ctx)
# @param [Array<Symbol, Integer, #to_int>] query
# @param ctx unused
# @return [Integer] value of a bitmask
def to_native(query, ctx)
return 0 if query.nil?
flat_query = [query].flatten
res = flat_query.inject(0) do |val, o|
case o
when Symbol
v = @kv_map[o]
raise ArgumentError, "invalid bitmask value, #{o.inspect}" unless v
val | v
when Integer
val | o
when ->(obj) { obj.respond_to?(:to_int) }
val | o.to_int
else
raise ArgumentError, "invalid bitmask value, #{o.inspect}"
end
end
# Take two's complement of positive values bigger than the max value
# for the type when native type is signed.
if @signed && res >= (1 << (@native_type.size * 8 - 1))
res = -(-res & ((1 << (@native_type.size * 8)) - 1))
end
res
end
# @param [Integer] val
# @param ctx unused
# @return [Array<Symbol, Integer>] list of symbol names corresponding to val, plus an optional remainder if some bits don't match any constant
def from_native(val, ctx)
flags = @kv_map.select { |_, v| v & val != 0 }
list = flags.keys
# force an unsigned value of the correct size
val &= (1 << (@native_type.size * 8)) - 1 if @signed
# If there are unmatch flags,
# return them in an integer,
# else information can be lost.
# Similar to Enum behavior.
remainder = val ^ flags.values.reduce(0, :|)
list.push remainder unless remainder == 0
return list
end
end
end
@@ -0,0 +1,43 @@
#
# Copyright (C) 2008-2010 Wayne Meissner
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
module FFI
# @return (see FFI::LastError.error)
# @see FFI::LastError.error
def self.errno
FFI::LastError.error
end
# @param error (see FFI::LastError.error=)
# @return (see FFI::LastError.error=)
# @see FFI::LastError.error=
def self.errno=(error)
FFI::LastError.error = error
end
end
@@ -0,0 +1,109 @@
#
# Copyright (C) 2008-2010 JRuby project
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
require 'ffi/compat'
require 'ffi/platform'
require 'ffi/data_converter'
require 'ffi/types'
require 'ffi/library_path'
require 'ffi/library'
require 'ffi/errno'
require 'ffi/abstract_memory'
require 'ffi/pointer'
require 'ffi/memorypointer'
require 'ffi/struct'
require 'ffi/union'
require 'ffi/managedstruct'
require 'ffi/callback'
require 'ffi/io'
require 'ffi/autopointer'
require 'ffi/variadic'
require 'ffi/enum'
require 'ffi/version'
require 'ffi/function'
module FFI
module ModernForkTracking
def _fork
pid = super
if pid == 0
FFI._async_cb_dispatcher_atfork_child
end
pid
end
end
module LegacyForkTracking
module KernelExt
def fork
if block_given?
super do
FFI._async_cb_dispatcher_atfork_child
yield
end
else
pid = super
FFI._async_cb_dispatcher_atfork_child if pid.nil?
pid
end
end
end
module KernelExtPrivate
include KernelExt
private :fork
end
module IOExt
def popen(*args)
return super unless args[0] == '-'
super(*args) do |pipe|
FFI._async_cb_dispatcher_atfork_child if pipe.nil?
yield pipe
end
end
ruby2_keywords :popen if respond_to?(:ruby2_keywords)
end
end
if Process.respond_to?(:_fork)
# The nice Ruby 3.1+ way of doing things
::Process.singleton_class.prepend(ModernForkTracking)
elsif Process.respond_to?(:fork)
# Barf. Old CRuby.
# Most of the inspiration for how to do this was stolen from ActiveSupport.
::Object.prepend(LegacyForkTracking::KernelExtPrivate)
::Object.singleton_class.prepend(LegacyForkTracking::KernelExt)
::Kernel.prepend(LegacyForkTracking::KernelExtPrivate)
::Kernel.singleton_class.prepend(LegacyForkTracking::KernelExt)
::IO.singleton_class.prepend(LegacyForkTracking::IOExt)
end
end
@@ -0,0 +1,94 @@
#
# Copyright (C) 2008-2010 JRuby project
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module FFI
class Function
# Only MRI allows function type queries
if private_method_defined?(:type)
# Retrieve the return type of the function
#
# This method returns FFI type returned by the function.
#
# @return [FFI::Type]
def return_type
type.return_type
end
# Retrieve Array of parameter types
#
# This method returns an Array of FFI types accepted as function parameters.
#
# @return [Array<FFI::Type>]
def param_types
type.param_types
end
end
if RUBY_PLATFORM == 'aarch64-mingw-ucrt'
# Use a workaround for https://github.com/libffi/libffi/issues/905
def attach(mod, name)
this = self
body = proc do |*args, &block|
this.call(*args, &block)
end
mod.define_method(name, body)
mod.define_singleton_method(name, body)
# Store function Proc's for re-definition as Ractor-shareable in Library#freeze
funcs = mod.instance_variable_get("@ffi_function_procs")
unless funcs
funcs = {}
mod.instance_variable_set("@ffi_function_procs", funcs)
end
funcs[name] = self
self
end
end
# Stash the Function in a module variable so it can be inspected by attached_functions.
# On CRuby it also ensures that it does not get garbage collected.
module RegisterAttach
def attach(mod, name)
funcs = mod.instance_variable_defined?("@ffi_functions") && mod.instance_variable_get("@ffi_functions")
unless funcs
funcs = {}
mod.instance_variable_set("@ffi_functions", funcs)
end
funcs[name.to_sym] = self
# Jump to the native attach method of CRuby, JRuby or Tuffleruby
super
end
end
private_constant :RegisterAttach
prepend RegisterAttach
end
end
@@ -0,0 +1,62 @@
#
# Copyright (C) 2008, 2009 Wayne Meissner
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
module FFI
# This module implements a couple of class methods to play with IO.
module IO
# @param [Integer] fd file decriptor
# @param [String] mode mode string
# @return [::IO]
# Synonym for IO::for_fd.
def self.for_fd(fd, mode = "r")
::IO.for_fd(fd, mode)
end
# @param [#read] io io to read from
# @param [AbstractMemory] buf destination for data read from +io+
# @param [nil, Integer] len maximul number of bytes to read from +io+. If +nil+,
# read until end of file.
# @return [Integer] length really read, in bytes
#
# A version of IO#read that reads data from an IO and put then into a native buffer.
#
# This will be optimized at some future time to eliminate the double copy.
#
def self.native_read(io, buf, len)
tmp = io.read(len)
return -1 unless tmp
buf.put_bytes(0, tmp)
tmp.length
end
end
end
@@ -0,0 +1,592 @@
#
# Copyright (C) 2008-2010 Wayne Meissner
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
require 'ffi/dynamic_library'
module FFI
CURRENT_PROCESS = USE_THIS_PROCESS_AS_LIBRARY = FFI.make_shareable(Object.new)
# @param [String, FFI::LibraryPath] lib library name or LibraryPath object
# @return [String] library name formatted for current platform
# Transform a generic library name to a platform library name
# @example
# # Linux
# FFI.map_library_name 'c' # -> "libc.so.6"
# FFI.map_library_name 'jpeg' # -> "libjpeg.so"
# # Windows
# FFI.map_library_name 'c' # -> "msvcrt.dll"
# FFI.map_library_name 'jpeg' # -> "jpeg.dll"
def self.map_library_name(lib)
# Mangle the library name to reflect the native library naming conventions
LibraryPath.wrap(lib).to_s
end
# Exception raised when a function is not found in libraries
class NotFoundError < LoadError
def initialize(function, *libraries)
super("Function '#{function}' not found in [#{libraries[0].nil? ? 'current process' : libraries.join(", ")}]")
end
end
# This module is the base to use native functions.
#
# A basic usage may be:
# require 'ffi'
#
# module Hello
# extend FFI::Library
# ffi_lib FFI::Library::LIBC
# attach_function 'puts', [ :string ], :int
# end
#
# Hello.puts("Hello, World")
#
#
module Library
CURRENT_PROCESS = FFI::CURRENT_PROCESS
LIBC = FFI::Platform::LIBC
# @param mod extended object
# @return [nil]
# @raise {RuntimeError} if +mod+ is not a Module
# Test if extended object is a Module. If not, raise RuntimeError.
def self.extended(mod)
raise RuntimeError.new("must only be extended by module") unless mod.kind_of?(::Module)
end
# @param [Array] names names of libraries to load
# @return [Array<DynamicLibrary>]
# @raise {LoadError} if a library cannot be opened
# Load native libraries.
def ffi_lib(*names)
raise LoadError.new("library names list must not be empty") if names.empty?
lib_flags = defined?(@ffi_lib_flags) && @ffi_lib_flags
@ffi_libs = names.map do |name|
FFI::DynamicLibrary.send(:load_library, name, lib_flags)
end
end
# Set the calling convention for {#attach_function} and {#callback}
#
# @see http://en.wikipedia.org/wiki/Stdcall#stdcall
# @note +:stdcall+ is typically used for attaching Windows API functions
#
# @param [Symbol] convention one of +:default+, +:stdcall+
# @return [Symbol] the new calling convention
def ffi_convention(convention = nil)
@ffi_convention ||= :default
@ffi_convention = convention if convention
@ffi_convention
end
# @see #ffi_lib
# @return [Array<FFI::DynamicLibrary>] array of currently loaded FFI libraries
# @raise [LoadError] if no libraries have been loaded (using {#ffi_lib})
# Get FFI libraries loaded using {#ffi_lib}.
def ffi_libraries
raise LoadError.new("no library specified") if !defined?(@ffi_libs) || @ffi_libs.empty?
@ffi_libs
end
# Flags used in {#ffi_lib}.
#
# This map allows you to supply symbols to {#ffi_lib_flags} instead of
# the actual constants.
FlagsMap = {
:global => DynamicLibrary::RTLD_GLOBAL,
:local => DynamicLibrary::RTLD_LOCAL,
:lazy => DynamicLibrary::RTLD_LAZY,
:now => DynamicLibrary::RTLD_NOW
}
# Sets library flags for {#ffi_lib}.
#
# @example
# ffi_lib_flags(:lazy, :local) # => 5
#
# @param [Symbol, …] flags (see {FlagsMap})
# @return [Integer] the new value
def ffi_lib_flags(*flags)
@ffi_lib_flags = flags.inject(0) { |result, f| result | FlagsMap[f] }
end
##
# @overload attach_function(func, args, returns, options = {})
# @example attach function without an explicit name
# module Foo
# extend FFI::Library
# ffi_lib FFI::Library::LIBC
# attach_function :malloc, [:size_t], :pointer
# end
# # now callable via Foo.malloc
# @overload attach_function(name, func, args, returns, options = {})
# @example attach function with an explicit name
# module Bar
# extend FFI::Library
# ffi_lib FFI::Library::LIBC
# attach_function :c_malloc, :malloc, [:size_t], :pointer
# end
# # now callable via Bar.c_malloc
#
# Attach C function +func+ to this module.
#
#
# @param [#to_s] name name of ruby method to attach as
# @param [#to_s] func name of C function to attach
# @param [Array<Symbol>] args an array of types
# @param [Symbol] returns type of return value
# @option options [Boolean] :blocking (@blocking) set to true if the C function is a blocking call
# @option options [Symbol] :convention (:default) calling convention (see {#ffi_convention})
# @option options [FFI::Enums] :enums
# @option options [Hash] :type_map
#
# @return [FFI::VariadicInvoker]
#
# @raise [FFI::NotFoundError] if +func+ cannot be found in the attached libraries (see {#ffi_lib})
def attach_function(name, func, args, returns = nil, options = nil)
mname, a2, a3, a4, a5 = name, func, args, returns, options
cname, arg_types, ret_type, opts = (a4 && (a2.is_a?(String) || a2.is_a?(Symbol))) ? [ a2, a3, a4, a5 ] : [ mname.to_s, a2, a3, a4 ]
# Convert :foo to the native type
arg_types = arg_types.map { |e| find_type(e) }
options = {
:convention => ffi_convention,
:type_map => defined?(@ffi_typedefs) ? @ffi_typedefs : nil,
:blocking => defined?(@blocking) && @blocking,
:enums => defined?(@ffi_enums) ? @ffi_enums : nil,
}
@blocking = false
options.merge!(opts) if opts && opts.is_a?(Hash)
# Try to locate the function in any of the libraries
invokers = []
ffi_libraries.each do |lib|
if invokers.empty?
begin
function = nil
function_names(cname, arg_types).find do |fname|
function = lib.find_function(fname)
end
raise LoadError unless function
invokers << if arg_types[-1] == FFI::NativeType::VARARGS
VariadicInvoker.new(function, arg_types, find_type(ret_type), options)
else
Function.new(find_type(ret_type), arg_types, function, options)
end
rescue LoadError
end
end
end
invoker = invokers.compact.shift
raise FFI::NotFoundError.new(cname.to_s, ffi_libraries.map { |lib| lib.name }) unless invoker
invoker.attach(self, mname.to_s)
invoker
end
# @param [#to_s] name function name
# @param [Array] arg_types function's argument types
# @return [Array<String>]
# This function returns a list of possible names to lookup.
# @note Function names on windows may be decorated if they are using stdcall. See
# * http://en.wikipedia.org/wiki/Name_mangling#C_name_decoration_in_Microsoft_Windows
# * http://msdn.microsoft.com/en-us/library/zxk0tw93%28v=VS.100%29.aspx
# * http://en.wikibooks.org/wiki/X86_Disassembly/Calling_Conventions#STDCALL
# Note that decorated names can be overridden via def files. Also note that the
# windows api, although using, doesn't have decorated names.
def function_names(name, arg_types)
result = [name.to_s]
if ffi_convention == :stdcall
# Get the size of each parameter
size = arg_types.inject(0) do |mem, arg|
size = arg.size
# The size must be a multiple of 4
size += (4 - size) % 4
mem + size
end
result << "_#{name.to_s}@#{size}" # win32
result << "#{name.to_s}@#{size}" # win64
end
result
end
# @overload attach_variable(mname, cname, type)
# @param [#to_s] mname name of ruby method to attach as
# @param [#to_s] cname name of C variable to attach
# @param [DataConverter, Struct, Symbol, Type] type C variable's type
# @example
# module Bar
# extend FFI::Library
# ffi_lib 'my_lib'
# attach_variable :c_myvar, :myvar, :long
# end
# # now callable via Bar.c_myvar
# @overload attach_variable(cname, type)
# @param [#to_s] mname name of ruby method to attach as
# @param [DataConverter, Struct, Symbol, Type] type C variable's type
# @example
# module Bar
# extend FFI::Library
# ffi_lib 'my_lib'
# attach_variable :myvar, :long
# end
# # now callable via Bar.myvar
# @return [DynamicLibrary::Symbol]
# @raise {FFI::NotFoundError} if +cname+ cannot be found in libraries
#
# Attach C variable +cname+ to this module.
def attach_variable(mname, a1, a2 = nil)
cname, type = a2 ? [ a1, a2 ] : [ mname.to_s, a1 ]
mname = mname.to_sym
address = nil
ffi_libraries.each do |lib|
begin
address = lib.find_variable(cname.to_s)
break unless address.nil?
rescue LoadError
end
end
raise FFI::NotFoundError.new(cname, ffi_libraries) if address.nil? || address.null?
if type.is_a?(Class) && type < FFI::Struct
# If it is a global struct, just attach directly to the pointer
s = s = type.new(address) # Assigning twice to suppress unused variable warning
self.module_eval(<<-code, __FILE__, __LINE__)
@ffi_gsvars = {} unless defined?(@ffi_gsvars)
@ffi_gsvars[#{mname.inspect}] = s
def self.#{mname}
@ffi_gsvars[#{mname.inspect}]
end
code
else
sc = Class.new(FFI::Struct)
sc.layout :gvar, find_type(type)
s = sc.new(address)
#
# Attach to this module as mname/mname=
#
self.module_eval(<<-code, __FILE__, __LINE__)
@ffi_gvars = {} unless defined?(@ffi_gvars)
@ffi_gvars[#{mname.inspect}] = s
def self.#{mname}
@ffi_gvars[#{mname.inspect}][:gvar]
end
def self.#{mname}=(value)
@ffi_gvars[#{mname.inspect}][:gvar] = value
end
code
end
address
end
# @overload callback(name, params, ret)
# @param name callback name to add to type map
# @param [Array] params array of parameters' types
# @param [DataConverter, Struct, Symbol, Type] ret callback return type
# @overload callback(params, ret)
# @param [Array] params array of parameters' types
# @param [DataConverter, Struct, Symbol, Type] ret callback return type
# @return [FFI::CallbackInfo]
def callback(*args)
raise ArgumentError, "wrong number of arguments" if args.length < 2 || args.length > 3
name, params, ret = if args.length == 3
args
else
[ nil, args[0], args[1] ]
end
native_params = params.map { |e| find_type(e) }
raise ArgumentError, "callbacks cannot have variadic parameters" if native_params.include?(FFI::Type::VARARGS)
options = Hash.new
options[:convention] = ffi_convention
options[:enums] = @ffi_enums if defined?(@ffi_enums)
ret_type = find_type(ret)
if ret_type == Type::STRING
raise TypeError, ":string is not allowed as return type of callbacks"
end
cb = FFI::CallbackInfo.new(ret_type, native_params, options)
# Add to the symbol -> type map (unless there was no name)
unless name.nil?
typedef cb, name
end
cb
end
# Register or get an already registered type definition.
#
# To register a new type definition, +old+ should be a {FFI::Type}. +add+
# is in this case the type definition.
#
# If +old+ is a {DataConverter}, a {Type::Mapped} is returned.
#
# If +old+ is +:enum+
# * and +add+ is an +Array+, a call to {#enum} is made with +add+ as single parameter;
# * in others cases, +info+ is used to create a named enum.
#
# If +old+ is a key for type map, #typedef get +old+ type definition.
#
# @param [DataConverter, Symbol, Type] old
# @param [Symbol] add
# @param [Symbol] info
# @return [FFI::Enum, FFI::Type]
def typedef(old, add, info=nil)
@ffi_typedefs = Hash.new unless defined?(@ffi_typedefs)
@ffi_typedefs[add] = if old.kind_of?(FFI::Type)
old
elsif @ffi_typedefs.has_key?(old)
@ffi_typedefs[old]
elsif old.is_a?(DataConverter)
FFI::Type::Mapped.new(old)
elsif old == :enum
if add.kind_of?(Array)
self.enum(add)
else
self.enum(info, add)
end
else
FFI.find_type(old)
end
end
# @param [DataConverter, Type, Struct, Symbol] t type to find
# @return [Type]
# Find a type definition.
def find_type(t)
if t.kind_of?(Type)
t
elsif defined?(@ffi_typedefs) && @ffi_typedefs.has_key?(t)
@ffi_typedefs[t]
elsif t.is_a?(Class) && t < Struct
Type::POINTER
elsif t.is_a?(DataConverter)
# Add a typedef so next time the converter is used, it hits the cache
typedef Type::Mapped.new(t), t
end || FFI.find_type(t)
end
private
# Generic enum builder
# @param [Class] klass can be one of FFI::Enum or FFI::Bitmask
# @param args (see #enum or #bitmask)
def generic_enum(klass, *args)
native_type = args.first.kind_of?(FFI::Type) ? args.shift : nil
name, values = if args[0].kind_of?(Symbol) && args[1].kind_of?(Array)
[ args[0], args[1] ]
elsif args[0].kind_of?(Array)
[ nil, args[0] ]
else
[ nil, args ]
end
@ffi_enums = FFI::Enums.new unless defined?(@ffi_enums)
@ffi_enums << (e = native_type ? klass.new(native_type, values, name) : klass.new(values, name))
# If called with a name, add a typedef alias
typedef(e, name) if name
e
end
public
# @overload enum(name, values)
# Create a named enum.
# @example
# enum :foo, [:zero, :one, :two] # named enum
# @param [Symbol] name name for new enum
# @param [Array] values values for enum
# @overload enum(*args)
# Create an unnamed enum.
# @example
# enum :zero, :one, :two # unnamed enum
# @param args values for enum
# @overload enum(values)
# Create an unnamed enum.
# @example
# enum [:zero, :one, :two] # unnamed enum, equivalent to above example
# @param [Array] values values for enum
# @overload enum(native_type, name, values)
# Create a named enum and specify the native type.
# @example
# enum FFI::Type::UINT64, :foo, [:zero, :one, :two] # named enum
# @param [FFI::Type] native_type native type for new enum
# @param [Symbol] name name for new enum
# @param [Array] values values for enum
# @overload enum(native_type, *args)
# Create an unnamed enum and specify the native type.
# @example
# enum FFI::Type::UINT64, :zero, :one, :two # unnamed enum
# @param [FFI::Type] native_type native type for new enum
# @param args values for enum
# @overload enum(native_type, values)
# Create an unnamed enum and specify the native type.
# @example
# enum Type::UINT64, [:zero, :one, :two] # unnamed enum, equivalent to above example
# @param [FFI::Type] native_type native type for new enum
# @param [Array] values values for enum
# @return [FFI::Enum]
# Create a new {FFI::Enum}.
def enum(*args)
generic_enum(FFI::Enum, *args)
end
# @overload bitmask(name, values)
# Create a named bitmask
# @example
# bitmask :foo, [:red, :green, :blue] # bits 0,1,2 are used
# bitmask :foo, [:red, :green, 5, :blue] # bits 0,5,6 are used
# @param [Symbol] name for new bitmask
# @param [Array<Symbol, Integer>] values for new bitmask
# @overload bitmask(*args)
# Create an unamed bitmask
# @example
# bm = bitmask :red, :green, :blue # bits 0,1,2 are used
# bm = bitmask :red, :green, 5, blue # bits 0,5,6 are used
# @param [Symbol, Integer] args values for new bitmask
# @overload bitmask(values)
# Create an unamed bitmask
# @example
# bm = bitmask [:red, :green, :blue] # bits 0,1,2 are used
# bm = bitmask [:red, :green, 5, blue] # bits 0,5,6 are used
# @param [Array<Symbol, Integer>] values for new bitmask
# @overload bitmask(native_type, name, values)
# Create a named enum and specify the native type.
# @example
# bitmask FFI::Type::UINT64, :foo, [:red, :green, :blue]
# @param [FFI::Type] native_type native type for new bitmask
# @param [Symbol] name for new bitmask
# @param [Array<Symbol, Integer>] values for new bitmask
# @overload bitmask(native_type, *args)
# @example
# bitmask FFI::Type::UINT64, :red, :green, :blue
# @param [FFI::Type] native_type native type for new bitmask
# @param [Symbol, Integer] args values for new bitmask
# @overload bitmask(native_type, values)
# Create a named enum and specify the native type.
# @example
# bitmask FFI::Type::UINT64, [:red, :green, :blue]
# @param [FFI::Type] native_type native type for new bitmask
# @param [Array<Symbol, Integer>] values for new bitmask
# @return [FFI::Bitmask]
# Create a new FFI::Bitmask
def bitmask(*args)
generic_enum(FFI::Bitmask, *args)
end
# @param name
# @return [FFI::Enum]
# Find an enum by name.
def enum_type(name)
@ffi_enums.find(name) if defined?(@ffi_enums)
end
# @param symbol
# @return [FFI::Enum]
# Find an enum by a symbol it contains.
def enum_value(symbol)
@ffi_enums.__map_symbol(symbol)
end
# Retrieve all attached functions and their function signature
#
# This method returns a Hash of method names of attached functions connected by #attach_function and the corresponding function type.
# The function type responds to #return_type and #param_types which return the FFI types of the function signature.
#
# @return [Hash< Symbol => [FFI::Function, FFI::VariadicInvoker] >]
def attached_functions
@ffi_functions || {}
end
# Retrieve all attached variables and their type
#
# This method returns a Hash of variable names and the corresponding type or variables connected by #attach_variable .
#
# @return [Hash< Symbol => ffi_type >]
def attached_variables
(
(defined?(@ffi_gsvars) ? @ffi_gsvars : {}).map do |name, gvar|
[name, gvar.class]
end +
(defined?(@ffi_gvars) ? @ffi_gvars : {}).map do |name, gvar|
[name, gvar.layout[:gvar].type]
end
).to_h
end
# Freeze all definitions of the module
#
# This freezes the module's definitions, so that it can be used in a Ractor.
# No further functions or variables can be attached and no further enums or typedefs can be created in this module afterwards.
def freeze
# @ffi_function_procs is only used on aarch64-mingw-ucrt
instance_variable_get("@ffi_function_procs")&.each do |name, func|
# Redefine attached functions as Ractor-shareable.
# The function Proc can't be shareable from the beginning, since it references enums and typedefs.
this = FFI.make_shareable(func)
body = FFI.shareable_proc(self: nil) do |*args, &block|
this.call(*args, &block)
end
undef_method(name)
singleton_class.undef_method(name)
define_method(name, body)
define_singleton_method(name, body)
end
instance_variables.each do |name|
var = instance_variable_get(name)
FFI.make_shareable(var)
end
super
nil
end
end
end
@@ -0,0 +1,109 @@
#
# Copyright (C) 2023 Lars Kanis
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
module FFI
# Transform a generic library name and ABI number to a platform library name
#
# Example:
# module LibVips
# extend FFI::Library
# ffi_lib LibraryPath.new("vips", abi_number: 42)
# end
#
# This translates to the following library file names:
# libvips-42.dll on Windows
# libvips.so.42 on Linux
# libvips.42.dylib on Macos
#
# See https://packaging.ubuntu.com/html/libraries.html for more information about library naming.
class LibraryPath
attr_reader :name
attr_reader :abi_number
attr_reader :root
# Build a new library path
#
# * <tt>name</tt> : The name of the library without file prefix or suffix.
# * <tt>abi_number</tt> : The ABI number of the library.
# * <tt>root</tt> : An optional base path prepended to the library name.
def initialize(name, abi_number: nil, root: nil)
@name = name
@abi_number = abi_number
@root = root
end
def self.wrap(value)
# We allow instances of LibraryPath to pass through transparently:
return value if value.is_a?(self)
# We special case a library named 'c' to be the standard C library:
return Library::LIBC if value == 'c'
# If provided a relative file name we convert it into a library path:
if value && File.basename(value) == value
return self.new(value)
end
# Otherwise, we assume it's a full path to a library:
return value
end
def full_name
# If the abi_number is given, we format it specifically according to platform rules:
if abi_number
if Platform.windows?
"#{Platform::LIBPREFIX}#{name}-#{abi_number}.#{Platform::LIBSUFFIX}"
elsif Platform.mac?
"#{Platform::LIBPREFIX}#{name}.#{abi_number}.#{Platform::LIBSUFFIX}"
else # Linux? BSD? etc.
"#{Platform::LIBPREFIX}#{name}.#{Platform::LIBSUFFIX}.#{abi_number}"
end
else
# Otherwise we just add prefix and suffix:
lib = name
# Add library prefix if missing
lib = Platform::LIBPREFIX + lib unless lib =~ /^#{Platform::LIBPREFIX}/
# Add library extension if missing
r = Platform.windows? || Platform.mac? ? "\\.#{Platform::LIBSUFFIX}$" : "\\.so($|\\.[1234567890]+)"
lib += ".#{Platform::LIBSUFFIX}" unless lib =~ /#{r}/
lib
end
end
def to_s
if root
# If the root path is given, we generate the full path:
File.join(root, full_name)
else
full_name
end
end
end
end
@@ -0,0 +1,84 @@
# Copyright (C) 2008 Mike Dalessio
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module FFI
#
# FFI::ManagedStruct allows custom garbage-collection of your FFI::Structs.
#
# The typical use case would be when interacting with a library
# that has a nontrivial memory management design, such as a linked
# list or a binary tree.
#
# When the {Struct} instance is garbage collected, FFI::ManagedStruct will
# invoke the class's release() method during object finalization.
#
# @example Example usage:
# module MyLibrary
# ffi_lib "libmylibrary"
# attach_function :new_dlist, [], :pointer
# attach_function :destroy_dlist, [:pointer], :void
# end
#
# class DoublyLinkedList < FFI::ManagedStruct
# @@@
# struct do |s|
# s.name 'struct dlist'
# s.include 'dlist.h'
# s.field :head, :pointer
# s.field :tail, :pointer
# end
# @@@
#
# def self.release ptr
# MyLibrary.destroy_dlist(ptr)
# end
# end
#
# begin
# ptr = DoublyLinkedList.new(MyLibrary.new_dlist)
# # do something with the list
# end
# # struct is out of scope, and will be GC'd using DoublyLinkedList#release
#
#
class ManagedStruct < FFI::Struct
# @overload initialize(pointer)
# @param [Pointer] pointer
# Create a new ManagedStruct which will invoke the class method #release on
# @overload initialize
# A new instance of FFI::ManagedStruct.
def initialize(pointer=nil)
raise NoMethodError, "release() not implemented for class #{self}" unless self.class.respond_to?(:release, true)
raise ArgumentError, "Must supply a pointer to memory for the Struct" unless pointer
super AutoPointer.new(pointer, self.class.method(:release))
end
end
end
@@ -0,0 +1 @@
# This class is now implemented in C
@@ -0,0 +1,187 @@
#
# Copyright (C) 2008, 2009 Wayne Meissner
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
require 'rbconfig'
require_relative 'compat'
module FFI
class PlatformError < LoadError; end
# This module defines different constants and class methods to play with
# various platforms.
module Platform
OS = FFI.make_shareable(case RbConfig::CONFIG['host_os'].downcase
when /linux/
"linux"
when /darwin/
"darwin"
when /freebsd/
"freebsd"
when /netbsd/
"netbsd"
when /openbsd/
"openbsd"
when /dragonfly/
"dragonflybsd"
when /sunos|solaris/
"solaris"
when /mingw|mswin/
"windows"
else
RbConfig::CONFIG['host_os'].downcase
end)
OSVERSION = RbConfig::CONFIG['host_os'].gsub(/[^\d]/, '').to_i
CPU = FFI.make_shareable(RbConfig::CONFIG['host_cpu'])
ARCH = FFI.make_shareable(case CPU.downcase
when /amd64|x86_64|x64/
"x86_64"
when /i\d86|x86|i86pc/
"i386"
when /ppc64|powerpc64/
"powerpc64"
when /ppc|powerpc/
"powerpc"
when /sparcv9|sparc64/
"sparcv9"
when /arm64|aarch64/ # MacOS calls it "arm64", other operating systems "aarch64"
"aarch64"
when /^arm/
if OS == "darwin" # Ruby before 3.0 reports "arm" instead of "arm64" as host_cpu on darwin
"aarch64"
else
"arm"
end
else
RbConfig::CONFIG['host_cpu']
end)
private
# @param [String) os
# @return [Boolean]
# Test if current OS is +os+.
def self.is_os(os)
OS == os
end
IS_GNU = defined?(GNU_LIBC)
IS_LINUX = is_os("linux")
IS_MAC = is_os("darwin")
IS_FREEBSD = is_os("freebsd")
IS_NETBSD = is_os("netbsd")
IS_OPENBSD = is_os("openbsd")
IS_DRAGONFLYBSD = is_os("dragonfly")
IS_SOLARIS = is_os("solaris")
IS_WINDOWS = is_os("windows")
IS_BSD = IS_MAC || IS_FREEBSD || IS_NETBSD || IS_OPENBSD || IS_DRAGONFLYBSD
# Add the version for known ABI breaks
name_version = "12" if IS_FREEBSD && OSVERSION >= 12 # 64-bit inodes
NAME = FFI.make_shareable("#{ARCH}-#{OS}#{name_version}")
CONF_DIR = FFI.make_shareable(File.join(File.dirname(__FILE__), 'platform', NAME))
public
LIBPREFIX = FFI.make_shareable(case OS
when /windows|msys/
''
when /cygwin/
'cyg'
else
'lib'
end)
LIBSUFFIX = FFI.make_shareable(case OS
when /darwin/
'dylib'
when /linux|bsd|solaris/
'so'
when /windows|cygwin|msys/
'dll'
else
# Punt and just assume a sane unix (i.e. anything but AIX)
'so'
end)
LIBC = FFI.make_shareable(if IS_WINDOWS
crtname = RbConfig::CONFIG["RUBY_SO_NAME"][/msvc\w+/] || 'ucrtbase'
"#{crtname}.dll"
elsif IS_GNU
GNU_LIBC
elsif OS == 'cygwin'
"cygwin1.dll"
elsif OS == 'msys'
# Not sure how msys 1.0 behaves, tested on MSYS2.
"msys-2.0.dll"
else
"#{LIBPREFIX}c.#{LIBSUFFIX}"
end)
LITTLE_ENDIAN = 1234 unless defined?(LITTLE_ENDIAN)
BIG_ENDIAN = 4321 unless defined?(BIG_ENDIAN)
unless defined?(BYTE_ORDER)
BYTE_ORDER = [0x12345678].pack("I") == [0x12345678].pack("N") ? BIG_ENDIAN : LITTLE_ENDIAN
end
# Test if current OS is a *BSD (include MAC)
# @return [Boolean]
def self.bsd?
IS_BSD
end
# Test if current OS is Windows
# @return [Boolean]
def self.windows?
IS_WINDOWS
end
# Test if current OS is Mac OS
# @return [Boolean]
def self.mac?
IS_MAC
end
# Test if current OS is Solaris (Sun OS)
# @return [Boolean]
def self.solaris?
IS_SOLARIS
end
# Test if current OS is a unix OS
# @return [Boolean]
def self.unix?
!IS_WINDOWS
end
end
end
@@ -0,0 +1,130 @@
rbx.platform.typedef.__darwin_blkcnt_t = long_long
rbx.platform.typedef.__darwin_blksize_t = int
rbx.platform.typedef.__darwin_clock_t = ulong
rbx.platform.typedef.__darwin_ct_rune_t = int
rbx.platform.typedef.__darwin_dev_t = int
rbx.platform.typedef.__darwin_fsblkcnt_t = uint
rbx.platform.typedef.__darwin_fsfilcnt_t = uint
rbx.platform.typedef.__darwin_gid_t = uint
rbx.platform.typedef.__darwin_id_t = uint
rbx.platform.typedef.__darwin_ino64_t = ulong_long
rbx.platform.typedef.__darwin_ino_t = ulong_long
rbx.platform.typedef.__darwin_intptr_t = long
rbx.platform.typedef.__darwin_mach_port_name_t = uint
rbx.platform.typedef.__darwin_mach_port_t = uint
rbx.platform.typedef.__darwin_mode_t = ushort
rbx.platform.typedef.__darwin_natural_t = uint
rbx.platform.typedef.__darwin_off_t = long_long
rbx.platform.typedef.__darwin_pid_t = int
rbx.platform.typedef.__darwin_pthread_key_t = ulong
rbx.platform.typedef.__darwin_ptrdiff_t = long
rbx.platform.typedef.__darwin_rune_t = int
rbx.platform.typedef.__darwin_sigset_t = uint
rbx.platform.typedef.__darwin_size_t = ulong
rbx.platform.typedef.__darwin_socklen_t = uint
rbx.platform.typedef.__darwin_ssize_t = long
rbx.platform.typedef.__darwin_suseconds_t = int
rbx.platform.typedef.__darwin_time_t = long
rbx.platform.typedef.__darwin_uid_t = uint
rbx.platform.typedef.__darwin_useconds_t = uint
rbx.platform.typedef.__darwin_uuid_string_t[37] = char
rbx.platform.typedef.__darwin_uuid_t[16] = uchar
rbx.platform.typedef.__darwin_wchar_t = int
rbx.platform.typedef.__darwin_wint_t = int
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = ulong
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.errno_t = int
rbx.platform.typedef.fd_mask = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = uint
rbx.platform.typedef.fsfilcnt_t = uint
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino64_t = ulong_long
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = short
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.nlink_t = ushort
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = ulong
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long_long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.rsize_t = ulong
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.sae_associd_t = uint
rbx.platform.typedef.sae_connid_t = uint
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.syscall_arg_t = ulong_long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = ushort
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.user_addr_t = ulong_long
rbx.platform.typedef.user_long_t = long_long
rbx.platform.typedef.user_off_t = long_long
rbx.platform.typedef.user_size_t = ulong_long
rbx.platform.typedef.user_ssize_t = long_long
rbx.platform.typedef.user_time_t = long_long
rbx.platform.typedef.user_ulong_t = ulong_long
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.wchar_t = int
@@ -0,0 +1,128 @@
rbx.platform.typedef.__clock_t = int
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpuid_t = ulong
rbx.platform.typedef.__dev_t = int
rbx.platform.typedef.__fd_mask = int
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__in_addr_t = uint
rbx.platform.typedef.__in_port_t = ushort
rbx.platform.typedef.__ino_t = uint
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__paddr_t = ulong
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__psize_t = ulong
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = long_long
rbx.platform.typedef.__rlim_t = ulong_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = int
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vaddr_t = ulong
rbx.platform.typedef.__vsize_t = ulong
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wctrans_t = pointer
rbx.platform.typedef.__wctype_t = pointer
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = int
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpuid_t = ulong
rbx.platform.typedef.daddr32_t = int
rbx.platform.typedef.daddr64_t = long_long
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = uint
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.paddr_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.psize_t = ulong
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long_long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.time_t = int
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vaddr_t = ulong
rbx.platform.typedef.vsize_t = ulong
@@ -0,0 +1,181 @@
rbx.platform.typedef.*) = pointer
rbx.platform.typedef.___wchar_t = uint
rbx.platform.typedef.__accmode_t = int
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = int
rbx.platform.typedef.__char16_t = ushort
rbx.platform.typedef.__char32_t = uint
rbx.platform.typedef.__clock_t = int
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpulevel_t = int
rbx.platform.typedef.__cpusetid_t = int
rbx.platform.typedef.__cpuwhich_t = int
rbx.platform.typedef.__critical_t = long
rbx.platform.typedef.__ct_rune_t = int
rbx.platform.typedef.__daddr_t = long
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = ulong
rbx.platform.typedef.__fflags_t = uint
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intfptr_t = long
rbx.platform.typedef.__intmax_t = long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__lwpid_t = int
rbx.platform.typedef.__mode_t = ushort
rbx.platform.typedef.__nl_item = int
rbx.platform.typedef.__nlink_t = ulong
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = long
rbx.platform.typedef.__rlim_t = long
rbx.platform.typedef.__rman_res_t = ulong
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = long
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__u_register_t = ulong
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintfptr_t = ulong
rbx.platform.typedef.__uintmax_t = ulong
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vm_offset_t = ulong
rbx.platform.typedef.__vm_paddr_t = ulong
rbx.platform.typedef.__vm_size_t = ulong
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.accmode_t = int
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.c_caddr_t = pointer
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.cap_ioctl_t = ulong
rbx.platform.typedef.clock_t = int
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpulevel_t = int
rbx.platform.typedef.cpusetid_t = int
rbx.platform.typedef.cpuwhich_t = int
rbx.platform.typedef.critical_t = long
rbx.platform.typedef.daddr_t = long
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = ulong
rbx.platform.typedef.fflags_t = uint
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = long
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long
rbx.platform.typedef.int_fast8_t = int
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = long
rbx.platform.typedef.kpaddr_t = ulong
rbx.platform.typedef.ksize_t = ulong
rbx.platform.typedef.kssize_t = long
rbx.platform.typedef.kvaddr_t = ulong
rbx.platform.typedef.lwpid_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.off64_t = long
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = int
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = long
rbx.platform.typedef.rman_res_t = ulong
rbx.platform.typedef.rsize_t = ulong
rbx.platform.typedef.rune_t = int
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.sbintime_t = long
rbx.platform.typedef.segsz_t = long
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_register_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong
rbx.platform.typedef.uint_fast8_t = uint
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vm_offset_t = ulong
rbx.platform.typedef.vm_ooffset_t = ulong
rbx.platform.typedef.vm_paddr_t = ulong
rbx.platform.typedef.vm_pindex_t = ulong
rbx.platform.typedef.vm_size_t = ulong
rbx.platform.typedef.wchar_t = uint
@@ -0,0 +1,175 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = int
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__kernel_caddr_t = string
rbx.platform.typedef.__kernel_clock_t = long
rbx.platform.typedef.__kernel_clockid_t = int
rbx.platform.typedef.__kernel_daddr_t = int
rbx.platform.typedef.__kernel_gid16_t = ushort
rbx.platform.typedef.__kernel_gid32_t = uint
rbx.platform.typedef.__kernel_gid_t = uint
rbx.platform.typedef.__kernel_ino_t = ulong
rbx.platform.typedef.__kernel_ipc_pid_t = int
rbx.platform.typedef.__kernel_key_t = int
rbx.platform.typedef.__kernel_loff_t = long_long
rbx.platform.typedef.__kernel_long_t = long
rbx.platform.typedef.__kernel_mode_t = uint
rbx.platform.typedef.__kernel_mqd_t = int
rbx.platform.typedef.__kernel_off_t = long
rbx.platform.typedef.__kernel_old_dev_t = uint
rbx.platform.typedef.__kernel_old_gid_t = ushort
rbx.platform.typedef.__kernel_old_time_t = long
rbx.platform.typedef.__kernel_old_uid_t = ushort
rbx.platform.typedef.__kernel_pid_t = int
rbx.platform.typedef.__kernel_ptrdiff_t = long
rbx.platform.typedef.__kernel_size_t = ulong
rbx.platform.typedef.__kernel_ssize_t = long
rbx.platform.typedef.__kernel_suseconds_t = long
rbx.platform.typedef.__kernel_time64_t = long_long
rbx.platform.typedef.__kernel_time_t = long
rbx.platform.typedef.__kernel_timer_t = int
rbx.platform.typedef.__kernel_uid16_t = ushort
rbx.platform.typedef.__kernel_uid32_t = uint
rbx.platform.typedef.__kernel_uid_t = uint
rbx.platform.typedef.__kernel_ulong_t = ulong
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds64_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__thrd_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__tss_t = uint
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = long
rbx.platform.typedef.int_fast32_t = long
rbx.platform.typedef.int_fast64_t = long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = ulong
rbx.platform.typedef.uint_fast32_t = ulong
rbx.platform.typedef.uint_fast64_t = ulong
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.wchar_t = uint
@@ -0,0 +1,134 @@
rbx.platform.typedef.__blkcnt_t = long_long
rbx.platform.typedef.__blksize_t = int
rbx.platform.typedef.__clock_t = long_long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpuid_t = ulong
rbx.platform.typedef.__dev_t = int
rbx.platform.typedef.__fd_mask = uint
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__fsblkcnt_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong_long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__in_addr_t = uint
rbx.platform.typedef.__in_port_t = ushort
rbx.platform.typedef.__ino_t = ulong_long
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__paddr_t = ulong
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__psize_t = ulong
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = long
rbx.platform.typedef.__rlim_t = ulong_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = int
rbx.platform.typedef.__time_t = long_long
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vaddr_t = ulong
rbx.platform.typedef.__vsize_t = ulong
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wctrans_t = pointer
rbx.platform.typedef.__wctype_t = pointer
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = long_long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpuid_t = ulong
rbx.platform.typedef.daddr32_t = int
rbx.platform.typedef.daddr_t = long_long
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.paddr_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.psize_t = ulong
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.sigset_t = uint
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.time_t = long_long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vaddr_t = ulong
rbx.platform.typedef.vsize_t = ulong
@@ -0,0 +1,52 @@
rbx.platform.typedef.__time32_t = long
rbx.platform.typedef.__time64_t = long_long
rbx.platform.typedef._dev_t = uint
rbx.platform.typedef._ino_t = ushort
rbx.platform.typedef._mode_t = ushort
rbx.platform.typedef._off64_t = long_long
rbx.platform.typedef._off_t = long
rbx.platform.typedef._pid_t = long_long
rbx.platform.typedef._sigset_t = ulong_long
rbx.platform.typedef.dev_t = uint
rbx.platform.typedef.errno_t = int
rbx.platform.typedef.ino_t = ushort
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = short
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = long_long
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.off32_t = long
rbx.platform.typedef.off64_t = long_long
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = long_long
rbx.platform.typedef.ptrdiff_t = long_long
rbx.platform.typedef.rsize_t = ulong_long
rbx.platform.typedef.size_t = ulong_long
rbx.platform.typedef.ssize_t = long_long
rbx.platform.typedef.time_t = long_long
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = ushort
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = ulong_long
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.wchar_t = ushort
rbx.platform.typedef.wctype_t = ushort
rbx.platform.typedef.wint_t = ushort
@@ -0,0 +1,152 @@
rbx.platform.typedef.*) = pointer
rbx.platform.typedef.__accmode_t = int
rbx.platform.typedef.__blkcnt_t = long_long
rbx.platform.typedef.__blksize_t = uint
rbx.platform.typedef.__clock_t = ulong
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpulevel_t = int
rbx.platform.typedef.__cpumask_t = uint
rbx.platform.typedef.__cpusetid_t = int
rbx.platform.typedef.__cpuwhich_t = int
rbx.platform.typedef.__critical_t = int
rbx.platform.typedef.__ct_rune_t = int
rbx.platform.typedef.__dev_t = uint
rbx.platform.typedef.__fd_mask = ulong
rbx.platform.typedef.__fflags_t = uint
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__fsblkcnt_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong_long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = long_long
rbx.platform.typedef.__ino_t = uint
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intfptr_t = int
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__lwpid_t = int
rbx.platform.typedef.__mode_t = ushort
rbx.platform.typedef.__nl_item = int
rbx.platform.typedef.__nlink_t = ushort
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__ptrdiff_t = int
rbx.platform.typedef.__register_t = int
rbx.platform.typedef.__rlim_t = long_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = uint
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__time_t = int
rbx.platform.typedef.__u_register_t = uint
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintfptr_t = uint
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = uint
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vm_offset_t = uint
rbx.platform.typedef.__vm_ooffset_t = long_long
rbx.platform.typedef.__vm_paddr_t = uint
rbx.platform.typedef.__vm_pindex_t = ulong_long
rbx.platform.typedef.__vm_size_t = uint
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.accmode_t = int
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = uint
rbx.platform.typedef.c_caddr_t = pointer
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = ulong
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpulevel_t = int
rbx.platform.typedef.cpumask_t = uint
rbx.platform.typedef.cpusetid_t = int
rbx.platform.typedef.cpuwhich_t = int
rbx.platform.typedef.critical_t = int
rbx.platform.typedef.daddr_t = long_long
rbx.platform.typedef.dev_t = uint
rbx.platform.typedef.fd_mask = ulong
rbx.platform.typedef.fflags_t = uint
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = long_long
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = uint
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.key_t = long
rbx.platform.typedef.lwpid_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.nlink_t = ushort
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = int
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = int
rbx.platform.typedef.rlim_t = long_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_register_t = uint
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vm_offset_t = uint
rbx.platform.typedef.vm_ooffset_t = long_long
rbx.platform.typedef.vm_paddr_t = uint
rbx.platform.typedef.vm_pindex_t = ulong_long
rbx.platform.typedef.vm_size_t = uint
@@ -0,0 +1,152 @@
rbx.platform.typedef.*) = pointer
rbx.platform.typedef.__accmode_t = int
rbx.platform.typedef.__blkcnt_t = long_long
rbx.platform.typedef.__blksize_t = uint
rbx.platform.typedef.__clock_t = ulong
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpulevel_t = int
rbx.platform.typedef.__cpumask_t = uint
rbx.platform.typedef.__cpusetid_t = int
rbx.platform.typedef.__cpuwhich_t = int
rbx.platform.typedef.__critical_t = int
rbx.platform.typedef.__ct_rune_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = ulong
rbx.platform.typedef.__fflags_t = uint
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__fsblkcnt_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong_long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = long_long
rbx.platform.typedef.__ino_t = ulong_long
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intfptr_t = int
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__lwpid_t = int
rbx.platform.typedef.__mode_t = ushort
rbx.platform.typedef.__nl_item = int
rbx.platform.typedef.__nlink_t = ulong_long
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__ptrdiff_t = int
rbx.platform.typedef.__register_t = int
rbx.platform.typedef.__rlim_t = long_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = uint
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__time_t = int
rbx.platform.typedef.__u_register_t = uint
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintfptr_t = uint
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = uint
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vm_offset_t = uint
rbx.platform.typedef.__vm_ooffset_t = long_long
rbx.platform.typedef.__vm_paddr_t = uint
rbx.platform.typedef.__vm_pindex_t = ulong_long
rbx.platform.typedef.__vm_size_t = uint
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.accmode_t = int
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = uint
rbx.platform.typedef.c_caddr_t = pointer
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = ulong
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpulevel_t = int
rbx.platform.typedef.cpumask_t = uint
rbx.platform.typedef.cpusetid_t = int
rbx.platform.typedef.cpuwhich_t = int
rbx.platform.typedef.critical_t = int
rbx.platform.typedef.daddr_t = long_long
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = ulong
rbx.platform.typedef.fflags_t = uint
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = long_long
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.key_t = long
rbx.platform.typedef.lwpid_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.nlink_t = ulong_long
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = int
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = int
rbx.platform.typedef.rlim_t = long_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_register_t = uint
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vm_offset_t = uint
rbx.platform.typedef.vm_ooffset_t = long_long
rbx.platform.typedef.vm_paddr_t = uint
rbx.platform.typedef.vm_pindex_t = ulong_long
rbx.platform.typedef.vm_size_t = uint
@@ -0,0 +1,132 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = int
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.ptrdiff_t = int
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.wchar_t = uint
@@ -0,0 +1,178 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = int
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__kernel_caddr_t = string
rbx.platform.typedef.__kernel_clock_t = long
rbx.platform.typedef.__kernel_clockid_t = int
rbx.platform.typedef.__kernel_daddr_t = int
rbx.platform.typedef.__kernel_gid16_t = ushort
rbx.platform.typedef.__kernel_gid32_t = uint
rbx.platform.typedef.__kernel_gid_t = uint
rbx.platform.typedef.__kernel_ino64_t = ulong_long
rbx.platform.typedef.__kernel_ino_t = ulong
rbx.platform.typedef.__kernel_ipc_pid_t = ushort
rbx.platform.typedef.__kernel_key_t = int
rbx.platform.typedef.__kernel_loff_t = long_long
rbx.platform.typedef.__kernel_long_t = long
rbx.platform.typedef.__kernel_mode_t = ushort
rbx.platform.typedef.__kernel_mqd_t = int
rbx.platform.typedef.__kernel_off64_t = long_long
rbx.platform.typedef.__kernel_off_t = long
rbx.platform.typedef.__kernel_old_dev_t = uint
rbx.platform.typedef.__kernel_old_gid_t = uint
rbx.platform.typedef.__kernel_old_time_t = long
rbx.platform.typedef.__kernel_old_uid_t = uint
rbx.platform.typedef.__kernel_pid_t = int
rbx.platform.typedef.__kernel_ptrdiff_t = int
rbx.platform.typedef.__kernel_size_t = uint
rbx.platform.typedef.__kernel_ssize_t = int
rbx.platform.typedef.__kernel_suseconds_t = long
rbx.platform.typedef.__kernel_time64_t = long_long
rbx.platform.typedef.__kernel_time_t = long
rbx.platform.typedef.__kernel_timer_t = int
rbx.platform.typedef.__kernel_uid16_t = ushort
rbx.platform.typedef.__kernel_uid32_t = uint
rbx.platform.typedef.__kernel_uid_t = uint
rbx.platform.typedef.__kernel_ulong_t = ulong
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds64_t = long_long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__thrd_t = ulong
rbx.platform.typedef.__time64_t = long_long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__tss_t = uint
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.ptrdiff_t = int
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.wchar_t = long
@@ -0,0 +1,178 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = int
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__kernel_caddr_t = string
rbx.platform.typedef.__kernel_clock_t = long
rbx.platform.typedef.__kernel_clockid_t = int
rbx.platform.typedef.__kernel_daddr_t = int
rbx.platform.typedef.__kernel_gid16_t = ushort
rbx.platform.typedef.__kernel_gid32_t = uint
rbx.platform.typedef.__kernel_gid_t = uint
rbx.platform.typedef.__kernel_ino64_t = ulong_long
rbx.platform.typedef.__kernel_ino_t = ulong
rbx.platform.typedef.__kernel_ipc_pid_t = ushort
rbx.platform.typedef.__kernel_key_t = int
rbx.platform.typedef.__kernel_loff_t = long_long
rbx.platform.typedef.__kernel_long_t = long
rbx.platform.typedef.__kernel_mode_t = ushort
rbx.platform.typedef.__kernel_mqd_t = int
rbx.platform.typedef.__kernel_off64_t = long_long
rbx.platform.typedef.__kernel_off_t = long
rbx.platform.typedef.__kernel_old_dev_t = uint
rbx.platform.typedef.__kernel_old_gid_t = uint
rbx.platform.typedef.__kernel_old_time_t = long
rbx.platform.typedef.__kernel_old_uid_t = uint
rbx.platform.typedef.__kernel_pid_t = int
rbx.platform.typedef.__kernel_ptrdiff_t = int
rbx.platform.typedef.__kernel_size_t = uint
rbx.platform.typedef.__kernel_ssize_t = int
rbx.platform.typedef.__kernel_suseconds_t = long
rbx.platform.typedef.__kernel_time64_t = long_long
rbx.platform.typedef.__kernel_time_t = long
rbx.platform.typedef.__kernel_timer_t = int
rbx.platform.typedef.__kernel_uid16_t = ushort
rbx.platform.typedef.__kernel_uid32_t = uint
rbx.platform.typedef.__kernel_uid_t = uint
rbx.platform.typedef.__kernel_ulong_t = ulong
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds64_t = long_long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__thrd_t = ulong
rbx.platform.typedef.__time64_t = long_long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__tss_t = uint
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.ptrdiff_t = int
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.wchar_t = long
@@ -0,0 +1,3 @@
rbx.platform.typedef.ptrdiff_t = int
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.ssize_t = int
@@ -0,0 +1,100 @@
rbx.platform.typedef.__darwin_blkcnt_t = long_long
rbx.platform.typedef.__darwin_blksize_t = int
rbx.platform.typedef.__darwin_clock_t = ulong
rbx.platform.typedef.__darwin_ct_rune_t = int
rbx.platform.typedef.__darwin_dev_t = int
rbx.platform.typedef.__darwin_fsblkcnt_t = uint
rbx.platform.typedef.__darwin_fsfilcnt_t = uint
rbx.platform.typedef.__darwin_gid_t = uint
rbx.platform.typedef.__darwin_id_t = uint
rbx.platform.typedef.__darwin_ino64_t = ulong_long
rbx.platform.typedef.__darwin_ino_t = ulong_long
rbx.platform.typedef.__darwin_intptr_t = long
rbx.platform.typedef.__darwin_mach_port_name_t = uint
rbx.platform.typedef.__darwin_mach_port_t = uint
rbx.platform.typedef.__darwin_mode_t = ushort
rbx.platform.typedef.__darwin_natural_t = uint
rbx.platform.typedef.__darwin_off_t = long_long
rbx.platform.typedef.__darwin_pid_t = int
rbx.platform.typedef.__darwin_pthread_key_t = ulong
rbx.platform.typedef.__darwin_ptrdiff_t = int
rbx.platform.typedef.__darwin_rune_t = int
rbx.platform.typedef.__darwin_sigset_t = uint
rbx.platform.typedef.__darwin_size_t = ulong
rbx.platform.typedef.__darwin_socklen_t = uint
rbx.platform.typedef.__darwin_ssize_t = long
rbx.platform.typedef.__darwin_suseconds_t = int
rbx.platform.typedef.__darwin_time_t = long
rbx.platform.typedef.__darwin_uid_t = uint
rbx.platform.typedef.__darwin_useconds_t = uint
rbx.platform.typedef.__darwin_uuid_t[16] = uchar
rbx.platform.typedef.__darwin_wchar_t = int
rbx.platform.typedef.__darwin_wint_t = int
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = ulong
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fd_mask = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = uint
rbx.platform.typedef.fsfilcnt_t = uint
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino64_t = ulong_long
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.nlink_t = ushort
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = ulong
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = int
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.syscall_arg_t = ulong_long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.user_addr_t = ulong_long
rbx.platform.typedef.user_long_t = long_long
rbx.platform.typedef.user_size_t = ulong_long
rbx.platform.typedef.user_ssize_t = long_long
rbx.platform.typedef.user_time_t = long_long
rbx.platform.typedef.user_ulong_t = ulong_long
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,152 @@
rbx.platform.typedef.*) = pointer
rbx.platform.typedef.__accmode_t = int
rbx.platform.typedef.__blkcnt_t = long_long
rbx.platform.typedef.__blksize_t = uint
rbx.platform.typedef.__clock_t = ulong
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpulevel_t = int
rbx.platform.typedef.__cpumask_t = uint
rbx.platform.typedef.__cpusetid_t = int
rbx.platform.typedef.__cpuwhich_t = int
rbx.platform.typedef.__critical_t = int
rbx.platform.typedef.__ct_rune_t = int
rbx.platform.typedef.__dev_t = uint
rbx.platform.typedef.__fd_mask = ulong
rbx.platform.typedef.__fflags_t = uint
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__fsblkcnt_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong_long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = long_long
rbx.platform.typedef.__ino_t = uint
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intfptr_t = int
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__lwpid_t = int
rbx.platform.typedef.__mode_t = ushort
rbx.platform.typedef.__nl_item = int
rbx.platform.typedef.__nlink_t = ushort
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__ptrdiff_t = int
rbx.platform.typedef.__register_t = int
rbx.platform.typedef.__rlim_t = long_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = uint
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__u_register_t = uint
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintfptr_t = uint
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = uint
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vm_offset_t = uint
rbx.platform.typedef.__vm_ooffset_t = long_long
rbx.platform.typedef.__vm_paddr_t = uint
rbx.platform.typedef.__vm_pindex_t = ulong_long
rbx.platform.typedef.__vm_size_t = uint
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.accmode_t = int
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = uint
rbx.platform.typedef.c_caddr_t = pointer
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = ulong
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpulevel_t = int
rbx.platform.typedef.cpumask_t = uint
rbx.platform.typedef.cpusetid_t = int
rbx.platform.typedef.cpuwhich_t = int
rbx.platform.typedef.critical_t = int
rbx.platform.typedef.daddr_t = long_long
rbx.platform.typedef.dev_t = uint
rbx.platform.typedef.fd_mask = ulong
rbx.platform.typedef.fflags_t = uint
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = long_long
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = uint
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.key_t = long
rbx.platform.typedef.lwpid_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.nlink_t = ushort
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = int
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = int
rbx.platform.typedef.rlim_t = long_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_register_t = uint
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vm_offset_t = uint
rbx.platform.typedef.vm_ooffset_t = long_long
rbx.platform.typedef.vm_paddr_t = uint
rbx.platform.typedef.vm_pindex_t = ulong_long
rbx.platform.typedef.vm_size_t = uint
@@ -0,0 +1,152 @@
rbx.platform.typedef.*) = pointer
rbx.platform.typedef.__accmode_t = int
rbx.platform.typedef.__blkcnt_t = long_long
rbx.platform.typedef.__blksize_t = uint
rbx.platform.typedef.__clock_t = ulong
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpulevel_t = int
rbx.platform.typedef.__cpumask_t = uint
rbx.platform.typedef.__cpusetid_t = int
rbx.platform.typedef.__cpuwhich_t = int
rbx.platform.typedef.__critical_t = int
rbx.platform.typedef.__ct_rune_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = ulong
rbx.platform.typedef.__fflags_t = uint
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__fsblkcnt_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong_long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = long_long
rbx.platform.typedef.__ino_t = ulong_long
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intfptr_t = int
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__lwpid_t = int
rbx.platform.typedef.__mode_t = ushort
rbx.platform.typedef.__nl_item = int
rbx.platform.typedef.__nlink_t = ulong_long
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__ptrdiff_t = int
rbx.platform.typedef.__register_t = int
rbx.platform.typedef.__rlim_t = long_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = uint
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__time_t = int
rbx.platform.typedef.__u_register_t = uint
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintfptr_t = uint
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = uint
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vm_offset_t = uint
rbx.platform.typedef.__vm_ooffset_t = long_long
rbx.platform.typedef.__vm_paddr_t = uint
rbx.platform.typedef.__vm_pindex_t = ulong_long
rbx.platform.typedef.__vm_size_t = uint
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.accmode_t = int
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = uint
rbx.platform.typedef.c_caddr_t = pointer
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = ulong
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpulevel_t = int
rbx.platform.typedef.cpumask_t = uint
rbx.platform.typedef.cpusetid_t = int
rbx.platform.typedef.cpuwhich_t = int
rbx.platform.typedef.critical_t = int
rbx.platform.typedef.daddr_t = long_long
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = ulong
rbx.platform.typedef.fflags_t = uint
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = long_long
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.key_t = long
rbx.platform.typedef.lwpid_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.nlink_t = ulong_long
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = int
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = int
rbx.platform.typedef.rlim_t = long_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_register_t = uint
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vm_offset_t = uint
rbx.platform.typedef.vm_ooffset_t = long_long
rbx.platform.typedef.vm_paddr_t = uint
rbx.platform.typedef.vm_pindex_t = ulong_long
rbx.platform.typedef.vm_size_t = uint
@@ -0,0 +1,107 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long_long
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = uint
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsid_t = ulong_long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__pthread_key = int
rbx.platform.typedef.__pthread_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__sigset_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = uint
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.fsid_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = int
rbx.platform.typedef.pthread_t = int
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.sigset_t = ulong
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,103 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long_long
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,126 @@
rbx.platform.typedef.__clock_t = int
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpuid_t = ulong
rbx.platform.typedef.__dev_t = int
rbx.platform.typedef.__fd_mask = int
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__in_addr_t = uint
rbx.platform.typedef.__in_port_t = ushort
rbx.platform.typedef.__ino_t = uint
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__paddr_t = ulong
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__psize_t = ulong
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = int
rbx.platform.typedef.__rlim_t = ulong_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = int
rbx.platform.typedef.__swblk_t = int
rbx.platform.typedef.__time_t = int
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vaddr_t = ulong
rbx.platform.typedef.__vsize_t = ulong
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wctrans_t = pointer
rbx.platform.typedef.__wctype_t = pointer
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = int
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpuid_t = ulong
rbx.platform.typedef.daddr32_t = int
rbx.platform.typedef.daddr64_t = long_long
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = uint
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.paddr_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.psize_t = ulong
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = int
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.time_t = int
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vaddr_t = ulong
rbx.platform.typedef.vsize_t = ulong
@@ -0,0 +1,128 @@
rbx.platform.typedef.__clock_t = int
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpuid_t = ulong
rbx.platform.typedef.__dev_t = int
rbx.platform.typedef.__fd_mask = int
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__in_addr_t = uint
rbx.platform.typedef.__in_port_t = ushort
rbx.platform.typedef.__ino_t = uint
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__paddr_t = ulong
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__psize_t = ulong
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = int
rbx.platform.typedef.__rlim_t = ulong_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = int
rbx.platform.typedef.__swblk_t = int
rbx.platform.typedef.__time_t = int
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vaddr_t = ulong
rbx.platform.typedef.__vsize_t = ulong
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wctrans_t = pointer
rbx.platform.typedef.__wctype_t = pointer
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = int
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpuid_t = ulong
rbx.platform.typedef.daddr32_t = int
rbx.platform.typedef.daddr64_t = long_long
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = uint
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.paddr_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.psize_t = ulong
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = int
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.time_t = int
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vaddr_t = ulong
rbx.platform.typedef.vsize_t = ulong
@@ -0,0 +1,122 @@
rbx.platform.typedef.*caddr_t = char
rbx.platform.typedef.blkcnt64_t = long_long
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cnt_t = short
rbx.platform.typedef.cpu_flag_t = ushort
rbx.platform.typedef.ctid_t = long
rbx.platform.typedef.daddr_t = long
rbx.platform.typedef.datalink_id_t = uint
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.diskaddr_t = ulong_long
rbx.platform.typedef.disp_lock_t = uchar
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fds_mask = long
rbx.platform.typedef.fsblkcnt64_t = ulong_long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt64_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.hrtime_t = long_long
rbx.platform.typedef.id_t = long
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.index_t = short
rbx.platform.typedef.ino64_t = ulong_long
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.ipaddr_t = uint
rbx.platform.typedef.k_fltset_t = uint
rbx.platform.typedef.key_t = int
rbx.platform.typedef.len_t = ulong_long
rbx.platform.typedef.lgrp_id_t = long
rbx.platform.typedef.lock_t = uchar
rbx.platform.typedef.longlong_t = long_long
rbx.platform.typedef.major_t = ulong
rbx.platform.typedef.minor_t = ulong
rbx.platform.typedef.mode_t = ulong
rbx.platform.typedef.model_t = uint
rbx.platform.typedef.nfds_t = ulong
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.o_dev_t = short
rbx.platform.typedef.o_gid_t = ushort
rbx.platform.typedef.o_ino_t = ushort
rbx.platform.typedef.o_mode_t = ushort
rbx.platform.typedef.o_nlink_t = short
rbx.platform.typedef.o_pid_t = short
rbx.platform.typedef.o_uid_t = ushort
rbx.platform.typedef.off64_t = long_long
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.offset_t = long_long
rbx.platform.typedef.pad64_t = long_long
rbx.platform.typedef.pfn_t = ulong
rbx.platform.typedef.pgcnt_t = ulong
rbx.platform.typedef.pid_t = long
rbx.platform.typedef.poolid_t = long
rbx.platform.typedef.pri_t = short
rbx.platform.typedef.projid_t = long
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_t = uint
rbx.platform.typedef.ptrdiff_t = int
rbx.platform.typedef.rlim64_t = ulong_long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.spgcnt_t = long
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.sysid_t = short
rbx.platform.typedef.t_scalar_t = long
rbx.platform.typedef.t_uscalar_t = ulong
rbx.platform.typedef.taskid_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_longlong_t = ulong_long
rbx.platform.typedef.u_offset_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uchar_t = uchar
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uint_t = uint
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ulong_t = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.upad64_t = ulong_long
rbx.platform.typedef.use_t = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.ushort_t = ushort
rbx.platform.typedef.zoneid_t = long
@@ -0,0 +1,52 @@
rbx.platform.typedef.__time32_t = long
rbx.platform.typedef.__time64_t = long_long
rbx.platform.typedef._dev_t = uint
rbx.platform.typedef._ino_t = ushort
rbx.platform.typedef._mode_t = ushort
rbx.platform.typedef._off64_t = long_long
rbx.platform.typedef._off_t = long
rbx.platform.typedef._pid_t = int
rbx.platform.typedef._sigset_t = ulong
rbx.platform.typedef.dev_t = uint
rbx.platform.typedef.errno_t = int
rbx.platform.typedef.ino_t = ushort
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = short
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.off32_t = long
rbx.platform.typedef.off64_t = long_long
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.ptrdiff_t = int
rbx.platform.typedef.rsize_t = uint
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.time_t = long
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = ushort
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.wchar_t = ushort
rbx.platform.typedef.wctype_t = ushort
rbx.platform.typedef.wint_t = ushort
@@ -0,0 +1,104 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__in_addr_t = uint
rbx.platform.typedef.__in_port_t = ushort
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = ulong
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,141 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = int
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = long
rbx.platform.typedef.int_fast32_t = long
rbx.platform.typedef.int_fast64_t = long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = ulong
rbx.platform.typedef.uint_fast32_t = ulong
rbx.platform.typedef.uint_fast64_t = ulong
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.wchar_t = int
@@ -0,0 +1,102 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long_long
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,104 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = ulong
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,104 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = ulong
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,102 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long_long
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,102 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long_long
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,102 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long_long
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,104 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = ulong
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,104 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = ulong
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,180 @@
rbx.platform.typedef.UTF32Char = uint
rbx.platform.typedef.UniChar = ushort
rbx.platform.typedef.__cptr32 = string
rbx.platform.typedef.__cptr64 = ulong_long
rbx.platform.typedef.__long32_t = long
rbx.platform.typedef.__long64_t = int
rbx.platform.typedef.__ptr32 = pointer
rbx.platform.typedef.__ptr64 = ulong_long
rbx.platform.typedef.__ulong32_t = ulong
rbx.platform.typedef.__ulong64_t = uint
rbx.platform.typedef.aptx_t = ushort
rbx.platform.typedef.blkcnt32_t = int
rbx.platform.typedef.blkcnt64_t = ulong_long
rbx.platform.typedef.blkcnt_t = int
rbx.platform.typedef.blksize32_t = int
rbx.platform.typedef.blksize64_t = ulong_long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.boolean_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.chan_t = int
rbx.platform.typedef.class_id_t = uint
rbx.platform.typedef.clock_t = int
rbx.platform.typedef.clockid_t = long_long
rbx.platform.typedef.cnt64_t = long_long
rbx.platform.typedef.cnt_t = short
rbx.platform.typedef.crid_t = int
rbx.platform.typedef.daddr32_t = int
rbx.platform.typedef.daddr64_t = long_long
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev32_t = uint
rbx.platform.typedef.dev64_t = ulong_long
rbx.platform.typedef.dev_t = uint
rbx.platform.typedef.esid_t = uint
rbx.platform.typedef.ext_t = int
rbx.platform.typedef.fpos64_t = long_long
rbx.platform.typedef.fpos_t = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino32_t = uint
rbx.platform.typedef.ino64_t = ulong_long
rbx.platform.typedef.ino_t = uint
rbx.platform.typedef.int16 = short
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32 = int
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int32long64_t = int
rbx.platform.typedef.int64 = long_long
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8 = char
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = short
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intfast_t = int
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = int
rbx.platform.typedef.krpn_t = int
rbx.platform.typedef.kvmhandle_t = ulong
rbx.platform.typedef.kvmid_t = long
rbx.platform.typedef.kvpn_t = int
rbx.platform.typedef.level_t = int
rbx.platform.typedef.liobn_t = uint
rbx.platform.typedef.long32int64_t = long
rbx.platform.typedef.longlong_t = long_long
rbx.platform.typedef.mid_t = pointer
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.mtyp_t = long
rbx.platform.typedef.nlink_t = short
rbx.platform.typedef.off64_t = long_long
rbx.platform.typedef.off_t = long
rbx.platform.typedef.offset_t = long_long
rbx.platform.typedef.paddr_t = long
rbx.platform.typedef.pdtx_t = int
rbx.platform.typedef.pid32_t = int
rbx.platform.typedef.pid64_t = ulong_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pshift_t = ushort
rbx.platform.typedef.psize_t = long_long
rbx.platform.typedef.psx_t = short
rbx.platform.typedef.ptex_t = ulong
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_t = uint
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.rlim64_t = ulong_long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.rpn64_t = long_long
rbx.platform.typedef.rpn_t = int
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.signal_t = int
rbx.platform.typedef.size64_t = ulong_long
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.slab_t[12] = char
rbx.platform.typedef.snidx_t = int
rbx.platform.typedef.socklen_t = ulong
rbx.platform.typedef.soff_t = int
rbx.platform.typedef.sshift_t = ushort
rbx.platform.typedef.ssize64_t = long_long
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.swhatx_t = ulong
rbx.platform.typedef.tid32_t = int
rbx.platform.typedef.tid64_t = ulong_long
rbx.platform.typedef.tid_t = int
rbx.platform.typedef.time32_t = int
rbx.platform.typedef.time64_t = long_long
rbx.platform.typedef.time_t = int
rbx.platform.typedef.timer32_t = int
rbx.platform.typedef.timer64_t = long_long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16 = ushort
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32 = uint
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64 = ulong_long
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8 = uchar
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_longlong_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uchar = uchar
rbx.platform.typedef.uchar_t = uchar
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint32long64_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = ushort
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uint_t = uint
rbx.platform.typedef.uintfast_t = uint
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ulong32int64_t = ulong
rbx.platform.typedef.ulong_t = ulong
rbx.platform.typedef.unidx_t = int
rbx.platform.typedef.unit_addr_t = ulong_long
rbx.platform.typedef.ureg_t = ulong
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.ushort_t = ushort
rbx.platform.typedef.va_list = string
rbx.platform.typedef.vmfkey_t = uint
rbx.platform.typedef.vmhandle32_t = uint
rbx.platform.typedef.vmhandle_t = ulong
rbx.platform.typedef.vmhwkey_t = int
rbx.platform.typedef.vmid32_t = int
rbx.platform.typedef.vmid64_t = long_long
rbx.platform.typedef.vmid_t = long
rbx.platform.typedef.vmidx_t = int
rbx.platform.typedef.vmkey_t = int
rbx.platform.typedef.vmlpghandle_t = ulong
rbx.platform.typedef.vmm_lock_t = int
rbx.platform.typedef.vmnodeidx_t = int
rbx.platform.typedef.vmprkey_t = uint
rbx.platform.typedef.vmsize_t = int
rbx.platform.typedef.vpn_t = int
rbx.platform.typedef.wchar_t = ushort
rbx.platform.typedef.wctype_t = uint
rbx.platform.typedef.wint_t = int
@@ -0,0 +1,100 @@
rbx.platform.typedef.__darwin_blkcnt_t = long_long
rbx.platform.typedef.__darwin_blksize_t = int
rbx.platform.typedef.__darwin_clock_t = ulong
rbx.platform.typedef.__darwin_ct_rune_t = int
rbx.platform.typedef.__darwin_dev_t = int
rbx.platform.typedef.__darwin_fsblkcnt_t = uint
rbx.platform.typedef.__darwin_fsfilcnt_t = uint
rbx.platform.typedef.__darwin_gid_t = uint
rbx.platform.typedef.__darwin_id_t = uint
rbx.platform.typedef.__darwin_ino64_t = ulong_long
rbx.platform.typedef.__darwin_ino_t = ulong_long
rbx.platform.typedef.__darwin_intptr_t = long
rbx.platform.typedef.__darwin_mach_port_name_t = uint
rbx.platform.typedef.__darwin_mach_port_t = uint
rbx.platform.typedef.__darwin_mode_t = ushort
rbx.platform.typedef.__darwin_natural_t = uint
rbx.platform.typedef.__darwin_off_t = long_long
rbx.platform.typedef.__darwin_pid_t = int
rbx.platform.typedef.__darwin_pthread_key_t = ulong
rbx.platform.typedef.__darwin_ptrdiff_t = int
rbx.platform.typedef.__darwin_rune_t = int
rbx.platform.typedef.__darwin_sigset_t = uint
rbx.platform.typedef.__darwin_size_t = ulong
rbx.platform.typedef.__darwin_socklen_t = uint
rbx.platform.typedef.__darwin_ssize_t = long
rbx.platform.typedef.__darwin_suseconds_t = int
rbx.platform.typedef.__darwin_time_t = long
rbx.platform.typedef.__darwin_uid_t = uint
rbx.platform.typedef.__darwin_useconds_t = uint
rbx.platform.typedef.__darwin_uuid_t[16] = uchar
rbx.platform.typedef.__darwin_wchar_t = int
rbx.platform.typedef.__darwin_wint_t = int
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = ulong
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fd_mask = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = uint
rbx.platform.typedef.fsfilcnt_t = uint
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino64_t = ulong_long
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.nlink_t = ushort
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = ulong
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = int
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.syscall_arg_t = ulong_long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.user_addr_t = ulong_long
rbx.platform.typedef.user_long_t = long_long
rbx.platform.typedef.user_size_t = ulong_long
rbx.platform.typedef.user_ssize_t = long_long
rbx.platform.typedef.user_time_t = long_long
rbx.platform.typedef.user_ulong_t = ulong_long
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,130 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long_long
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = int
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.ptrdiff_t = int
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.wchar_t = long
@@ -0,0 +1,156 @@
rbx.platform.typedef.__blkcnt_t = long_long
rbx.platform.typedef.__blksize_t = int
rbx.platform.typedef.__clock_t = long_long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpuid_t = ulong
rbx.platform.typedef.__dev_t = int
rbx.platform.typedef.__fd_mask = uint
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__fsblkcnt_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong_long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__in_addr_t = uint
rbx.platform.typedef.__in_port_t = ushort
rbx.platform.typedef.__ino_t = ulong_long
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__paddr_t = ulong
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__psize_t = ulong
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = long
rbx.platform.typedef.__rlim_t = ulong_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = int
rbx.platform.typedef.__time_t = long_long
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vaddr_t = ulong
rbx.platform.typedef.__vsize_t = ulong
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wctrans_t = pointer
rbx.platform.typedef.__wctype_t = pointer
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = long_long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpuid_t = ulong
rbx.platform.typedef.daddr32_t = int
rbx.platform.typedef.daddr_t = long_long
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = int
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.paddr_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.psize_t = ulong
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.sigset_t = uint
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.time_t = long_long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uint
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vaddr_t = ulong
rbx.platform.typedef.vsize_t = ulong
rbx.platform.typedef.wchar_t = int
rbx.platform.typedef.wint_t = int
@@ -0,0 +1,104 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = ulong
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,100 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = ulong
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,104 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = int
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,102 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long_long
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,102 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = ulong
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,102 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long_long
rbx.platform.typedef.__blkcnt64_t = long_long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong_long
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong_long
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong_long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = int
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long_long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long_long
rbx.platform.typedef.__rlim64_t = ulong_long
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = int
rbx.platform.typedef.__suseconds_t = int
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong_long
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong_long
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,128 @@
rbx.platform.typedef.() = pointer
rbx.platform.typedef.*caddr_t = char
rbx.platform.typedef.Psocklen_t = pointer
rbx.platform.typedef.avl_index_t = uint
rbx.platform.typedef.blkcnt64_t = long_long
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cnt_t = short
rbx.platform.typedef.cpu_flag_t = ushort
rbx.platform.typedef.ctid_t = long
rbx.platform.typedef.daddr_t = long
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.diskaddr_t = ulong_long
rbx.platform.typedef.disp_lock_t = uchar
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fds_mask = long
rbx.platform.typedef.fsblkcnt64_t = ulong_long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt64_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = long
rbx.platform.typedef.hrtime_t = long_long
rbx.platform.typedef.id_t = long
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.index_t = short
rbx.platform.typedef.ino64_t = ulong_long
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int) = pointer
rbx.platform.typedef.int) = pointer
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.ipaddr_t = uint
rbx.platform.typedef.k_fltset_t = uint
rbx.platform.typedef.key_t = int
rbx.platform.typedef.kid_t = int
rbx.platform.typedef.len_t = ulong_long
rbx.platform.typedef.lock_t = uchar
rbx.platform.typedef.longlong_t = long_long
rbx.platform.typedef.major_t = ulong
rbx.platform.typedef.minor_t = ulong
rbx.platform.typedef.mode_t = ulong
rbx.platform.typedef.model_t = uint
rbx.platform.typedef.nfds_t = ulong
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.o_dev_t = short
rbx.platform.typedef.o_gid_t = ushort
rbx.platform.typedef.o_ino_t = ushort
rbx.platform.typedef.o_mode_t = ushort
rbx.platform.typedef.o_nlink_t = short
rbx.platform.typedef.o_pid_t = short
rbx.platform.typedef.o_uid_t = ushort
rbx.platform.typedef.off64_t = long_long
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.offset_t = long_long
rbx.platform.typedef.pad64_t = long_long
rbx.platform.typedef.pfn_t = ulong
rbx.platform.typedef.pgcnt_t = ulong
rbx.platform.typedef.pid_t = long
rbx.platform.typedef.poolid_t = long
rbx.platform.typedef.pri_t = short
rbx.platform.typedef.projid_t = long
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_t = uint
rbx.platform.typedef.ptrdiff_t = int
rbx.platform.typedef.rlim64_t = ulong_long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.size_t) = pointer
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.spgcnt_t = long
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.sysid_t = short
rbx.platform.typedef.t_scalar_t = long
rbx.platform.typedef.t_uscalar_t = ulong
rbx.platform.typedef.taskid_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.ts_t = long_long
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_longlong_t = ulong_long
rbx.platform.typedef.u_offset_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uchar_t = uchar
rbx.platform.typedef.uid_t = long
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uint_t = uint
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ulong_t = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.upad64_t = ulong_long
rbx.platform.typedef.use_t = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.ushort_t = ushort
rbx.platform.typedef.zoneid_t = long
@@ -0,0 +1,102 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.*__qaddr_t = long
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = int
rbx.platform.typedef.__swblk_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
@@ -0,0 +1,156 @@
rbx.platform.typedef.__blkcnt_t = long_long
rbx.platform.typedef.__blksize_t = int
rbx.platform.typedef.__clock_t = long_long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpuid_t = ulong
rbx.platform.typedef.__dev_t = int
rbx.platform.typedef.__fd_mask = uint
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__fsblkcnt_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong_long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__in_addr_t = uint
rbx.platform.typedef.__in_port_t = ushort
rbx.platform.typedef.__ino_t = ulong_long
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__paddr_t = ulong
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__psize_t = ulong
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = long
rbx.platform.typedef.__rlim_t = ulong_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = int
rbx.platform.typedef.__time_t = long_long
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vaddr_t = ulong
rbx.platform.typedef.__vsize_t = ulong
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wctrans_t = pointer
rbx.platform.typedef.__wctype_t = pointer
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = long_long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpuid_t = ulong
rbx.platform.typedef.daddr32_t = int
rbx.platform.typedef.daddr_t = long_long
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = int
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.paddr_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.psize_t = ulong
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.sigset_t = uint
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.time_t = long_long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uint
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vaddr_t = ulong
rbx.platform.typedef.vsize_t = ulong
rbx.platform.typedef.wchar_t = int
rbx.platform.typedef.wint_t = int
@@ -0,0 +1,128 @@
rbx.platform.typedef.() = pointer
rbx.platform.typedef.*caddr_t = char
rbx.platform.typedef.Psocklen_t = pointer
rbx.platform.typedef.avl_index_t = uint
rbx.platform.typedef.blkcnt64_t = long_long
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cnt_t = short
rbx.platform.typedef.cpu_flag_t = ushort
rbx.platform.typedef.ctid_t = long
rbx.platform.typedef.daddr_t = long
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.diskaddr_t = ulong_long
rbx.platform.typedef.disp_lock_t = uchar
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fds_mask = long
rbx.platform.typedef.fsblkcnt64_t = ulong_long
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt64_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = long
rbx.platform.typedef.hrtime_t = long_long
rbx.platform.typedef.id_t = long
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.index_t = short
rbx.platform.typedef.ino64_t = ulong_long
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int) = pointer
rbx.platform.typedef.int) = pointer
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = int
rbx.platform.typedef.ipaddr_t = uint
rbx.platform.typedef.k_fltset_t = uint
rbx.platform.typedef.key_t = int
rbx.platform.typedef.kid_t = int
rbx.platform.typedef.len_t = ulong_long
rbx.platform.typedef.lock_t = uchar
rbx.platform.typedef.longlong_t = long_long
rbx.platform.typedef.major_t = ulong
rbx.platform.typedef.minor_t = ulong
rbx.platform.typedef.mode_t = ulong
rbx.platform.typedef.model_t = uint
rbx.platform.typedef.nfds_t = ulong
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.o_dev_t = short
rbx.platform.typedef.o_gid_t = ushort
rbx.platform.typedef.o_ino_t = ushort
rbx.platform.typedef.o_mode_t = ushort
rbx.platform.typedef.o_nlink_t = short
rbx.platform.typedef.o_pid_t = short
rbx.platform.typedef.o_uid_t = ushort
rbx.platform.typedef.off64_t = long_long
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.offset_t = long_long
rbx.platform.typedef.pad64_t = long_long
rbx.platform.typedef.pfn_t = ulong
rbx.platform.typedef.pgcnt_t = ulong
rbx.platform.typedef.pid_t = long
rbx.platform.typedef.poolid_t = long
rbx.platform.typedef.pri_t = short
rbx.platform.typedef.projid_t = long
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_t = uint
rbx.platform.typedef.ptrdiff_t = int
rbx.platform.typedef.rlim64_t = ulong_long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = uint
rbx.platform.typedef.size_t) = pointer
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.spgcnt_t = long
rbx.platform.typedef.ssize_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.sysid_t = short
rbx.platform.typedef.t_scalar_t = long
rbx.platform.typedef.t_uscalar_t = ulong
rbx.platform.typedef.taskid_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.ts_t = long_long
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_longlong_t = ulong_long
rbx.platform.typedef.u_offset_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uchar_t = uchar
rbx.platform.typedef.uid_t = long
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uint_t = uint
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = uint
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ulong_t = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.upad64_t = ulong_long
rbx.platform.typedef.use_t = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.ushort_t = ushort
rbx.platform.typedef.zoneid_t = long
@@ -0,0 +1,141 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = int
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = long
rbx.platform.typedef.int_fast32_t = long
rbx.platform.typedef.int_fast64_t = long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = ulong
rbx.platform.typedef.uint_fast32_t = ulong
rbx.platform.typedef.uint_fast64_t = ulong
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.wchar_t = int
@@ -0,0 +1,3 @@
rbx.platform.typedef.ptrdiff_t = int64
rbx.platform.typedef.size_t = uint64
rbx.platform.typedef.ssize_t = int64
@@ -0,0 +1,130 @@
rbx.platform.typedef.__darwin_blkcnt_t = long_long
rbx.platform.typedef.__darwin_blksize_t = int
rbx.platform.typedef.__darwin_clock_t = ulong
rbx.platform.typedef.__darwin_ct_rune_t = int
rbx.platform.typedef.__darwin_dev_t = int
rbx.platform.typedef.__darwin_fsblkcnt_t = uint
rbx.platform.typedef.__darwin_fsfilcnt_t = uint
rbx.platform.typedef.__darwin_gid_t = uint
rbx.platform.typedef.__darwin_id_t = uint
rbx.platform.typedef.__darwin_ino64_t = ulong_long
rbx.platform.typedef.__darwin_ino_t = ulong_long
rbx.platform.typedef.__darwin_intptr_t = long
rbx.platform.typedef.__darwin_mach_port_name_t = uint
rbx.platform.typedef.__darwin_mach_port_t = uint
rbx.platform.typedef.__darwin_mode_t = ushort
rbx.platform.typedef.__darwin_natural_t = uint
rbx.platform.typedef.__darwin_off_t = long_long
rbx.platform.typedef.__darwin_pid_t = int
rbx.platform.typedef.__darwin_pthread_key_t = ulong
rbx.platform.typedef.__darwin_ptrdiff_t = long
rbx.platform.typedef.__darwin_rune_t = int
rbx.platform.typedef.__darwin_sigset_t = uint
rbx.platform.typedef.__darwin_size_t = ulong
rbx.platform.typedef.__darwin_socklen_t = uint
rbx.platform.typedef.__darwin_ssize_t = long
rbx.platform.typedef.__darwin_suseconds_t = int
rbx.platform.typedef.__darwin_time_t = long
rbx.platform.typedef.__darwin_uid_t = uint
rbx.platform.typedef.__darwin_useconds_t = uint
rbx.platform.typedef.__darwin_uuid_string_t[37] = char
rbx.platform.typedef.__darwin_uuid_t[16] = uchar
rbx.platform.typedef.__darwin_wchar_t = int
rbx.platform.typedef.__darwin_wint_t = int
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = ulong
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.errno_t = int
rbx.platform.typedef.fd_mask = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = uint
rbx.platform.typedef.fsfilcnt_t = uint
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino64_t = ulong_long
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = short
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.nlink_t = ushort
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = ulong
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long_long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.rsize_t = ulong
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.sae_associd_t = uint
rbx.platform.typedef.sae_connid_t = uint
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.syscall_arg_t = ulong_long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = ushort
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.user_addr_t = ulong_long
rbx.platform.typedef.user_long_t = long_long
rbx.platform.typedef.user_off_t = long_long
rbx.platform.typedef.user_size_t = ulong_long
rbx.platform.typedef.user_ssize_t = long_long
rbx.platform.typedef.user_time_t = long_long
rbx.platform.typedef.user_ulong_t = ulong_long
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.wchar_t = int
@@ -0,0 +1,130 @@
rbx.platform.typedef.*) = pointer
rbx.platform.typedef.___wchar_t = int
rbx.platform.typedef.__clock_t = ulong
rbx.platform.typedef.__clockid_t = ulong
rbx.platform.typedef.__fd_mask = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intlp_t = long
rbx.platform.typedef.__intmax_t = long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = long
rbx.platform.typedef.__rlim_t = long
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintlp_t = ulong
rbx.platform.typedef.__uintmax_t = ulong
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.c_caddr_t = pointer
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = ulong
rbx.platform.typedef.clockid_t = ulong
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = uint
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = long
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long
rbx.platform.typedef.int_fast8_t = int
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = long
rbx.platform.typedef.lwpid_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = int
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = long
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_daddr_t = uint
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong
rbx.platform.typedef.uint_fast8_t = uint
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.v_caddr_t = pointer
rbx.platform.typedef.wchar_t = int
@@ -0,0 +1,128 @@
rbx.platform.typedef.__clock_t = int
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpuid_t = ulong
rbx.platform.typedef.__dev_t = int
rbx.platform.typedef.__fd_mask = int
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__in_addr_t = uint
rbx.platform.typedef.__in_port_t = ushort
rbx.platform.typedef.__ino_t = uint
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__paddr_t = ulong
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__psize_t = ulong
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = long_long
rbx.platform.typedef.__rlim_t = ulong_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = int
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vaddr_t = ulong
rbx.platform.typedef.__vsize_t = ulong
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wctrans_t = pointer
rbx.platform.typedef.__wctype_t = pointer
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = int
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpuid_t = ulong
rbx.platform.typedef.daddr32_t = int
rbx.platform.typedef.daddr64_t = long_long
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = uint
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.paddr_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.psize_t = ulong
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long_long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vaddr_t = ulong
rbx.platform.typedef.vsize_t = ulong
@@ -0,0 +1,158 @@
rbx.platform.typedef.*) = pointer
rbx.platform.typedef.___wchar_t = int
rbx.platform.typedef.__accmode_t = int
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = int
rbx.platform.typedef.__char16_t = ushort
rbx.platform.typedef.__char32_t = uint
rbx.platform.typedef.__clock_t = int
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpulevel_t = int
rbx.platform.typedef.__cpusetid_t = int
rbx.platform.typedef.__cpuwhich_t = int
rbx.platform.typedef.__critical_t = long
rbx.platform.typedef.__ct_rune_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = ulong
rbx.platform.typedef.__fflags_t = uint
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = long
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intfptr_t = long
rbx.platform.typedef.__intmax_t = long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__lwpid_t = int
rbx.platform.typedef.__mode_t = ushort
rbx.platform.typedef.__nl_item = int
rbx.platform.typedef.__nlink_t = ulong
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = long
rbx.platform.typedef.__rlim_t = long
rbx.platform.typedef.__rman_res_t = ulong
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = long
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__u_register_t = ulong
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintfptr_t = ulong
rbx.platform.typedef.__uintmax_t = ulong
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vm_offset_t = ulong
rbx.platform.typedef.__vm_paddr_t = ulong
rbx.platform.typedef.__vm_size_t = ulong
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.accmode_t = int
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.c_caddr_t = pointer
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.cap_ioctl_t = ulong
rbx.platform.typedef.clock_t = int
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpulevel_t = int
rbx.platform.typedef.cpusetid_t = int
rbx.platform.typedef.cpuwhich_t = int
rbx.platform.typedef.critical_t = long
rbx.platform.typedef.daddr_t = long
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = ulong
rbx.platform.typedef.fflags_t = uint
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = long
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = long
rbx.platform.typedef.ksize_t = ulong
rbx.platform.typedef.kvaddr_t = ulong
rbx.platform.typedef.lwpid_t = int
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.off64_t = long
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = int
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = long
rbx.platform.typedef.rman_res_t = ulong
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.sbintime_t = long
rbx.platform.typedef.segsz_t = long
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_register_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vm_offset_t = ulong
rbx.platform.typedef.vm_ooffset_t = long
rbx.platform.typedef.vm_paddr_t = ulong
rbx.platform.typedef.vm_pindex_t = ulong
rbx.platform.typedef.vm_size_t = ulong
@@ -0,0 +1,117 @@
rbx.platform.typedef.__haiku_addr_t = ulong
rbx.platform.typedef.__haiku_generic_addr_t = ulong
rbx.platform.typedef.__haiku_int16 = short
rbx.platform.typedef.__haiku_int32 = int
rbx.platform.typedef.__haiku_int64 = long
rbx.platform.typedef.__haiku_int8 = char
rbx.platform.typedef.__haiku_phys_addr_t = ulong
rbx.platform.typedef.__haiku_phys_saddr_t = long
rbx.platform.typedef.__haiku_saddr_t = long
rbx.platform.typedef.__haiku_std_int16 = short
rbx.platform.typedef.__haiku_std_int32 = int
rbx.platform.typedef.__haiku_std_int64 = long
rbx.platform.typedef.__haiku_std_int8 = char
rbx.platform.typedef.__haiku_std_uint16 = ushort
rbx.platform.typedef.__haiku_std_uint32 = uint
rbx.platform.typedef.__haiku_std_uint64 = ulong
rbx.platform.typedef.__haiku_std_uint8 = uchar
rbx.platform.typedef.__haiku_uint16 = ushort
rbx.platform.typedef.__haiku_uint32 = uint
rbx.platform.typedef.__haiku_uint64 = ulong
rbx.platform.typedef.__haiku_uint8 = uchar
rbx.platform.typedef.addr_t = ulong
rbx.platform.typedef.bigtime_t = long
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.caddr_t = pointer
rbx.platform.typedef.clock_t = int
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cnt_t = int
rbx.platform.typedef.daddr_t = long
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fd_mask = uint
rbx.platform.typedef.fsblkcnt_t = long
rbx.platform.typedef.fsfilcnt_t = long
rbx.platform.typedef.generic_addr_t = ulong
rbx.platform.typedef.generic_size_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = int
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = long
rbx.platform.typedef.int16 = short
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32 = int
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64 = long
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8 = char
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long
rbx.platform.typedef.int_fast8_t = int
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = int
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nanotime_t = long
rbx.platform.typedef.nlink_t = int
rbx.platform.typedef.off_t = long
rbx.platform.typedef.perform_code = uint
rbx.platform.typedef.phys_addr_t = ulong
rbx.platform.typedef.phys_size_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = int
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.sig_atomic_t = int
rbx.platform.typedef.sigset_t = ulong
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.status_t = int
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.time_t = long
rbx.platform.typedef.type_code = uint
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uchar = uchar
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16 = ushort
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32 = uint
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64 = ulong
rbx.platform.typedef.uint64_t = ulong
rbx.platform.typedef.uint8 = uchar
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong
rbx.platform.typedef.uint_fast8_t = uint
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.umode_t = uint
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.unichar = ushort
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.void*) = pointer
rbx.platform.typedef.wchar_t = int
@@ -0,0 +1,132 @@
rbx.platform.typedef.*__caddr_t = char
rbx.platform.typedef.__blkcnt64_t = long
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = long
rbx.platform.typedef.__clock_t = long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__daddr_t = int
rbx.platform.typedef.__dev_t = ulong
rbx.platform.typedef.__fd_mask = long
rbx.platform.typedef.__fsblkcnt64_t = ulong
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt64_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__fsword_t = long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino64_t = ulong
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__intmax_t = long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = int
rbx.platform.typedef.__loff_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = ulong
rbx.platform.typedef.__off64_t = long
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__priority_which_t = int
rbx.platform.typedef.__quad_t = long
rbx.platform.typedef.__rlim64_t = ulong
rbx.platform.typedef.__rlim_t = ulong
rbx.platform.typedef.__rlimit_resource_t = int
rbx.platform.typedef.__rusage_who_t = int
rbx.platform.typedef.__sig_atomic_t = int
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__syscall_slong_t = long
rbx.platform.typedef.__syscall_ulong_t = ulong
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = pointer
rbx.platform.typedef.__u_char = uchar
rbx.platform.typedef.__u_int = uint
rbx.platform.typedef.__u_long = ulong
rbx.platform.typedef.__u_quad_t = ulong
rbx.platform.typedef.__u_short = ushort
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = long
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = long
rbx.platform.typedef.int_fast32_t = long
rbx.platform.typedef.int_fast64_t = long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = int
rbx.platform.typedef.loff_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = ulong
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_once_t = int
rbx.platform.typedef.pthread_t = ulong
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.quad_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = pointer
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = ulong
rbx.platform.typedef.uint_fast32_t = ulong
rbx.platform.typedef.uint_fast64_t = ulong
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.wchar_t = int
@@ -0,0 +1,119 @@
rbx.platform.typedef.*addr_t = char
rbx.platform.typedef.__ULong = uint
rbx.platform.typedef.__blkcnt_t = long
rbx.platform.typedef.__blksize_t = int
rbx.platform.typedef.__clock_t = ulong
rbx.platform.typedef.__clockid_t = ulong
rbx.platform.typedef.__cpu_mask = ulong
rbx.platform.typedef.__dev_t = uint
rbx.platform.typedef.__fsblkcnt_t = ulong
rbx.platform.typedef.__fsfilcnt_t = ulong
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__ino_t = ulong
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long_long
rbx.platform.typedef.__loff_t = long_long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nl_item = int
rbx.platform.typedef.__nlink_t = ushort
rbx.platform.typedef.__off_t = long
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__sigset_t = ulong
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = int
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__time_t = long
rbx.platform.typedef.__timer_t = ulong
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = ulong
rbx.platform.typedef._fpos64_t = long_long
rbx.platform.typedef._fpos_t = long
rbx.platform.typedef._off64_t = long_long
rbx.platform.typedef._off_t = long
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = ulong
rbx.platform.typedef.clockid_t = ulong
rbx.platform.typedef.daddr_t = long
rbx.platform.typedef.dev_t = uint
rbx.platform.typedef.fd_mask = ulong
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = long
rbx.platform.typedef.int_fast32_t = long
rbx.platform.typedef.int_fast64_t = long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = long_long
rbx.platform.typedef.loff_t = long_long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = ushort
rbx.platform.typedef.off_t = long
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sbintime_t = long
rbx.platform.typedef.sig_atomic_t = int
rbx.platform.typedef.sigset_t = ulong
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = int
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = ulong
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_register_t = ulong
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = ulong
rbx.platform.typedef.uint_fast32_t = ulong
rbx.platform.typedef.uint_fast64_t = ulong
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.useconds_t = ulong
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vm_offset_t = ulong
rbx.platform.typedef.vm_size_t = ulong
rbx.platform.typedef.wint_t = uint
@@ -0,0 +1,128 @@
rbx.platform.typedef.__clock_t = int
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpuid_t = ulong
rbx.platform.typedef.__dev_t = int
rbx.platform.typedef.__fd_mask = int
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__in_addr_t = uint
rbx.platform.typedef.__in_port_t = ushort
rbx.platform.typedef.__ino_t = uint
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__paddr_t = ulong
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__psize_t = ulong
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = int
rbx.platform.typedef.__rlim_t = ulong_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = int
rbx.platform.typedef.__swblk_t = int
rbx.platform.typedef.__time_t = int
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vaddr_t = ulong
rbx.platform.typedef.__vsize_t = ulong
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wctrans_t = pointer
rbx.platform.typedef.__wctype_t = pointer
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = int
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpuid_t = ulong
rbx.platform.typedef.daddr32_t = int
rbx.platform.typedef.daddr64_t = long_long
rbx.platform.typedef.daddr_t = int
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = uint
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.key_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.paddr_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.psize_t = ulong
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = int
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = int
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.time_t = int
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vaddr_t = ulong
rbx.platform.typedef.vsize_t = ulong
@@ -0,0 +1,134 @@
rbx.platform.typedef.__blkcnt_t = long_long
rbx.platform.typedef.__blksize_t = int
rbx.platform.typedef.__clock_t = long_long
rbx.platform.typedef.__clockid_t = int
rbx.platform.typedef.__cpuid_t = ulong
rbx.platform.typedef.__dev_t = int
rbx.platform.typedef.__fd_mask = uint
rbx.platform.typedef.__fixpt_t = uint
rbx.platform.typedef.__fsblkcnt_t = ulong_long
rbx.platform.typedef.__fsfilcnt_t = ulong_long
rbx.platform.typedef.__gid_t = uint
rbx.platform.typedef.__id_t = uint
rbx.platform.typedef.__in_addr_t = uint
rbx.platform.typedef.__in_port_t = ushort
rbx.platform.typedef.__ino_t = ulong_long
rbx.platform.typedef.__int16_t = short
rbx.platform.typedef.__int32_t = int
rbx.platform.typedef.__int64_t = long_long
rbx.platform.typedef.__int8_t = char
rbx.platform.typedef.__int_fast16_t = int
rbx.platform.typedef.__int_fast32_t = int
rbx.platform.typedef.__int_fast64_t = long_long
rbx.platform.typedef.__int_fast8_t = int
rbx.platform.typedef.__int_least16_t = short
rbx.platform.typedef.__int_least32_t = int
rbx.platform.typedef.__int_least64_t = long_long
rbx.platform.typedef.__int_least8_t = char
rbx.platform.typedef.__intmax_t = long_long
rbx.platform.typedef.__intptr_t = long
rbx.platform.typedef.__key_t = long
rbx.platform.typedef.__mode_t = uint
rbx.platform.typedef.__nlink_t = uint
rbx.platform.typedef.__off_t = long_long
rbx.platform.typedef.__paddr_t = ulong
rbx.platform.typedef.__pid_t = int
rbx.platform.typedef.__psize_t = ulong
rbx.platform.typedef.__ptrdiff_t = long
rbx.platform.typedef.__register_t = long
rbx.platform.typedef.__rlim_t = ulong_long
rbx.platform.typedef.__rune_t = int
rbx.platform.typedef.__sa_family_t = uchar
rbx.platform.typedef.__segsz_t = int
rbx.platform.typedef.__size_t = ulong
rbx.platform.typedef.__socklen_t = uint
rbx.platform.typedef.__ssize_t = long
rbx.platform.typedef.__suseconds_t = long
rbx.platform.typedef.__swblk_t = int
rbx.platform.typedef.__time_t = long_long
rbx.platform.typedef.__timer_t = int
rbx.platform.typedef.__uid_t = uint
rbx.platform.typedef.__uint16_t = ushort
rbx.platform.typedef.__uint32_t = uint
rbx.platform.typedef.__uint64_t = ulong_long
rbx.platform.typedef.__uint8_t = uchar
rbx.platform.typedef.__uint_fast16_t = uint
rbx.platform.typedef.__uint_fast32_t = uint
rbx.platform.typedef.__uint_fast64_t = ulong_long
rbx.platform.typedef.__uint_fast8_t = uint
rbx.platform.typedef.__uint_least16_t = ushort
rbx.platform.typedef.__uint_least32_t = uint
rbx.platform.typedef.__uint_least64_t = ulong_long
rbx.platform.typedef.__uint_least8_t = uchar
rbx.platform.typedef.__uintmax_t = ulong_long
rbx.platform.typedef.__uintptr_t = ulong
rbx.platform.typedef.__useconds_t = uint
rbx.platform.typedef.__vaddr_t = ulong
rbx.platform.typedef.__vsize_t = ulong
rbx.platform.typedef.__wchar_t = int
rbx.platform.typedef.__wctrans_t = pointer
rbx.platform.typedef.__wctype_t = pointer
rbx.platform.typedef.__wint_t = int
rbx.platform.typedef.blkcnt_t = long_long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.caddr_t = string
rbx.platform.typedef.clock_t = long_long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cpuid_t = ulong
rbx.platform.typedef.daddr32_t = int
rbx.platform.typedef.daddr_t = long_long
rbx.platform.typedef.dev_t = int
rbx.platform.typedef.fixpt_t = uint
rbx.platform.typedef.fsblkcnt_t = ulong_long
rbx.platform.typedef.fsfilcnt_t = ulong_long
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.id_t = uint
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.ino_t = ulong_long
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.key_t = long
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.paddr_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.psize_t = ulong
rbx.platform.typedef.qaddr_t = pointer
rbx.platform.typedef.quad_t = long_long
rbx.platform.typedef.register_t = long
rbx.platform.typedef.rlim_t = ulong_long
rbx.platform.typedef.sa_family_t = uchar
rbx.platform.typedef.segsz_t = int
rbx.platform.typedef.sigset_t = uint
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.swblk_t = int
rbx.platform.typedef.time_t = long_long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_int16_t = ushort
rbx.platform.typedef.u_int32_t = uint
rbx.platform.typedef.u_int64_t = ulong_long
rbx.platform.typedef.u_int8_t = uchar
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_quad_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.vaddr_t = ulong
rbx.platform.typedef.vsize_t = ulong
@@ -0,0 +1,122 @@
rbx.platform.typedef.*caddr_t = char
rbx.platform.typedef.blkcnt64_t = long
rbx.platform.typedef.blkcnt_t = long
rbx.platform.typedef.blksize_t = int
rbx.platform.typedef.clock_t = long
rbx.platform.typedef.clockid_t = int
rbx.platform.typedef.cnt_t = short
rbx.platform.typedef.cpu_flag_t = ushort
rbx.platform.typedef.ctid_t = int
rbx.platform.typedef.daddr_t = long
rbx.platform.typedef.datalink_id_t = uint
rbx.platform.typedef.dev_t = ulong
rbx.platform.typedef.diskaddr_t = ulong_long
rbx.platform.typedef.disp_lock_t = uchar
rbx.platform.typedef.fd_mask = long
rbx.platform.typedef.fds_mask = long
rbx.platform.typedef.fsblkcnt64_t = ulong
rbx.platform.typedef.fsblkcnt_t = ulong
rbx.platform.typedef.fsfilcnt64_t = ulong
rbx.platform.typedef.fsfilcnt_t = ulong
rbx.platform.typedef.gid_t = uint
rbx.platform.typedef.hrtime_t = long_long
rbx.platform.typedef.id_t = int
rbx.platform.typedef.in_addr_t = uint
rbx.platform.typedef.in_port_t = ushort
rbx.platform.typedef.index_t = short
rbx.platform.typedef.ino64_t = ulong
rbx.platform.typedef.ino_t = ulong
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = int
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long
rbx.platform.typedef.intptr_t = long
rbx.platform.typedef.ipaddr_t = uint
rbx.platform.typedef.k_fltset_t = uint
rbx.platform.typedef.key_t = int
rbx.platform.typedef.len_t = ulong_long
rbx.platform.typedef.lgrp_id_t = int
rbx.platform.typedef.lock_t = uchar
rbx.platform.typedef.longlong_t = long_long
rbx.platform.typedef.major_t = uint
rbx.platform.typedef.minor_t = uint
rbx.platform.typedef.mode_t = uint
rbx.platform.typedef.model_t = uint
rbx.platform.typedef.nfds_t = ulong
rbx.platform.typedef.nlink_t = uint
rbx.platform.typedef.o_dev_t = short
rbx.platform.typedef.o_gid_t = ushort
rbx.platform.typedef.o_ino_t = ushort
rbx.platform.typedef.o_mode_t = ushort
rbx.platform.typedef.o_nlink_t = short
rbx.platform.typedef.o_pid_t = short
rbx.platform.typedef.o_uid_t = ushort
rbx.platform.typedef.off64_t = long
rbx.platform.typedef.off_t = long
rbx.platform.typedef.offset_t = long_long
rbx.platform.typedef.pad64_t = long
rbx.platform.typedef.pfn_t = ulong
rbx.platform.typedef.pgcnt_t = ulong
rbx.platform.typedef.pid_t = int
rbx.platform.typedef.poolid_t = int
rbx.platform.typedef.pri_t = short
rbx.platform.typedef.projid_t = int
rbx.platform.typedef.pthread_key_t = uint
rbx.platform.typedef.pthread_t = uint
rbx.platform.typedef.ptrdiff_t = long
rbx.platform.typedef.rlim64_t = ulong_long
rbx.platform.typedef.rlim_t = ulong
rbx.platform.typedef.sa_family_t = ushort
rbx.platform.typedef.size_t = ulong
rbx.platform.typedef.socklen_t = uint
rbx.platform.typedef.spgcnt_t = long
rbx.platform.typedef.ssize_t = long
rbx.platform.typedef.suseconds_t = long
rbx.platform.typedef.sysid_t = short
rbx.platform.typedef.t_scalar_t = int
rbx.platform.typedef.t_uscalar_t = uint
rbx.platform.typedef.taskid_t = int
rbx.platform.typedef.time_t = long
rbx.platform.typedef.timer_t = int
rbx.platform.typedef.u_char = uchar
rbx.platform.typedef.u_int = uint
rbx.platform.typedef.u_long = ulong
rbx.platform.typedef.u_longlong_t = ulong_long
rbx.platform.typedef.u_offset_t = ulong_long
rbx.platform.typedef.u_short = ushort
rbx.platform.typedef.uchar_t = uchar
rbx.platform.typedef.uid_t = uint
rbx.platform.typedef.uint = uint
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint32_t = uint
rbx.platform.typedef.uint64_t = ulong
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = uint
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least32_t = uint
rbx.platform.typedef.uint_least64_t = ulong
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uint_t = uint
rbx.platform.typedef.uintmax_t = ulong
rbx.platform.typedef.uintptr_t = ulong
rbx.platform.typedef.ulong = ulong
rbx.platform.typedef.ulong_t = ulong
rbx.platform.typedef.unchar = uchar
rbx.platform.typedef.upad64_t = ulong
rbx.platform.typedef.use_t = uchar
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.ushort = ushort
rbx.platform.typedef.ushort_t = ushort
rbx.platform.typedef.zoneid_t = int
@@ -0,0 +1,52 @@
rbx.platform.typedef.__time32_t = long
rbx.platform.typedef.__time64_t = long_long
rbx.platform.typedef._dev_t = uint
rbx.platform.typedef._ino_t = ushort
rbx.platform.typedef._mode_t = ushort
rbx.platform.typedef._off64_t = long_long
rbx.platform.typedef._off_t = long
rbx.platform.typedef._pid_t = long_long
rbx.platform.typedef._sigset_t = ulong_long
rbx.platform.typedef.dev_t = uint
rbx.platform.typedef.errno_t = int
rbx.platform.typedef.ino_t = ushort
rbx.platform.typedef.int16_t = short
rbx.platform.typedef.int32_t = int
rbx.platform.typedef.int64_t = long_long
rbx.platform.typedef.int8_t = char
rbx.platform.typedef.int_fast16_t = short
rbx.platform.typedef.int_fast32_t = int
rbx.platform.typedef.int_fast64_t = long_long
rbx.platform.typedef.int_fast8_t = char
rbx.platform.typedef.int_least16_t = short
rbx.platform.typedef.int_least32_t = int
rbx.platform.typedef.int_least64_t = long_long
rbx.platform.typedef.int_least8_t = char
rbx.platform.typedef.intmax_t = long_long
rbx.platform.typedef.intptr_t = long_long
rbx.platform.typedef.mode_t = ushort
rbx.platform.typedef.off32_t = long
rbx.platform.typedef.off64_t = long_long
rbx.platform.typedef.off_t = long_long
rbx.platform.typedef.pid_t = long_long
rbx.platform.typedef.ptrdiff_t = long_long
rbx.platform.typedef.rsize_t = ulong_long
rbx.platform.typedef.size_t = ulong_long
rbx.platform.typedef.ssize_t = long_long
rbx.platform.typedef.time_t = long_long
rbx.platform.typedef.uint16_t = ushort
rbx.platform.typedef.uint64_t = ulong_long
rbx.platform.typedef.uint8_t = uchar
rbx.platform.typedef.uint_fast16_t = ushort
rbx.platform.typedef.uint_fast32_t = uint
rbx.platform.typedef.uint_fast64_t = ulong_long
rbx.platform.typedef.uint_fast8_t = uchar
rbx.platform.typedef.uint_least16_t = ushort
rbx.platform.typedef.uint_least64_t = ulong_long
rbx.platform.typedef.uint_least8_t = uchar
rbx.platform.typedef.uintmax_t = ulong_long
rbx.platform.typedef.uintptr_t = ulong_long
rbx.platform.typedef.useconds_t = uint
rbx.platform.typedef.wchar_t = ushort
rbx.platform.typedef.wctype_t = ushort
rbx.platform.typedef.wint_t = ushort
@@ -0,0 +1,167 @@
#
# Copyright (C) 2008, 2009 Wayne Meissner
# Copyright (c) 2007, 2008 Evan Phoenix
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
require 'ffi/platform'
# NOTE: all method definitions in this file are conditional on
# whether they are not already defined. This is needed because
# some Ruby implementations (e.g., TruffleRuby) might already
# provide these methods due to using FFI internally, and we
# should not override them to avoid warnings.
module FFI
class Pointer
# Pointer size
SIZE = Platform::ADDRESS_SIZE / 8 unless const_defined?(:SIZE)
# Return the size of a pointer on the current platform, in bytes
# @return [Integer]
def self.size
SIZE
end unless respond_to?(:size)
# @param [nil,Integer] len length of string to return
# @return [String]
# Read pointer's contents as a string, or the first +len+ bytes of the
# equivalent string if +len+ is not +nil+.
def read_string(len=nil)
if len
return ''.b if len == 0
get_bytes(0, len)
else
get_string(0)
end
end unless method_defined?(:read_string)
# @param [Integer] len length of string to return
# @return [String]
# Read the first +len+ bytes of pointer's contents as a string.
#
# Same as:
# ptr.read_string(len) # with len not nil
def read_string_length(len)
get_bytes(0, len)
end unless method_defined?(:read_string_length)
# @return [String]
# Read pointer's contents as a string.
#
# Same as:
# ptr.read_string # with no len
def read_string_to_null
get_string(0)
end unless method_defined?(:read_string_to_null)
# @param [String] str string to write
# @param [Integer] len length of string to return
# @return [self]
# Write +len+ first bytes of +str+ in pointer's contents.
#
# Same as:
# ptr.write_string(str, len) # with len not nil
def write_string_length(str, len)
put_bytes(0, str, 0, len)
end unless method_defined?(:write_string_length)
# @param [String] str string to write
# @param [Integer] len length of string to return
# @return [self]
# Write +str+ in pointer's contents, or first +len+ bytes if
# +len+ is not +nil+.
def write_string(str, len=nil)
len = str.bytesize unless len
# Write the string data without NUL termination
put_bytes(0, str, 0, len)
end unless method_defined?(:write_string)
# @param [Type] type type of data to read from pointer's contents
# @param [Symbol] reader method to send to +self+ to read +type+
# @param [Integer] length
# @return [Array]
# Read an array of +type+ of length +length+.
# @example
# ptr.read_array_of_type(TYPE_UINT8, :read_uint8, 4) # -> [1, 2, 3, 4]
def read_array_of_type(type, reader, length)
ary = []
size = FFI.type_size(type)
tmp = self
length.times { |j|
ary << tmp.send(reader)
tmp += size unless j == length-1 # avoid OOB
}
ary
end unless method_defined?(:read_array_of_type)
# @param [Type] type type of data to write to pointer's contents
# @param [Symbol] writer method to send to +self+ to write +type+
# @param [Array] ary
# @return [self]
# Write +ary+ in pointer's contents as +type+.
# @example
# ptr.write_array_of_type(TYPE_UINT8, :put_uint8, [1, 2, 3 ,4])
def write_array_of_type(type, writer, ary)
size = FFI.type_size(type)
ary.each_with_index { |val, i|
break unless i < self.size
self.send(writer, i * size, val)
}
self
end unless method_defined?(:write_array_of_type)
# @return [self]
def to_ptr
self
end unless method_defined?(:to_ptr)
# @param [Symbol,Type] type of data to read
# @return [Object]
# Read pointer's contents as +type+
#
# Same as:
# ptr.get(type, 0)
def read(type)
get(type, 0)
end unless method_defined?(:read)
# @param [Symbol,Type] type of data to read
# @param [Object] value to write
# @return [nil]
# Write +value+ of type +type+ to pointer's content
#
# Same as:
# ptr.put(type, 0)
def write(type, value)
put(type, 0, value)
end unless method_defined?(:write)
end
end
@@ -0,0 +1,317 @@
#
# Copyright (C) 2008-2010 Wayne Meissner
# Copyright (C) 2008, 2009 Andrea Fazzi
# Copyright (C) 2008, 2009 Luc Heinrich
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
require 'ffi/platform'
require 'ffi/struct_layout'
require 'ffi/struct_layout_builder'
require 'ffi/struct_by_reference'
module FFI
class Struct
# Get struct size
# @return [Integer]
def size
self.class.size
end
# @return [Integer] Struct alignment
def alignment
self.class.alignment
end
alias_method :align, :alignment
# (see FFI::StructLayout#offset_of)
def offset_of(name)
self.class.offset_of(name)
end
# (see FFI::StructLayout#members)
def members
self.class.members
end
# @return [Array]
# Get array of values from Struct fields.
def values
members.map { |m| self[m] }
end
# (see FFI::StructLayout#offsets)
def offsets
self.class.offsets
end
# Clear the struct content.
# @return [self]
def clear
pointer.clear
self
end
# Get {Pointer} to struct content.
# @return [AbstractMemory]
def to_ptr
pointer
end
# Get struct size
# @return [Integer]
def self.size
defined?(@layout) ? @layout.size : defined?(@size) ? @size : 0
end
# set struct size
# @param [Integer] size
# @return [size]
def self.size=(size)
raise ArgumentError, "Size already set" if defined?(@size) || defined?(@layout)
@size = size
end
# @return (see Struct#alignment)
def self.alignment
@layout.alignment
end
# (see FFI::Type#members)
def self.members
@layout.members
end
# (see FFI::StructLayout#offsets)
def self.offsets
@layout.offsets
end
# (see FFI::StructLayout#offset_of)
def self.offset_of(name)
@layout.offset_of(name)
end
def self.in
ptr(:in)
end
def self.out
ptr(:out)
end
def self.ptr(flags = :inout)
@ref_data_type ||= Type::Mapped.new(StructByReference.new(self))
end
def self.val
@val_data_type ||= StructByValue.new(self)
end
def self.by_value
self.val
end
def self.by_ref(flags = :inout)
self.ptr(flags)
end
class ManagedStructConverter < StructByReference
# @param [Struct] struct_class
def initialize(struct_class)
super(struct_class)
raise NoMethodError, "release() not implemented for class #{struct_class}" unless struct_class.respond_to? :release
@method = struct_class.method(:release)
end
# @param [Pointer] ptr
# @param [nil] ctx
# @return [Struct]
def from_native(ptr, ctx)
struct_class.new(AutoPointer.new(ptr, @method))
end
end
def self.auto_ptr
@managed_type ||= Type::Mapped.new(ManagedStructConverter.new(self))
end
class << self
public
# @return [StructLayout]
# @overload layout
# @return [StructLayout]
# Get struct layout.
# @overload layout(*spec)
# @param [Array<Symbol, Integer>,Array(Hash)] spec
# @return [StructLayout]
# Create struct layout from +spec+.
# @example Creating a layout from an array +spec+
# class MyStruct < Struct
# layout :field1, :int,
# :field2, :pointer,
# :field3, :string
# end
# @example Creating a layout from an array +spec+ with offset
# class MyStructWithOffset < Struct
# layout :field1, :int,
# :field2, :pointer, 6, # set offset to 6 for this field
# :field3, :string
# end
# @example Creating a layout from a hash +spec+
# class MyStructFromHash < Struct
# layout :field1 => :int,
# :field2 => :pointer,
# :field3 => :string
# end
# @example Creating a layout with pointers to functions
# class MyFunctionTable < Struct
# layout :function1, callback([:int, :int], :int),
# :function2, callback([:pointer], :void),
# :field3, :string
# end
def layout(*spec)
return @layout if spec.size == 0
warn "[DEPRECATION] Struct layout is already defined for class #{self.inspect}. Redefinition as in #{caller[0]} will be disallowed in ffi-2.0." if defined?(@layout)
builder = StructLayoutBuilder.new
builder.union = self < Union
builder.packed = @packed if defined?(@packed)
builder.alignment = @min_alignment if defined?(@min_alignment)
if spec[0].kind_of?(Hash)
hash_layout(builder, spec)
else
array_layout(builder, spec)
end
builder.size = @size if defined?(@size) && @size > builder.size
cspec = builder.build
@layout = cspec unless self == Struct
@size = cspec.size
return cspec
end
protected
def callback(params, ret)
mod = enclosing_module
ret_type = find_type(ret, mod)
if ret_type == Type::STRING
raise TypeError, ":string is not allowed as return type of callbacks"
end
FFI::CallbackInfo.new(ret_type, params.map { |e| find_type(e, mod) })
end
def packed(packed = 1)
@packed = packed
end
alias :pack :packed
def aligned(alignment = 1)
@min_alignment = alignment
end
alias :align :aligned
def enclosing_module
begin
mod = self.name.split("::")[0..-2].inject(Object) { |obj, c| obj.const_get(c) }
if mod.respond_to?(:find_type) && (mod.is_a?(FFI::Library) || mod < FFI::Struct)
mod
end
rescue Exception
nil
end
end
def find_field_type(type, mod = enclosing_module)
if type.kind_of?(Class) && type < Struct
FFI::Type::Struct.new(type)
elsif type.kind_of?(Class) && type < FFI::StructLayout::Field
type
elsif type.kind_of?(::Array)
FFI::Type::Array.new(find_field_type(type[0]), type[1])
else
find_type(type, mod)
end
end
def find_type(type, mod = enclosing_module)
if mod
mod.find_type(type)
end || FFI.find_type(type)
end
private
# @param [StructLayoutBuilder] builder
# @param [Hash] spec
# @return [builder]
# Add hash +spec+ to +builder+.
def hash_layout(builder, spec)
spec[0].each do |name, type|
builder.add name, find_field_type(type), nil
end
end
# @param [StructLayoutBuilder] builder
# @param [Array<Symbol, Integer>] spec
# @return [builder]
# Add array +spec+ to +builder+.
def array_layout(builder, spec)
i = 0
while i < spec.size
name, type = spec[i, 2]
i += 2
# If the next param is a Integer, it specifies the offset
if spec[i].kind_of?(Integer)
offset = spec[i]
i += 1
else
offset = nil
end
builder.add name, find_field_type(type), offset
end
end
end
end
end
@@ -0,0 +1,72 @@
#
# Copyright (C) 2010 Wayne Meissner
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
module FFI
# This class includes the {FFI::DataConverter} module.
class StructByReference
include DataConverter
attr_reader :struct_class
# @param [Struct] struct_class
def initialize(struct_class)
unless Class === struct_class and struct_class < FFI::Struct
raise TypeError, 'wrong type (expected subclass of FFI::Struct)'
end
@struct_class = struct_class
end
# Always get {FFI::Type}::POINTER.
def native_type(_type = nil)
FFI::Type::POINTER
end
# @param [nil, Struct] value
# @param [nil] ctx
# @return [AbstractMemory] Pointer on +value+.
def to_native(value, ctx)
return Pointer::NULL if value.nil?
unless @struct_class === value
raise TypeError, "wrong argument type #{value.class} (expected #{@struct_class})"
end
value.pointer
end
# @param [AbstractMemory] value
# @param [nil] ctx
# @return [Struct]
# Create a struct from content of memory +value+.
def from_native(value, ctx)
@struct_class.new(value)
end
end
end
@@ -0,0 +1,96 @@
#
# Copyright (C) 2008-2010 Wayne Meissner
# Copyright (C) 2008, 2009 Andrea Fazzi
# Copyright (C) 2008, 2009 Luc Heinrich
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
module FFI
class StructLayout
# @return [Array<Array(Symbol, Integer)>
# Get an array of tuples (field name, offset of the field).
def offsets
members.map { |m| [ m, self[m].offset ] }
end
# @return [Integer]
# Get the offset of a field.
def offset_of(field_name)
self[field_name].offset
end
# An enum {Field} in a {StructLayout}.
class Enum < Field
# @param [AbstractMemory] ptr pointer on a {Struct}
# @return [Object]
# Get an object of type {#type} from memory pointed by +ptr+.
def get(ptr)
type.find(ptr.get_int(offset))
end
# @param [AbstractMemory] ptr pointer on a {Struct}
# @param value
# @return [nil]
# Set +value+ into memory pointed by +ptr+.
def put(ptr, value)
ptr.put_int(offset, type.find(value))
end
end
class InnerStruct < Field
def get(ptr)
type.struct_class.new(ptr.slice(self.offset, self.size))
end
def put(ptr, value)
raise TypeError, "wrong value type (expected #{type.struct_class})" unless value.is_a?(type.struct_class)
ptr.slice(self.offset, self.size).__copy_from__(value.pointer, self.size)
end
end
class Mapped < Field
def initialize(name, offset, type, orig_field)
@orig_field = orig_field
super(name, offset, type)
end
def get(ptr)
type.from_native(@orig_field.get(ptr), nil)
end
def put(ptr, value)
@orig_field.put(ptr, type.to_native(value, nil))
end
end
end
end
@@ -0,0 +1,227 @@
#
# Copyright (C) 2008-2010 Wayne Meissner
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
module FFI
# Build a {StructLayout struct layout}.
class StructLayoutBuilder
attr_reader :size
attr_reader :alignment
def initialize
@size = 0
@alignment = 1
@min_alignment = 1
@packed = false
@union = false
@fields = Array.new
end
# Set size attribute with +size+ only if +size+ is greater than attribute value.
# @param [Integer] size
def size=(size)
@size = size if size > @size
end
# Set alignment attribute with +align+ only if it is greater than attribute value.
# @param [Integer] align
def alignment=(align)
@alignment = align if align > @alignment
@min_alignment = align
end
# Set union attribute.
# Set to +true+ to build a {Union} instead of a {Struct}.
# @param [Boolean] is_union
# @return [is_union]
def union=(is_union)
@union = is_union
end
# Building a {Union} or a {Struct} ?
#
# @return [Boolean]
#
def union?
@union
end
# Set packed attribute
# @overload packed=(packed) Set alignment and packed attributes to
# +packed+.
#
# @param [Integer] packed
#
# @return [packed]
# @overload packed=(packed) Set packed attribute.
# @param packed
#
# @return [0,1]
#
def packed=(packed)
if packed.is_a?(0.class)
@alignment = packed
@packed = packed
else
@packed = packed ? 1 : 0
end
end
# List of number types
NUMBER_TYPES = [
Type::INT8,
Type::UINT8,
Type::INT16,
Type::UINT16,
Type::INT32,
Type::UINT32,
Type::LONG,
Type::ULONG,
Type::INT64,
Type::UINT64,
Type::FLOAT32,
Type::FLOAT64,
Type::LONGDOUBLE,
Type::BOOL,
].freeze
# @param [String, Symbol] name name of the field
# @param [Array, DataConverter, Struct, StructLayout::Field, Symbol, Type] type type of the field
# @param [Integer, nil] offset
# @return [self]
# Add a field to the builder.
# @note Setting +offset+ to +nil+ or +-1+ is equivalent to +0+.
def add(name, type, offset = nil)
if offset.nil? || offset == -1
offset = @union ? 0 : align(@size, @packed ? [ @packed, type.alignment ].min : [ @min_alignment, type.alignment ].max)
end
#
# If a FFI::Type type was passed in as the field arg, try and convert to a StructLayout::Field instance
#
field = type.is_a?(StructLayout::Field) ? type : field_for_type(name, offset, type)
@fields << field
@alignment = [ @alignment, field.alignment ].max unless @packed
@size = [ @size, field.size + (@union ? 0 : field.offset) ].max
return self
end
# @param (see #add)
# @return (see #add)
# Same as {#add}.
# @see #add
def add_field(name, type, offset = nil)
add(name, type, offset)
end
# @param (see #add)
# @return (see #add)
# Add a struct as a field to the builder.
def add_struct(name, type, offset = nil)
add(name, Type::Struct.new(type), offset)
end
# @param name (see #add)
# @param type (see #add)
# @param [Integer] count array length
# @param offset (see #add)
# @return (see #add)
# Add an array as a field to the builder.
def add_array(name, type, count, offset = nil)
add(name, Type::Array.new(type, count), offset)
end
# @return [StructLayout]
# Build and return the struct layout.
def build
# Add tail padding if the struct is not packed
size = @packed ? @size : align(@size, @alignment)
layout = StructLayout.new(@fields, size, @alignment)
layout.__union! if @union
layout
end
private
# @param [Integer] offset
# @param [Integer] align
# @return [Integer]
def align(offset, align)
align + ((offset - 1) & ~(align - 1));
end
# @param (see #add)
# @return [StructLayout::Field]
def field_for_type(name, offset, type)
field_class = case
when type.is_a?(Type::Function)
StructLayout::Function
when type.is_a?(Type::Struct)
StructLayout::InnerStruct
when type.is_a?(Type::Array)
StructLayout::Array
when type.is_a?(FFI::Enum)
StructLayout::Enum
when NUMBER_TYPES.include?(type)
StructLayout::Number
when type == Type::POINTER
StructLayout::Pointer
when type == Type::STRING
StructLayout::String
when type.is_a?(Class) && type < StructLayout::Field
type
when type.is_a?(DataConverter)
return StructLayout::Mapped.new(name, offset, Type::Mapped.new(type), field_for_type(name, offset, type.native_type))
when type.is_a?(Type::Mapped)
return StructLayout::Mapped.new(name, offset, type, field_for_type(name, offset, type.native_type))
else
raise TypeError, "invalid struct field type #{type.inspect}"
end
field_class.new(name, offset, type)
end
end
end
@@ -0,0 +1,232 @@
require 'tempfile'
require 'open3'
module FFI
# ConstGenerator turns C constants into ruby values.
#
# @example a simple example for stdio
# require 'ffi/tools/const_generator'
# cg = FFI::ConstGenerator.new('stdio') do |gen|
# gen.const(:SEEK_SET)
# gen.const('SEEK_CUR')
# gen.const('seek_end') # this constant does not exist
# end # #calculate called automatically at the end of the block
#
# cg['SEEK_SET'] # => 0
# cg['SEEK_CUR'] # => 1
# cg['seek_end'] # => nil
# cg.to_ruby # => "SEEK_SET = 0\nSEEK_CUR = 1\n# seek_end not available"
class ConstGenerator
@options = {}
attr_reader :constants
# Creates a new constant generator that uses +prefix+ as a name, and an
# options hash.
#
# The only option is +:required+, which if set to +true+ raises an error if a
# constant you have requested was not found.
#
# @param [#to_s] prefix
# @param [Hash] options
# @return
# @option options [Boolean] :required
# @overload initialize(prefix, options)
# @overload initialize(prefix, options) { |gen| ... }
# @yieldparam [ConstGenerator] gen new generator is passed to the block
# When passed a block, {#calculate} is automatically called at the end of
# the block, otherwise you must call it yourself.
def initialize(prefix = nil, options = {})
@includes = ['stdio.h', 'stddef.h']
@constants = {}
@prefix = prefix
@required = options[:required]
@options = options
if block_given? then
yield self
calculate self.class.options.merge(options)
end
end
# Set class options
# These options are merged with {#initialize} options when it is called with a block.
# @param [Hash] options
# @return [Hash] class options
def self.options=(options)
@options = options
end
# Get class options.
# @return [Hash] class options
def self.options
@options
end
# @param [String] name
# @return constant value (converted if a +converter+ was defined).
# Access a constant by name.
def [](name)
@constants[name].converted_value
end
# Request the value for C constant +name+.
#
# @param [#to_s] name C constant name
# @param [String] format a printf format string to print the value out
# @param [String] cast a C cast for the value
# @param ruby_name alternate ruby name for {#to_ruby}
#
# @overload const(name, format=nil, cast='', ruby_name=nil, converter=nil)
# +converter+ is a Method or a Proc.
# @param [#call] converter convert the value from a string to the appropriate
# type for {#to_ruby}.
# @overload const(name, format=nil, cast='', ruby_name=nil) { |value| ... }
# Use a converter block. This block convert the value from a string to the
# appropriate type for {#to_ruby}.
# @yieldparam value constant value
def const(name, format = nil, cast = '', ruby_name = nil, converter = nil,
&converter_proc)
format ||= '%d'
cast ||= ''
if converter_proc and converter then
raise ArgumentError, "Supply only converter or converter block"
end
converter = converter_proc if converter.nil?
const = Constant.new name, format, cast, ruby_name, converter
@constants[name.to_s] = const
return const
end
# Calculate constants values.
# @param [Hash] options
# @option options [String] :cppflags flags for C compiler
# @return [nil]
# @raise if a constant is missing and +:required+ was set to +true+ (see {#initialize})
def calculate(options = {})
binary_path = nil
Tempfile.open("#{@prefix}.const_generator") do |f|
binary_path = f.path + ".bin"
@includes.each do |inc|
f.puts "#include <#{inc}>"
end
f.puts "\nint main(int argc, char **argv)\n{"
@constants.each_value do |const|
f.puts <<-EOF
#ifdef #{const.name}
printf("#{const.name} #{const.format}\\n", #{const.cast}#{const.name});
#endif
EOF
end
f.puts "\n\treturn 0;\n}"
f.flush
cc = ENV['CC'] || 'gcc'
output = `#{cc} #{options[:cppflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -x c -Wall -Werror #{f.path} -o #{binary_path} 2>&1`
unless $?.success? then
output = output.split("\n").map { |l| "\t#{l}" }.join "\n"
raise "Compilation error generating constants #{@prefix}:\n#{output}"
end
end
output = `#{binary_path}`
File.unlink(binary_path + (FFI::Platform.windows? ? ".exe" : ""))
output.each_line do |line|
line =~ /^(\S+)\s(.*)$/
const = @constants[$1]
const.value = $2
end
missing_constants = @constants.select do |name, constant|
constant.value.nil?
end.map { |name,| name }
if @required and not missing_constants.empty? then
raise "Missing required constants for #{@prefix}: #{missing_constants.join ', '}"
end
end
# Dump constants to +io+.
# @param [#puts] io
# @return [nil]
def dump_constants(io)
@constants.each do |name, constant|
name = [@prefix, name].join '.' if @prefix
io.puts "#{name} = #{constant.converted_value}"
end
end
# Outputs values for discovered constants. If the constant's value was
# not discovered it is not omitted.
# @return [String]
def to_ruby
@constants.sort_by { |name,| name }.map do |name, constant|
if constant.value.nil? then
"# #{name} not available"
else
constant.to_ruby
end
end.join "\n"
end
# Add additional C include file(s) to calculate constants from.
# @note +stdio.h+ and +stddef.h+ automatically included
# @param [List<String>, Array<String>] i include file(s)
# @return [Array<String>] array of include files
def include(*i)
@includes |= i.flatten
end
end
# This class hold constants for {ConstGenerator}
class ConstGenerator::Constant
attr_reader :name, :format, :cast
attr_accessor :value
# @param [#to_s] name
# @param [String] format a printf format string to print the value out
# @param [String] cast a C cast for the value
# @param ruby_name alternate ruby name for {#to_ruby}
# @param [#call] converter convert the value from a string to the appropriate
# type for {#to_ruby}.
def initialize(name, format, cast, ruby_name = nil, converter=nil)
@name = name
@format = format
@cast = cast
@ruby_name = ruby_name
@converter = converter
@value = nil
end
# Return constant value (converted if a +converter+ was defined).
# @return constant value.
def converted_value
if @converter
@converter.call(@value)
else
@value
end
end
# get constant ruby name
# @return [String]
def ruby_name
@ruby_name || @name
end
# Get an evaluable string from constant.
# @return [String]
def to_ruby
"#{ruby_name} = #{converted_value}"
end
end
end
@@ -0,0 +1,105 @@
require 'ffi/tools/struct_generator'
require 'ffi/tools/const_generator'
module FFI
##
# Generate files with C structs for FFI::Struct and C constants.
#
# == A simple example
#
# In file +zlib.rb.ffi+:
# module Zlib
# @@@
# constants do |c|
# c.include "zlib.h"
# c.const :ZLIB_VERNUM
# end
# @@@
#
# class ZStream < FFI::Struct
#
# struct do |s|
# s.name "struct z_stream_s"
# s.include "zlib.h"
#
# s.field :next_in, :pointer
# s.field :avail_in, :uint
# s.field :total_in, :ulong
# end
# @@@
# end
# end
#
# Translate the file:
# require "ffi/tools/generator"
# FFI::Generator.new "zlib.rb.ffi", "zlib.rb"
#
# Generates the file +zlib.rb+ with constant values and offsets:
# module Zlib
# ZLIB_VERNUM = 4784
#
# class ZStream < FFI::Struct
# layout :next_in, :pointer, 0,
# :avail_in, :uint, 8,
# :total_in, :ulong, 16
# end
#
# @see FFI::Generator::Task for easy integration in a Rakefile
class Generator
def initialize(ffi_name, rb_name, options = {})
@ffi_name = ffi_name
@rb_name = rb_name
@options = options
@name = File.basename rb_name, '.rb'
file = File.read @ffi_name
new_file = file.gsub(/^( *)@@@(.*?)@@@/m) do
@constants = []
@structs = []
indent = $1
original_lines = $2.count "\n"
instance_eval $2, @ffi_name, $`.count("\n")
new_lines = []
@constants.each { |c| new_lines << c.to_ruby }
@structs.each { |s| new_lines << s.generate_layout }
new_lines = new_lines.join("\n").split "\n" # expand multiline blocks
new_lines = new_lines.map { |line| indent + line }
padding = original_lines - new_lines.length
new_lines += [nil] * padding if padding >= 0
new_lines.join "\n"
end
open @rb_name, 'w' do |f|
f.puts "# This file is generated from `#{@ffi_name}'. Do not edit."
f.puts
f.puts new_file
end
end
def constants(options = {}, &block)
@constants << FFI::ConstGenerator.new(@name, @options.merge(options), &block)
end
def struct(options = {}, &block)
@structs << FFI::StructGenerator.new(@name, @options.merge(options), &block)
end
##
# Utility converter for constants
def to_s
proc { |obj| obj.to_s.inspect }
end
end
end
@@ -0,0 +1,32 @@
require 'ffi/tools/generator'
require 'rake'
require 'rake/tasklib'
##
# Add Rake tasks that generate files with C structs for FFI::Struct and C constants.
#
# @example a simple example for your Rakefile
# require "ffi/tools/generator_task"
# # Add a task to generate my_object.rb out of my_object.rb.ffi
# FFI::Generator::Task.new ["my_object.rb"], cflags: "-I/usr/local/mylibrary"
#
# The generated files are also added to the 'clear' task.
#
# @see FFI::Generator for a description of the file content
class FFI::Generator::Task < Rake::TaskLib
def initialize(rb_names, options={})
task :clean do rm_f rb_names end
rb_names.each do |rb_name|
ffi_name = "#{rb_name}.ffi"
file rb_name => ffi_name do |t|
puts "Generating #{rb_name}..." if Rake.application.options.trace
FFI::Generator.new ffi_name, rb_name, options
end
end
end
end
@@ -0,0 +1,195 @@
require 'tempfile'
module FFI
##
# Generates an FFI Struct layout.
#
# Given the @@@ portion in:
#
# class Zlib::ZStream < FFI::Struct
# @@@
# name "struct z_stream_s"
# include "zlib.h"
#
# field :next_in, :pointer
# field :avail_in, :uint
# field :total_in, :ulong
#
# # ...
# @@@
# end
#
# StructGenerator will create the layout:
#
# layout :next_in, :pointer, 0,
# :avail_in, :uint, 4,
# :total_in, :ulong, 8,
# # ...
#
# StructGenerator does its best to pad the layout it produces to preserve
# line numbers. Place the struct definition as close to the top of the file
# for best results.
class StructGenerator
@options = {}
attr_accessor :size
attr_reader :fields
def initialize(name, options = {})
@name = name
@struct_name = nil
@includes = []
@fields = []
@found = false
@size = nil
if block_given? then
yield self
calculate self.class.options.merge(options)
end
end
def self.options=(options)
@options = options
end
def self.options
@options
end
def calculate(options = {})
binary = File.join Dir.tmpdir, "rb_struct_gen_bin_#{Process.pid}"
raise "struct name not set" if @struct_name.nil?
Tempfile.open("#{@name}.struct_generator") do |f|
f.puts "#include <stdio.h>"
@includes.each do |inc|
f.puts "#include <#{inc}>"
end
f.puts "#include <stddef.h>\n\n"
f.puts "int main(int argc, char **argv)\n{"
f.puts " #{@struct_name} s;"
f.puts %[ printf("sizeof(#{@struct_name}) %u\\n", (unsigned int) sizeof(#{@struct_name}));]
@fields.each do |field|
f.puts <<-EOF
printf("#{field.name} %u %u\\n", (unsigned int) offsetof(#{@struct_name}, #{field.name}),
(unsigned int) sizeof(s.#{field.name}));
EOF
end
f.puts "\n return 0;\n}"
f.flush
cc = ENV['CC'] || 'gcc'
output = `#{cc} #{options[:cppflags]} #{options[:cflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -x c -Wall -Werror #{f.path} -o #{binary} 2>&1`
unless $?.success? then
@found = false
output = output.split("\n").map { |l| "\t#{l}" }.join "\n"
raise "Compilation error generating struct #{@name} (#{@struct_name}):\n#{output}"
end
end
output = `#{binary}`.split "\n"
File.unlink(binary + (FFI::Platform.windows? ? ".exe" : ""))
sizeof = output.shift
unless @size
m = /\s*sizeof\([^)]+\) (\d+)/.match sizeof
@size = m[1]
end
line_no = 0
output.each do |line|
md = line.match(/.+ (\d+) (\d+)/)
@fields[line_no].offset = md[1].to_i
@fields[line_no].size = md[2].to_i
line_no += 1
end
@found = true
end
def field(name, type=nil)
field = Field.new(name, type)
@fields << field
return field
end
def found?
@found
end
def dump_config(io)
io.puts "rbx.platform.#{@name}.sizeof = #{@size}"
@fields.each { |field| io.puts field.to_config(@name) }
end
def generate_layout
buf = ""
@fields.each_with_index do |field, i|
if buf.empty?
buf << "layout :#{field.name}, :#{field.type}, #{field.offset}"
else
buf << " :#{field.name}, :#{field.type}, #{field.offset}"
end
if i < @fields.length - 1
buf << ",\n"
end
end
buf
end
def get_field(name)
@fields.find { |f| name == f.name }
end
def include(i)
@includes << i
end
def name(n)
@struct_name = n
end
end
##
# A field in a Struct.
class StructGenerator::Field
attr_reader :name
attr_reader :type
attr_reader :offset
attr_accessor :size
def initialize(name, type)
@name = name
@type = type
@offset = nil
@size = nil
end
def offset=(o)
@offset = o
end
def to_config(name)
buf = []
buf << "rbx.platform.#{name}.#{@name}.offset = #{@offset}"
buf << "rbx.platform.#{name}.#{@name}.size = #{@size}"
buf << "rbx.platform.#{name}.#{@name}.type = #{@type}" if @type
buf
end
end
end
@@ -0,0 +1,222 @@
#
# Copyright (C) 2008-2010 Wayne Meissner
# Copyright (c) 2007, 2008 Evan Phoenix
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# see {file:README}
module FFI
# Unless custom_typedefs already defined in the C-ext?
unless defined?(custom_typedefs)
# Truffleruby and JRuby don't support Ractor so far.
# So they don't need separation between builtin and custom types.
def self.custom_typedefs
TypeDefs
end
writable_typemap = true
end
class << self
private :custom_typedefs
# @param [Type, DataConverter, Symbol] old type definition used by {FFI.find_type}
# @param [Symbol] add new type definition's name to add
# @return [Type]
# Add a definition type to type definitions.
#
# The type definition is local per Ractor.
def typedef(old, add)
tm = custom_typedefs
tm[add] = find_type(old)
end
# (see FFI.typedef)
def add_typedef(old, add)
typedef old, add
end
private def __typedef(old, add)
TypeDefs[add] = find_type(old, TypeDefs)
end
# @param [Type, DataConverter, Symbol] name
# @param [Hash] type_map if nil, {FFI::TypeDefs} is used
# @return [Type]
# Find a type in +type_map+ ({FFI::TypeDefs}, by default) from
# a type objet, a type name (symbol). If +name+ is a {DataConverter},
# a new {Type::Mapped} is created.
def find_type(name, type_map = nil)
if name.is_a?(Type)
name
elsif type_map&.has_key?(name)
type_map[name]
elsif (tm=custom_typedefs).has_key?(name)
tm[name]
elsif TypeDefs.has_key?(name)
TypeDefs[name]
elsif name.is_a?(DataConverter)
# Add a typedef so next time the converter is used, it hits the cache
tm = (type_map || custom_typedefs)
tm[name] = Type::Mapped.new(name)
else
raise TypeError, "unable to resolve type '#{name}'"
end
end
# @param type +type+ is an instance of class accepted by {FFI.find_type}
# @return [Integer]
# Get +type+ size, in bytes.
def type_size(type)
find_type(type).size
end
end
# List of type definitions
TypeDefs.merge!({
# The C void type; only useful for function return types
:void => Type::VOID,
# C boolean type
:bool => Type::BOOL,
# C nul-terminated string
:string => Type::STRING,
# C signed char
:char => Type::CHAR,
# C unsigned char
:uchar => Type::UCHAR,
# C signed short
:short => Type::SHORT,
# C unsigned short
:ushort => Type::USHORT,
# C signed int
:int => Type::INT,
# C unsigned int
:uint => Type::UINT,
# C signed long
:long => Type::LONG,
# C unsigned long
:ulong => Type::ULONG,
# C signed long long integer
:long_long => Type::LONG_LONG,
# C unsigned long long integer
:ulong_long => Type::ULONG_LONG,
# C single precision float
:float => Type::FLOAT,
# C double precision float
:double => Type::DOUBLE,
# C long double
:long_double => Type::LONGDOUBLE,
# Native memory address
:pointer => Type::POINTER,
# 8 bit signed integer
:int8 => Type::INT8,
# 8 bit unsigned integer
:uint8 => Type::UINT8,
# 16 bit signed integer
:int16 => Type::INT16,
# 16 bit unsigned integer
:uint16 => Type::UINT16,
# 32 bit signed integer
:int32 => Type::INT32,
# 32 bit unsigned integer
:uint32 => Type::UINT32,
# 64 bit signed integer
:int64 => Type::INT64,
# 64 bit unsigned integer
:uint64 => Type::UINT64,
:buffer_in => Type::BUFFER_IN,
:buffer_out => Type::BUFFER_OUT,
:buffer_inout => Type::BUFFER_INOUT,
# Used in function prototypes to indicate the arguments are variadic
:varargs => Type::VARARGS,
})
# This will convert a pointer to a Ruby string (just like `:string`), but
# also allow to work with the pointer itself. This is useful when you want
# a Ruby string already containing a copy of the data, but also the pointer
# to the data for you to do something with it, like freeing it, in case the
# library handed the memory off to the caller (Ruby-FFI).
#
# It's {typedef}'d as +:strptr+.
class StrPtrConverter
extend DataConverter
native_type Type::POINTER
# @param [Pointer] val
# @param ctx not used
# @return [Array(String, Pointer)]
# Returns a [ String, Pointer ] tuple so the C memory for the string can be freed
def self.from_native(val, ctx)
[ val.null? ? nil : val.get_string(0), val ]
end
end
__typedef(StrPtrConverter, :strptr)
# Load all the platform dependent types
begin
File.open(File.join(Platform::CONF_DIR, 'types.conf'), "r") do |f|
prefix = "rbx.platform.typedef."
f.each_line { |line|
if line.index(prefix) == 0
new_type, orig_type = line.chomp.slice(prefix.length..-1).split(/\s*=\s*/)
__typedef(orig_type.to_sym, new_type.to_sym)
end
}
end
__typedef :pointer, :caddr_t
rescue Errno::ENOENT
end
FFI.make_shareable(TypeDefs) unless writable_typemap
end
@@ -0,0 +1,43 @@
#
# Copyright (C) 2009 Andrea Fazzi <andrea.fazzi@alcacoop.it>
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
require 'ffi/struct'
module FFI
class Union < FFI::Struct
def self.builder
b = StructLayoutBuilder.new
b.union = true
b
end
end
end
@@ -0,0 +1,80 @@
#
# Copyright (C) 2008, 2009 Wayne Meissner
# Copyright (C) 2009 Luc Heinrich
#
# This file is part of ruby-ffi.
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of the Ruby FFI project nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
module FFI
class VariadicInvoker
def call(*args, &block)
param_types = Array.new(@fixed)
param_values = Array.new
@fixed.each_with_index do |t, i|
param_values << args[i]
end
i = @fixed.length
while i < args.length
param_types << FFI.find_type(args[i], @type_map)
param_values << args[i + 1]
i += 2
end
invoke(param_types, param_values, &block)
end
#
# Attach the invoker to module +mod+ as +mname+
#
def attach(mod, mname)
invoker = self
params = "*args"
call = "call"
mname = mname.to_sym
mod.module_eval <<-code, __FILE__, __LINE__
@ffi_functions = {} unless defined?(@ffi_functions)
@ffi_functions[#{mname.inspect}] = invoker
def self.#{mname}(#{params})
@ffi_functions[#{mname.inspect}].#{call}(#{params})
end
define_method(#{mname.inspect}, &method(#{mname.inspect}))
code
invoker
end
# Retrieve Array of parameter types
#
# This method returns an Array of FFI types accepted as function parameters.
#
# @return [Array<FFI::Type>]
def param_types
[*@fixed, Type::Builtin::VARARGS]
end
end
end
@@ -0,0 +1,3 @@
module FFI
VERSION = '1.17.4'
end