1 /+ 2 + Copyright 2023 Aya Partridge 3 + Copyright 2019 - 2021 Michael D. Parker 4 + Distributed under the Boost Software License, Version 1.0. 5 + (See accompanying file LICENSE_1_0.txt or copy at 6 + http://www.boost.org/LICENSE_1_0.txt) 7 +/ 8 module bindbc.lua.v54.types; 9 10 version(LUA_54): 11 12 import core.stdc.stdio: BUFSIZ, FILE; 13 import core.stdc.stdint: intptr_t; 14 import core.stdc.config: c_long; 15 16 // luaconf.h 17 alias LUA_INT32 = int; 18 alias LUAI_UMEM = size_t; 19 alias LUAI_MEM = ptrdiff_t; 20 alias LUA_NUMBER = double; 21 alias LUA_INTEGER = ptrdiff_t; 22 alias LUA_UNSIGNED = uint; 23 24 alias LUA_KCONTEXT = intptr_t; 25 enum LUAI_MAXSTACK = 1000000; 26 enum LUA_EXTRASPACE = (void*).sizeof; 27 enum LUA_IDSIZE = 60; 28 enum LUAL_BUFFERSIZE = cast(int)(16 * (void*).sizeof * lua_Number.sizeof); 29 30 mixin template LUAI_MAXALIGN(){ 31 lua_Number n; 32 double u; 33 void *s; 34 lua_Integer i; 35 c_long l; 36 } 37 38 39 // lauxlib.h 40 enum LUA_ERRFILE = LUA_ERRERR+1; 41 enum LUA_LOADED_TABLE = "_LOADED"; 42 enum LUA_PRELOAD_TABLE = "_PRELOAD"; 43 44 struct luaL_Reg{ 45 const(char)* name; 46 lua_CFunction func; 47 } 48 49 enum LUAL_NUMSIZES = lua_Integer.sizeof * 16 + lua_Number.sizeof; 50 51 enum LUA_NOREF = -2; 52 enum LUA_REFNIL = -1; 53 54 struct luaL_Buffer{ 55 char* b; 56 size_t size; 57 size_t n; 58 lua_State* L; 59 union init{ 60 mixin LUAI_MAXALIGN!(); 61 char[LUAL_BUFFERSIZE] initb; 62 } 63 } 64 65 alias LUA_FILEHANDLE = FILE*; 66 67 struct luaL_Stream{ 68 FILE* f; 69 lua_CFunction closef; 70 } 71 72 // lua.h 73 enum LUA_VERSION_MAJOR = "5"; 74 enum LUA_VERSION_MINOR = "4"; 75 enum LUA_VERSION_RELEASE = "2"; 76 77 enum LUA_VERSION_NUM = 504; 78 enum LUA_VERSION_RELEASE_NUM = LUA_VERSION_NUM * 100 + 0; 79 80 enum LUA_VERSION = "Lua " ~ LUA_VERSION_MAJOR ~ "." ~ LUA_VERSION_MINOR; 81 enum LUA_RELEASE = LUA_VERSION ~ "." ~ LUA_VERSION_RELEASE; 82 83 enum LUA_SIGNATURE = "\x1bLua"; 84 enum LUA_MULTRET = -1; 85 86 enum LUA_REGISTRYINDEX = -LUAI_MAXSTACK - 1000; 87 88 enum LUA_OK = 0; 89 enum LUA_YIELD = 1; 90 enum LUA_ERRRUN = 2; 91 enum LUA_ERRSYNTAX = 3; 92 enum LUA_ERRMEM = 4; 93 enum LUA_ERRERR = 5; 94 95 enum LUA_TNONE = -1; 96 enum LUA_TNIL = 0; 97 enum LUA_TBOOLEAN = 1; 98 enum LUA_TLIGHTUSERDATA = 2; 99 enum LUA_TNUMBER = 3; 100 enum LUA_TSTRING = 4; 101 enum LUA_TTABLE = 5; 102 enum LUA_TFUNCTION = 6; 103 enum LUA_TUSERDATA = 7; 104 enum LUA_TTHREAD = 8; 105 enum LUA_NUMTYPES = 9; 106 107 alias LUA_NUMTAGS = LUA_NUMTYPES; 108 109 enum LUA_MINSTACK = 20; 110 111 enum LUA_RIDX_MAINTHREAD = 1; 112 enum LUA_RIDX_GLOBALS = 2; 113 enum LUA_RIDX_LAST = LUA_RIDX_GLOBALS; 114 115 alias lua_Number = LUA_NUMBER; 116 alias lua_Integer = LUA_INTEGER; 117 alias lua_Unsigned = LUA_UNSIGNED; 118 alias lua_KContext = LUA_KCONTEXT; 119 120 struct lua_State; 121 122 extern(C) nothrow{ 123 alias lua_CFunction = int function(lua_State* L); 124 alias lua_KFunction = int function(lua_State* L, int status, lua_KContext ctx); 125 alias lua_Reader = const(char)* function(lua_State* L, void* ud, size_t* sz); 126 alias lua_Writer = int function(lua_State* L, const(void)* p, size_t sz, void* ud); 127 alias lua_Alloc = void* function(void* ud, void* ptr, size_t osize, size_t nsize); 128 alias lua_WarnFunction = void function(void* ud, const(char)* msg, int tocont); 129 } 130 131 enum LUA_OPADD = 0; 132 enum LUA_OPSUB = 1; 133 enum LUA_OPMUL = 2; 134 enum LUA_OPMOD = 3; 135 enum LUA_OPPOW = 4; 136 enum LUA_OPDIV = 5; 137 enum LUA_OPIDIV = 6; 138 enum LUA_OPBAND = 7; 139 enum LUA_OPBOR = 8; 140 enum LUA_OPBXOR = 9; 141 enum LUA_OPSHL = 10; 142 enum LUA_OPSHR = 11; 143 enum LUA_OPUNM = 12; 144 enum LUA_OPBNOT = 13; 145 146 enum LUA_OPEQ = 0; 147 enum LUA_OPLT = 1; 148 enum LUA_OPLE = 2; 149 150 enum LUA_GCSTOP = 0; 151 enum LUA_GCRESTART = 1; 152 enum LUA_GCCOLLECT = 2; 153 enum LUA_GCCOUNT = 3; 154 enum LUA_GCCOUNTB = 4; 155 enum LUA_GCSTEP = 5; 156 enum LUA_GCSETPAUSE = 6; 157 enum LUA_GCSETSTEPMUL = 7; 158 enum LUA_GCISRUNNING = 9; 159 160 enum LUA_HOOKCALL = 0; 161 enum LUA_HOOKRET = 1; 162 enum LUA_HOOKLINE = 2; 163 enum LUA_HOOKCOUNT = 3; 164 enum LUA_HOOKTAILRET = 4; 165 166 enum LUA_MASKCALL = 1 << LUA_HOOKCALL; 167 enum LUA_MASKRET = 1 << LUA_HOOKRET; 168 enum LUA_MASKLINE = 1 << LUA_HOOKLINE; 169 enum LUA_MASKCOUNT = 1 << LUA_HOOKCOUNT; 170 171 struct lua_Debug{ 172 int event; 173 const(char)* name; 174 const(char)* namewhat; 175 const(char)* what; 176 const(char)* source; 177 size_t srclen; 178 int currentline; 179 int linedefined; 180 int lastlinedefined; 181 ubyte nups; 182 ubyte nparams; 183 char isvararg; 184 char istailcall; 185 ushort ftransfer; 186 ushort ntransfer; 187 char[LUA_IDSIZE] short_src; 188 private void* i_ci; 189 } 190 191 alias lua_Hook = extern(C) void function(lua_State*, lua_Debug*) nothrow; 192 193 // lualib.h 194 enum LUA_VERSUFFIX = "_" ~ LUA_VERSION_MAJOR ~ "_" ~ LUA_VERSION_MINOR; 195 enum LUA_COLIBNAME = "coroutine"; 196 enum LUA_TABLIBNAME = "table"; 197 enum LUA_IOLIBNAME = "io"; 198 enum LUA_OSLIBNAME = "os"; 199 enum LUA_STRLIBNAME = "string"; 200 enum LUA_UTF8LIBNAME = "utf8"; 201 enum LUA_MATHLIBNAME = "math"; 202 enum LUA_DBLIBNAME = "debug"; 203 enum LUA_LOADLIBNAME = "package";