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