// // This file was autogenerated. // WINVER :: 0x0501; LUA_MULTILIB :: "lib"; LUA_LMULTILIB :: "lib"; LUA_LROOT :: "/usr/local"; LUA_LUADIR :: "/lua/5.1/"; LUA_JROOT :: LUA_LROOT; LUA_PATH :: "LUA_PATH"; LUA_CPATH :: "LUA_CPATH"; LUA_INIT :: "LUA_INIT"; LUA_DIRSEP :: "/"; LUA_PATHSEP :: ";"; LUA_PATH_MARK :: "?"; LUA_EXECDIR :: "!"; LUA_IGMARK :: "-"; LUAI_MAXSTACK :: 65500; LUAI_MAXCSTACK :: 8000; LUAI_GCPAUSE :: 200; LUAI_GCMUL :: 200; LUA_MAXCAPTURES :: 32; LUA_IDSIZE :: 60; LUA_NUMBER_SCAN :: "%lf"; LUA_NUMBER_FMT :: "%.14g"; LUAI_MAXNUMBER2STR :: 32; LUA_INTFRMLEN :: "l"; LUA_VERSION :: "Lua 5.1"; LUA_RELEASE :: "Lua 5.1.4"; LUA_VERSION_NUM :: 501; LUA_COPYRIGHT :: "Copyright (C) 1994-2008 Lua.org, PUC-Rio"; LUA_AUTHORS :: "R. Ierusalimschy, L. H. de Figueiredo & W. Celes"; LUA_SIGNATURE :: "\033Lua"; LUA_MULTRET :: -1; LUA_REGISTRYINDEX :: -10000; LUA_ENVIRONINDEX :: -10001; LUA_GLOBALSINDEX :: -10002; LUA_OK :: 0; LUA_YIELD :: 1; LUA_ERRRUN :: 2; LUA_ERRSYNTAX :: 3; LUA_ERRMEM :: 4; LUA_ERRERR :: 5; LUA_TNONE :: -1; LUA_TNIL :: 0; LUA_TBOOLEAN :: 1; LUA_TLIGHTUSERDATA :: 2; LUA_TNUMBER :: 3; LUA_TSTRING :: 4; LUA_TTABLE :: 5; LUA_TFUNCTION :: 6; LUA_TUSERDATA :: 7; LUA_TTHREAD :: 8; LUA_MINSTACK :: 20; LUA_GCSTOP :: 0; LUA_GCRESTART :: 1; LUA_GCCOLLECT :: 2; LUA_GCCOUNT :: 3; LUA_GCCOUNTB :: 4; LUA_GCSTEP :: 5; LUA_GCSETPAUSE :: 6; LUA_GCSETSTEPMUL :: 7; LUA_GCISRUNNING :: 9; lua_Chunkreader :: Reader; lua_Chunkwriter :: Writer; LUA_HOOKCALL :: 0; LUA_HOOKRET :: 1; LUA_HOOKLINE :: 2; LUA_HOOKCOUNT :: 3; LUA_HOOKTAILRET :: 4; LUA_MASKCALL :: 1 << LUA_HOOKCALL; LUA_MASKRET :: 1 << LUA_HOOKRET; LUA_MASKLINE :: 1 << LUA_HOOKLINE; LUA_MASKCOUNT :: 1 << LUA_HOOKCOUNT; LUAJIT_VERSION :: "LuaJIT 2.1.1744318430"; LUAJIT_VERSION_NUM :: 20199; LUAJIT_VERSION_SYM :: JIT_version_2_1_1744318430; LUAJIT_COPYRIGHT :: "Copyright (C) 2005-2025 Mike Pall"; LUAJIT_URL :: "https://luajit.org/"; LUAJIT_MODE_MASK :: 0x00ff; LUAJIT_MODE_OFF :: 0x0000; LUAJIT_MODE_ON :: 0x0100; LUAJIT_MODE_FLUSH :: 0x0200; LUA_FILEHANDLE :: "FILE*"; LUA_COLIBNAME :: "coroutine"; LUA_MATHLIBNAME :: "math"; LUA_STRLIBNAME :: "string"; LUA_TABLIBNAME :: "table"; LUA_IOLIBNAME :: "io"; LUA_OSLIBNAME :: "os"; LUA_LOADLIBNAME :: "package"; LUA_DBLIBNAME :: "debug"; LUA_BITLIBNAME :: "bit"; LUA_JITLIBNAME :: "jit"; LUA_FFILIBNAME :: "ffi"; LUA_ERRFILE :: LUA_ERRERR+1; LUA_NOREF :: -2; LUA_REFNIL :: -1; State :: struct {} CFunction :: #type (L: *State) -> s32 #c_call; /* ** functions that read/write blocks when loading/dumping Lua chunks */ Reader :: #type (L: *State, ud: *void, sz: *u64) -> *u8 #c_call; Writer :: #type (L: *State, p: *void, sz: u64, ud: *void) -> s32 #c_call; /* ** prototype for memory-allocation functions */ Alloc :: #type (ud: *void, ptr: *void, osize: u64, nsize: u64) -> *void #c_call; /* type of numbers in Lua */ Number :: float64; /* type for integer functions */ Integer :: ptrdiff_t; /* ** state manipulation */ newstate :: (f: Alloc, ud: *void) -> *State #foreign luajit_5_1 "lua_newstate"; close :: (L: *State) -> void #foreign luajit_5_1 "lua_close"; newthread :: (L: *State) -> *State #foreign luajit_5_1 "lua_newthread"; atpanic :: (L: *State, panicf: CFunction) -> CFunction #foreign luajit_5_1 "lua_atpanic"; /* ** basic stack manipulation */ gettop :: (L: *State) -> s32 #foreign luajit_5_1 "lua_gettop"; settop :: (L: *State, idx: s32) -> void #foreign luajit_5_1 "lua_settop"; pushvalue :: (L: *State, idx: s32) -> void #foreign luajit_5_1 "lua_pushvalue"; _remove :: (L: *State, idx: s32) -> void #foreign luajit_5_1 "lua_remove"; insert :: (L: *State, idx: s32) -> void #foreign luajit_5_1 "lua_insert"; replace :: (L: *State, idx: s32) -> void #foreign luajit_5_1 "lua_replace"; checkstack :: (L: *State, sz: s32) -> s32 #foreign luajit_5_1 "lua_checkstack"; xmove :: (from: *State, to: *State, n: s32) -> void #foreign luajit_5_1 "lua_xmove"; /* ** access functions (stack -> C) */ isnumber :: (L: *State, idx: s32) -> s32 #foreign luajit_5_1 "lua_isnumber"; isstring :: (L: *State, idx: s32) -> s32 #foreign luajit_5_1 "lua_isstring"; iscfunction :: (L: *State, idx: s32) -> s32 #foreign luajit_5_1 "lua_iscfunction"; isuserdata :: (L: *State, idx: s32) -> s32 #foreign luajit_5_1 "lua_isuserdata"; type :: (L: *State, idx: s32) -> s32 #foreign luajit_5_1 "lua_type"; typename :: (L: *State, tp: s32) -> *u8 #foreign luajit_5_1 "lua_typename"; equal :: (L: *State, idx1: s32, idx2: s32) -> s32 #foreign luajit_5_1 "lua_equal"; rawequal :: (L: *State, idx1: s32, idx2: s32) -> s32 #foreign luajit_5_1 "lua_rawequal"; lessthan :: (L: *State, idx1: s32, idx2: s32) -> s32 #foreign luajit_5_1 "lua_lessthan"; tonumber :: (L: *State, idx: s32) -> Number #foreign luajit_5_1 "lua_tonumber"; tointeger :: (L: *State, idx: s32) -> Integer #foreign luajit_5_1 "lua_tointeger"; toboolean :: (L: *State, idx: s32) -> s32 #foreign luajit_5_1 "lua_toboolean"; tolstring :: (L: *State, idx: s32, len: *u64) -> *u8 #foreign luajit_5_1 "lua_tolstring"; objlen :: (L: *State, idx: s32) -> u64 #foreign luajit_5_1 "lua_objlen"; tocfunction :: (L: *State, idx: s32) -> CFunction #foreign luajit_5_1 "lua_tocfunction"; touserdata :: (L: *State, idx: s32) -> *void #foreign luajit_5_1 "lua_touserdata"; tothread :: (L: *State, idx: s32) -> *State #foreign luajit_5_1 "lua_tothread"; topointer :: (L: *State, idx: s32) -> *void #foreign luajit_5_1 "lua_topointer"; /* ** push functions (C -> stack) */ pushnil :: (L: *State) -> void #foreign luajit_5_1 "lua_pushnil"; pushnumber :: (L: *State, n: Number) -> void #foreign luajit_5_1 "lua_pushnumber"; pushinteger :: (L: *State, n: Integer) -> void #foreign luajit_5_1 "lua_pushinteger"; pushlstring :: (L: *State, s: *u8, l: u64) -> void #foreign luajit_5_1 "lua_pushlstring"; pushstring :: (L: *State, s: *u8) -> void #foreign luajit_5_1 "lua_pushstring"; pushfstring_CFormat :: (L: *State, fmt: *u8, __args: ..Any) -> *u8 #foreign luajit_5_1 "lua_pushfstring"; pushfstring :: (L: *State, fmt: string, __args: ..Any) -> *u8 { push_allocator(temp); formatted_text_builder: String_Builder; print_to_builder(*formatted_text_builder, fmt, ..__args); append(*formatted_text_builder, "\0"); formatted_text := builder_to_string(*formatted_text_builder); return pushfstring_CFormat(L, "%s", formatted_text.data); } @PrintLike pushcclosure :: (L: *State, fn: CFunction, n: s32) -> void #foreign luajit_5_1 "lua_pushcclosure"; pushboolean :: (L: *State, b: s32) -> void #foreign luajit_5_1 "lua_pushboolean"; pushlightuserdata :: (L: *State, p: *void) -> void #foreign luajit_5_1 "lua_pushlightuserdata"; pushthread :: (L: *State) -> s32 #foreign luajit_5_1 "lua_pushthread"; /* ** get functions (Lua -> stack) */ gettable :: (L: *State, idx: s32) -> void #foreign luajit_5_1 "lua_gettable"; getfield :: (L: *State, idx: s32, k: *u8) -> void #foreign luajit_5_1 "lua_getfield"; rawget :: (L: *State, idx: s32) -> void #foreign luajit_5_1 "lua_rawget"; rawgeti :: (L: *State, idx: s32, n: s32) -> void #foreign luajit_5_1 "lua_rawgeti"; createtable :: (L: *State, narr: s32, nrec: s32) -> void #foreign luajit_5_1 "lua_createtable"; newuserdata :: (L: *State, sz: u64) -> *void #foreign luajit_5_1 "lua_newuserdata"; getmetatable :: (L: *State, objindex: s32) -> s32 #foreign luajit_5_1 "lua_getmetatable"; getfenv :: (L: *State, idx: s32) -> void #foreign luajit_5_1 "lua_getfenv"; /* ** set functions (stack -> Lua) */ settable :: (L: *State, idx: s32) -> void #foreign luajit_5_1 "lua_settable"; setfield :: (L: *State, idx: s32, k: *u8) -> void #foreign luajit_5_1 "lua_setfield"; rawset :: (L: *State, idx: s32) -> void #foreign luajit_5_1 "lua_rawset"; rawseti :: (L: *State, idx: s32, n: s32) -> void #foreign luajit_5_1 "lua_rawseti"; setmetatable :: (L: *State, objindex: s32) -> s32 #foreign luajit_5_1 "lua_setmetatable"; setfenv :: (L: *State, idx: s32) -> s32 #foreign luajit_5_1 "lua_setfenv"; /* ** `load' and `call' functions (load and run Lua code) */ call :: (L: *State, nargs: s32, nresults: s32) -> void #foreign luajit_5_1 "lua_call"; pcall :: (L: *State, nargs: s32, nresults: s32, errfunc: s32) -> s32 #foreign luajit_5_1 "lua_pcall"; cpcall :: (L: *State, func: CFunction, ud: *void) -> s32 #foreign luajit_5_1 "lua_cpcall"; load :: (L: *State, reader: Reader, dt: *void, chunkname: *u8) -> s32 #foreign luajit_5_1 "lua_load"; dump :: (L: *State, writer: Writer, data: *void) -> s32 #foreign luajit_5_1 "lua_dump"; /* ** coroutine functions */ yield :: (L: *State, nresults: s32) -> s32 #foreign luajit_5_1 "lua_yield"; resume :: (L: *State, narg: s32) -> s32 #foreign luajit_5_1 "lua_resume"; status :: (L: *State) -> s32 #foreign luajit_5_1 "lua_status"; gc :: (L: *State, what: s32, data: s32) -> s32 #foreign luajit_5_1 "lua_gc"; /* ** miscellaneous functions */ error :: (L: *State) -> s32 #foreign luajit_5_1 "lua_error"; next :: (L: *State, idx: s32) -> s32 #foreign luajit_5_1 "lua_next"; concat :: (L: *State, n: s32) -> void #foreign luajit_5_1 "lua_concat"; getallocf :: (L: *State, ud: **void) -> Alloc #foreign luajit_5_1 "lua_getallocf"; setallocf :: (L: *State, f: Alloc, ud: *void) -> void #foreign luajit_5_1 "lua_setallocf"; /* Functions to be called by the debuger in specific events */ Hook :: #type (L: *State, ar: *Debug) -> void #c_call; getstack :: (L: *State, level: s32, ar: *Debug) -> s32 #foreign luajit_5_1 "lua_getstack"; getinfo :: (L: *State, what: *u8, ar: *Debug) -> s32 #foreign luajit_5_1 "lua_getinfo"; getlocal :: (L: *State, ar: *Debug, n: s32) -> *u8 #foreign luajit_5_1 "lua_getlocal"; setlocal :: (L: *State, ar: *Debug, n: s32) -> *u8 #foreign luajit_5_1 "lua_setlocal"; getupvalue :: (L: *State, funcindex: s32, n: s32) -> *u8 #foreign luajit_5_1 "lua_getupvalue"; setupvalue :: (L: *State, funcindex: s32, n: s32) -> *u8 #foreign luajit_5_1 "lua_setupvalue"; sethook :: (L: *State, func: Hook, mask: s32, count: s32) -> s32 #foreign luajit_5_1 "lua_sethook"; gethook :: (L: *State) -> Hook #foreign luajit_5_1 "lua_gethook"; gethookmask :: (L: *State) -> s32 #foreign luajit_5_1 "lua_gethookmask"; gethookcount :: (L: *State) -> s32 #foreign luajit_5_1 "lua_gethookcount"; /* From Lua 5.2. */ upvalueid :: (L: *State, idx: s32, n: s32) -> *void #foreign luajit_5_1 "lua_upvalueid"; upvaluejoin :: (L: *State, idx1: s32, n1: s32, idx2: s32, n2: s32) -> void #foreign luajit_5_1 "lua_upvaluejoin"; loadx :: (L: *State, reader: Reader, dt: *void, chunkname: *u8, mode: *u8) -> s32 #foreign luajit_5_1 "lua_loadx"; version :: (L: *State) -> *Number #foreign luajit_5_1 "lua_version"; copy :: (L: *State, fromidx: s32, toidx: s32) -> void #foreign luajit_5_1 "lua_copy"; tonumberx :: (L: *State, idx: s32, isnum: *s32) -> Number #foreign luajit_5_1 "lua_tonumberx"; tointegerx :: (L: *State, idx: s32, isnum: *s32) -> Integer #foreign luajit_5_1 "lua_tointegerx"; /* From Lua 5.3. */ isyieldable :: (L: *State) -> s32 #foreign luajit_5_1 "lua_isyieldable"; Debug :: struct { event: s32; name: *u8; /* (n) */ namewhat: *u8; /* (n) `global', `local', `field', `method' */ what: *u8; /* (S) `Lua', `C', `main', `tail' */ source: *u8; /* (S) */ currentline: s32; /* (l) */ nups: s32; /* (u) number of upvalues */ linedefined: s32; /* (S) */ lastlinedefined: s32; /* (S) */ short_src: [60] u8; /* (S) */ i_ci: s32; /* active function */ } LUAJIT_MODE :: enum u32 { ENGINE :: 0; DEBUG :: 1; FUNC :: 2; ALLFUNC :: 3; ALLSUBFUNC :: 4; TRACE :: 5; WRAPCFUNC :: 16; MAX :: 17; LUAJIT_MODE_ENGINE :: ENGINE; LUAJIT_MODE_DEBUG :: DEBUG; LUAJIT_MODE_FUNC :: FUNC; LUAJIT_MODE_ALLFUNC :: ALLFUNC; LUAJIT_MODE_ALLSUBFUNC :: ALLSUBFUNC; LUAJIT_MODE_TRACE :: TRACE; LUAJIT_MODE_WRAPCFUNC :: WRAPCFUNC; LUAJIT_MODE_MAX :: MAX; } /* Control the JIT engine. */ JIT_setmode :: (L: *State, idx: s32, mode: s32) -> s32 #foreign luajit_5_1 "luaJIT_setmode"; /* Low-overhead profiling API. */ JIT_profile_callback :: #type (data: *void, L: *State, samples: s32, vmstate: s32) -> void #c_call; JIT_profile_start :: (L: *State, mode: *u8, cb: JIT_profile_callback, data: *void) -> void #foreign luajit_5_1 "luaJIT_profile_start"; JIT_profile_stop :: (L: *State) -> void #foreign luajit_5_1 "luaJIT_profile_stop"; JIT_profile_dumpstack :: (L: *State, fmt: *u8, depth: s32, len: *u64) -> *u8 #foreign luajit_5_1 "luaJIT_profile_dumpstack"; /* Enforce (dynamic) linker error for version mismatches. Call from main. */ JIT_version_2_1_1744318430 :: () -> void #foreign luajit_5_1 "luaJIT_version_2_1_1744318430"; open_base :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_base"; open_math :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_math"; open_string :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_string"; open_table :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_table"; open_io :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_io"; open_os :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_os"; open_package :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_package"; open_debug :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_debug"; open_bit :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_bit"; open_jit :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_jit"; open_ffi :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_ffi"; open_string_buffer :: (L: *State) -> s32 #foreign luajit_5_1 "luaopen_string_buffer"; L_openlibs :: (L: *State) -> void #foreign luajit_5_1 "luaL_openlibs"; L_Reg :: struct { name: *u8; func: CFunction; } L_openlib :: (L: *State, libname: *u8, l: *L_Reg, nup: s32) -> void #foreign luajit_5_1 "luaL_openlib"; L_register :: (L: *State, libname: *u8, l: *L_Reg) -> void #foreign luajit_5_1 "luaL_register"; L_getmetafield :: (L: *State, obj: s32, e: *u8) -> s32 #foreign luajit_5_1 "luaL_getmetafield"; L_callmeta :: (L: *State, obj: s32, e: *u8) -> s32 #foreign luajit_5_1 "luaL_callmeta"; L_typerror :: (L: *State, narg: s32, tname: *u8) -> s32 #foreign luajit_5_1 "luaL_typerror"; L_argerror :: (L: *State, numarg: s32, extramsg: *u8) -> s32 #foreign luajit_5_1 "luaL_argerror"; L_checklstring :: (L: *State, numArg: s32, l: *u64) -> *u8 #foreign luajit_5_1 "luaL_checklstring"; L_optlstring :: (L: *State, numArg: s32, def: *u8, l: *u64) -> *u8 #foreign luajit_5_1 "luaL_optlstring"; L_checknumber :: (L: *State, numArg: s32) -> Number #foreign luajit_5_1 "luaL_checknumber"; L_optnumber :: (L: *State, nArg: s32, def: Number) -> Number #foreign luajit_5_1 "luaL_optnumber"; L_checkinteger :: (L: *State, numArg: s32) -> Integer #foreign luajit_5_1 "luaL_checkinteger"; L_optinteger :: (L: *State, nArg: s32, def: Integer) -> Integer #foreign luajit_5_1 "luaL_optinteger"; L_checkstack :: (L: *State, sz: s32, msg: *u8) -> void #foreign luajit_5_1 "luaL_checkstack"; L_checktype :: (L: *State, narg: s32, t: s32) -> void #foreign luajit_5_1 "luaL_checktype"; L_checkany :: (L: *State, narg: s32) -> void #foreign luajit_5_1 "luaL_checkany"; L_newmetatable :: (L: *State, tname: *u8) -> s32 #foreign luajit_5_1 "luaL_newmetatable"; L_checkudata :: (L: *State, ud: s32, tname: *u8) -> *void #foreign luajit_5_1 "luaL_checkudata"; L_where :: (L: *State, lvl: s32) -> void #foreign luajit_5_1 "luaL_where"; L_error_CFormat :: (L: *State, fmt: *u8, __args: ..Any) -> s32 #foreign luajit_5_1 "luaL_error"; L_error :: (L: *State, fmt: string, __args: ..Any) -> s32 { push_allocator(temp); formatted_text_builder: String_Builder; print_to_builder(*formatted_text_builder, fmt, ..__args); append(*formatted_text_builder, "\0"); formatted_text := builder_to_string(*formatted_text_builder); return L_error_CFormat(L, "%s", formatted_text.data); } @PrintLike L_checkoption :: (L: *State, narg: s32, def: *u8, lst: **u8) -> s32 #foreign luajit_5_1 "luaL_checkoption"; L_ref :: (L: *State, t: s32) -> s32 #foreign luajit_5_1 "luaL_ref"; L_unref :: (L: *State, t: s32, ref: s32) -> void #foreign luajit_5_1 "luaL_unref"; L_loadfile :: (L: *State, filename: *u8) -> s32 #foreign luajit_5_1 "luaL_loadfile"; L_loadbuffer :: (L: *State, buff: *u8, sz: u64, name: *u8) -> s32 #foreign luajit_5_1 "luaL_loadbuffer"; L_loadstring :: (L: *State, s: *u8) -> s32 #foreign luajit_5_1 "luaL_loadstring"; L_newstate :: () -> *State #foreign luajit_5_1 "luaL_newstate"; L_gsub :: (L: *State, s: *u8, p: *u8, r: *u8) -> *u8 #foreign luajit_5_1 "luaL_gsub"; L_findtable :: (L: *State, idx: s32, fname: *u8, szhint: s32) -> *u8 #foreign luajit_5_1 "luaL_findtable"; /* From Lua 5.2. */ L_fileresult :: (L: *State, stat: s32, fname: *u8) -> s32 #foreign luajit_5_1 "luaL_fileresult"; L_execresult :: (L: *State, stat: s32) -> s32 #foreign luajit_5_1 "luaL_execresult"; L_loadfilex :: (L: *State, filename: *u8, mode: *u8) -> s32 #foreign luajit_5_1 "luaL_loadfilex"; L_loadbufferx :: (L: *State, buff: *u8, sz: u64, name: *u8, mode: *u8) -> s32 #foreign luajit_5_1 "luaL_loadbufferx"; L_traceback :: (L: *State, L1: *State, msg: *u8, level: s32) -> void #foreign luajit_5_1 "luaL_traceback"; L_setfuncs :: (L: *State, l: *L_Reg, nup: s32) -> void #foreign luajit_5_1 "luaL_setfuncs"; L_pushmodule :: (L: *State, modname: *u8, sizehint: s32) -> void #foreign luajit_5_1 "luaL_pushmodule"; L_testudata :: (L: *State, ud: s32, tname: *u8) -> *void #foreign luajit_5_1 "luaL_testudata"; L_setmetatable :: (L: *State, tname: *u8) -> void #foreign luajit_5_1 "luaL_setmetatable"; /* ** {====================================================== ** Generic Buffer manipulation ** ======================================================= */ L_Buffer :: struct { p: *u8; /* current position in buffer */ lvl: s32; /* number of strings in the stack (level) */ L: *State; buffer: [1024] u8; } L_buffinit :: (L: *State, B: *L_Buffer) -> void #foreign luajit_5_1 "luaL_buffinit"; L_prepbuffer :: (B: *L_Buffer) -> *u8 #foreign luajit_5_1 "luaL_prepbuffer"; L_addlstring :: (B: *L_Buffer, s: *u8, l: u64) -> void #foreign luajit_5_1 "luaL_addlstring"; L_addstring :: (B: *L_Buffer, s: *u8) -> void #foreign luajit_5_1 "luaL_addstring"; L_addvalue :: (B: *L_Buffer) -> void #foreign luajit_5_1 "luaL_addvalue"; L_pushresult :: (B: *L_Buffer) -> void #foreign luajit_5_1 "luaL_pushresult"; #scope_file #import "Basic"; // For assert, push_context #run { { info := type_info(Debug); for info.members { if it.name == { case "event"; assert(it.offset_in_bytes == 0, "Debug.event has unexpected offset % instead of 0", it.offset_in_bytes); assert(it.type.runtime_size == 4, "Debug.event has unexpected size % instead of 4", it.type.runtime_size); case "name"; assert(it.offset_in_bytes == 8, "Debug.name has unexpected offset % instead of 8", it.offset_in_bytes); assert(it.type.runtime_size == 8, "Debug.name has unexpected size % instead of 8", it.type.runtime_size); case "namewhat"; assert(it.offset_in_bytes == 16, "Debug.namewhat has unexpected offset % instead of 16", it.offset_in_bytes); assert(it.type.runtime_size == 8, "Debug.namewhat has unexpected size % instead of 8", it.type.runtime_size); case "what"; assert(it.offset_in_bytes == 24, "Debug.what has unexpected offset % instead of 24", it.offset_in_bytes); assert(it.type.runtime_size == 8, "Debug.what has unexpected size % instead of 8", it.type.runtime_size); case "source"; assert(it.offset_in_bytes == 32, "Debug.source has unexpected offset % instead of 32", it.offset_in_bytes); assert(it.type.runtime_size == 8, "Debug.source has unexpected size % instead of 8", it.type.runtime_size); case "currentline"; assert(it.offset_in_bytes == 40, "Debug.currentline has unexpected offset % instead of 40", it.offset_in_bytes); assert(it.type.runtime_size == 4, "Debug.currentline has unexpected size % instead of 4", it.type.runtime_size); case "nups"; assert(it.offset_in_bytes == 44, "Debug.nups has unexpected offset % instead of 44", it.offset_in_bytes); assert(it.type.runtime_size == 4, "Debug.nups has unexpected size % instead of 4", it.type.runtime_size); case "linedefined"; assert(it.offset_in_bytes == 48, "Debug.linedefined has unexpected offset % instead of 48", it.offset_in_bytes); assert(it.type.runtime_size == 4, "Debug.linedefined has unexpected size % instead of 4", it.type.runtime_size); case "lastlinedefined"; assert(it.offset_in_bytes == 52, "Debug.lastlinedefined has unexpected offset % instead of 52", it.offset_in_bytes); assert(it.type.runtime_size == 4, "Debug.lastlinedefined has unexpected size % instead of 4", it.type.runtime_size); case "short_src"; assert(it.offset_in_bytes == 56, "Debug.short_src has unexpected offset % instead of 56", it.offset_in_bytes); assert(it.type.runtime_size == 60, "Debug.short_src has unexpected size % instead of 60", it.type.runtime_size); case "i_ci"; assert(it.offset_in_bytes == 116, "Debug.i_ci has unexpected offset % instead of 116", it.offset_in_bytes); assert(it.type.runtime_size == 4, "Debug.i_ci has unexpected size % instead of 4", it.type.runtime_size); } } assert(size_of(Debug) == 120, "Debug has size % instead of 120", size_of(Debug)); } { info := type_info(L_Reg); for info.members { if it.name == { case "name"; assert(it.offset_in_bytes == 0, "L_Reg.name has unexpected offset % instead of 0", it.offset_in_bytes); assert(it.type.runtime_size == 8, "L_Reg.name has unexpected size % instead of 8", it.type.runtime_size); case "func"; assert(it.offset_in_bytes == 8, "L_Reg.func has unexpected offset % instead of 8", it.offset_in_bytes); assert(it.type.runtime_size == 8, "L_Reg.func has unexpected size % instead of 8", it.type.runtime_size); } } assert(size_of(L_Reg) == 16, "L_Reg has size % instead of 16", size_of(L_Reg)); } { info := type_info(L_Buffer); for info.members { if it.name == { case "p"; assert(it.offset_in_bytes == 0, "L_Buffer.p has unexpected offset % instead of 0", it.offset_in_bytes); assert(it.type.runtime_size == 8, "L_Buffer.p has unexpected size % instead of 8", it.type.runtime_size); case "lvl"; assert(it.offset_in_bytes == 8, "L_Buffer.lvl has unexpected offset % instead of 8", it.offset_in_bytes); assert(it.type.runtime_size == 4, "L_Buffer.lvl has unexpected size % instead of 4", it.type.runtime_size); case "L"; assert(it.offset_in_bytes == 16, "L_Buffer.L has unexpected offset % instead of 16", it.offset_in_bytes); assert(it.type.runtime_size == 8, "L_Buffer.L has unexpected size % instead of 8", it.type.runtime_size); case "buffer"; assert(it.offset_in_bytes == 24, "L_Buffer.buffer has unexpected offset % instead of 24", it.offset_in_bytes); assert(it.type.runtime_size == 1024, "L_Buffer.buffer has unexpected size % instead of 1024", it.type.runtime_size); } } assert(size_of(L_Buffer) == 1048, "L_Buffer has size % instead of 1048", size_of(L_Buffer)); } }