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.
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,180 @@
#
# 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
# @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,43 @@
#
# 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
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,71 @@
#
# 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
# 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,576 @@
#
# 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 methods or variables can be attached and no further enums or typedefs can be created in this module afterwards.
def freeze
instance_variables.each do |name|
var = instance_variable_get(name)
FFI.make_shareable(var)
end
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
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,137 @@
require 'tempfile'
module FFI
# @private
class TypesGenerator
##
# Maps different C types to the C type representations we use
TYPE_MAP = {
"char" => :char,
"signed char" => :char,
"__signed char" => :char,
"unsigned char" => :uchar,
"short" => :short,
"signed short" => :short,
"signed short int" => :short,
"unsigned short" => :ushort,
"unsigned short int" => :ushort,
"int" => :int,
"signed int" => :int,
"unsigned int" => :uint,
"long" => :long,
"long int" => :long,
"signed long" => :long,
"signed long int" => :long,
"unsigned long" => :ulong,
"unsigned long int" => :ulong,
"long unsigned int" => :ulong,
"long long" => :long_long,
"long long int" => :long_long,
"signed long long" => :long_long,
"signed long long int" => :long_long,
"unsigned long long" => :ulong_long,
"unsigned long long int" => :ulong_long,
"char *" => :string,
"void *" => :pointer,
}
def self.generate(options = {})
typedefs = nil
Tempfile.open 'ffi_types_generator' do |io|
io.puts <<-C
#include <stdint.h>
#include <stddef.h>
#include <sys/types.h>
#if !(defined(WIN32))
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/resource.h>
#endif
C
io.close
cc = ENV['CC'] || 'gcc'
cmd = "#{cc} -E -x c #{options[:cppflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c"
if options[:input]
typedefs = File.read(options[:input])
elsif options[:remote]
typedefs = `ssh #{options[:remote]} #{cmd} - < #{io.path}`
else
typedefs = `#{cmd} #{io.path}`
end
end
code = []
typedefs.each_line do |type|
# We only care about single line typedef
next unless type =~ /typedef/
# Ignore unions or structs
next if type =~ /union|struct/
# strip off the starting typedef and ending ;
type.gsub!(/^(.*typedef\s*)/, "")
type.gsub!(/\s*;\s*$/, "")
parts = type.split(/\s+/)
def_type = parts.join(" ")
# GCC does mapping with __attribute__ stuf, also see
# http://hal.cs.berkeley.edu/cil/cil016.html section 16.2.7. Problem
# with this is that the __attribute__ stuff can either occur before or
# after the new type that is defined...
if type =~ /__attribute__/
if parts.last =~ /__QI__|__HI__|__SI__|__DI__|__word__/
# In this case, the new type is BEFORE __attribute__ we need to
# find the final_type as the type before the part that starts with
# __attribute__
final_type = ""
parts.each do |p|
break if p =~ /__attribute__/
final_type = p
end
else
final_type = parts.pop
end
def_type = case type
when /__QI__/ then "char"
when /__HI__/ then "short"
when /__SI__/ then "int"
when /__DI__/ then "long long"
when /__word__/ then "long"
else "int"
end
def_type = "unsigned #{def_type}" if type =~ /unsigned/
else
final_type = parts.pop
def_type = parts.join(" ")
end
if type = TYPE_MAP[def_type]
code << "rbx.platform.typedef.#{final_type} = #{type}"
TYPE_MAP[final_type] = TYPE_MAP[def_type]
else
# Fallback to an ordinary pointer if we don't know the type
if def_type =~ /\*/
code << "rbx.platform.typedef.#{final_type} = pointer"
TYPE_MAP[final_type] = :pointer
end
end
end
code.sort.join("\n")
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.1'
end