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