lua51 0.1.6

Lua 5.1.5 bindings for Rust.
use libc::*;

use crate::ffi::lua::*;

#[repr(C)]
#[derive(Copy, Clone)]
pub union UserAlignment {
	pub u: c_double,
	pub s: *mut c_void,
	pub l: c_long,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GCObject {}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GCHeader {
	pub next: *mut GCObject,
	pub tt: u8,
	pub marked: u8,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub union Value {
	pub gc: *mut GCObject,
	pub p: *mut c_void,
	pub n: lua_Number,
	pub b: i32,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct TValue {
	pub value: Value,
	pub tt: i32,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct __TString {
	pub common_header: GCHeader,
	pub reserved: u8,
	pub hash: u32,
	publen: usize,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub union TString {
	pub dummy: UserAlignment,
	pub tsv: __TString,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct Node {
	pub i_val: TValue,
	pub i_key: TKey,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct __TKey {
	pub value: Value,
	pub tt: i32,
	pub next: *mut Node,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub union TKey {
	pub nk: __TKey,
	pub tvk: TValue,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct Table {
	pub common_header: GCHeader,
	pub flags: u8,
	pub lsizenode: u8,
	pub metatable: *mut Table,
	pub array: *mut TValue,
	pub node: *mut Node,
	pub lastfree: *mut Node,
	pub gclist: *mut GCObject,
	pub sizearray: i32,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct __UpValDoubleLinkedList {
	pub prev: *mut UpVal,
	pub next: *mut UpVal,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub union __UpVal {
	pub value: TValue,
	pub l: __UpValDoubleLinkedList,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct UpVal {
	pub common_header: GCHeader,
	pub v: *mut TValue,
	pub u: __UpVal,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct LocVar {
	pub varname: *mut TString,
	pub startpc: i32,
	pub endpc: i32,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct Proto {
	pub common_header: GCHeader,
	pub k: *mut TValue,
	pub code: *mut u32,
	pub p: *mut *mut Proto,
	pub lineinfo: *mut i32,
	pub locvars: *mut LocVar,
	pub upvalues: *mut *mut TString,
	pub source: *mut TString,
	pub sizeupvalues: i32,
	pub sizek: i32,
	pub sizecode: i32,
	pub sizelineinfo: i32,
	pub sizep: i32,
	pub sizelocvars: i32,
	pub linedefined: i32,
	pub lastlinedefined: i32,
	pub gclist: *mut GCObject,
	pub nups: u8,
	pub numparams: u8,
	pub is_vararg: u8,
	pub maxstacksize: u8,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct ClosureHeader {
	pub common_header: GCHeader,
	pub isC: u8,
	pub nupvalues: u8,
	pub gclist: *mut GCObject,
	pub env: *mut Table,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct LClosure {
	pub closure_header: ClosureHeader,
	pub p: *mut Proto,
	pub upvals: *mut [UpVal; 1],
}