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.v51.types;
9 
10 version(LUA_51):
11 
12 import core.stdc.stdio: BUFSIZ;
13 
14 // luaconf.h
15 enum LUA_IDSIZE = 60;
16 alias LUAI_UINT32 = uint;
17 alias LUAI_INT32 = int;
18 enum LUAI_MAXINT32 = int.max;
19 alias LUAI_UMEM = size_t;
20 alias LUAI_MEM = ptrdiff_t;
21 alias LUA_NUMBER = double;
22 alias LUA_INTEGER = ptrdiff_t;
23 
24 enum LUAL_BUFFERSIZE = BUFSIZ;
25 
26 enum LUAI_MAXSTACK = 1000000;
27 
28 // lauxlib.h
29 enum LUA_ERRFILE = LUA_ERRERR+1;
30 
31 struct luaL_Reg{
32 	const(char)* name;
33 	lua_CFunction func;
34 }
35 
36 enum LUA_NOREF = -2;
37 enum LUA_REFNIL = -1;
38 
39 struct luaL_Buffer{
40 	char* p;
41 	int lvl;
42 	lua_State* L;
43 	char[LUAL_BUFFERSIZE] buffer;
44 }
45 
46 // lua.h
47 // The 5.1 header does not define LUA_VERSION_MAJOR/MINOR/NUM/RELEASE, but we will
48 // for consistency with the other versions.
49 enum LUA_VERSION_MAJOR = "5";
50 enum LUA_VERSION_MINOR = "1";
51 enum LUA_VERSION_NUM = 501;
52 enum LUA_VERSION_RELEASE = 5;
53 
54 enum LUA_VERSION = "Lua " ~ LUA_VERSION_MAJOR ~ "." ~ LUA_VERSION_MINOR;
55 enum LUA_RELEASE = LUA_VERSION ~ "." ~ LUA_VERSION_RELEASE;
56 
57 enum LUA_SIGNATURE = "\033Lua";
58 enum LUA_MULTRET = -1;
59 
60 enum LUA_REGISTRYINDEX = -10_000;
61 enum LUA_ENVIRONINDEX = -10_001;
62 enum LUA_GLOBALSINDEX = -10_002;
63 
64 enum LUA_YIELD = 1;
65 enum LUA_ERRRUN = 2;
66 enum LUA_ERRSYNTAX = 3;
67 enum LUA_ERRMEM = 4;
68 enum LUA_ERRERR = 5;
69 
70 struct lua_State;
71 
72 extern(C) nothrow{
73 	alias lua_CFunction = int function(lua_State*);
74 	alias lua_Reader = const(char)* function(lua_State*, void*, size_t*);
75 	alias lua_Writer = int function(lua_State*, const(void)*, size_t, void*);
76 	alias lua_Alloc = void* function(void*, void*, size_t, size_t);
77 }
78 
79 enum LUA_TNONE = -1;
80 enum LUA_TNIL = 0;
81 enum LUA_TBOOLEAN = 1;
82 enum LUA_TLIGHTUSERDATA = 2;
83 enum LUA_TNUMBER = 3;
84 enum LUA_TSTRING = 4;
85 enum LUA_TTABLE = 5;
86 enum LUA_TFUNCTION = 6;
87 enum LUA_TUSERDATA = 7;
88 enum LUA_TTHREAD = 8;
89 
90 enum LUA_MINSTACK = 20;
91 
92 alias lua_Number = LUA_NUMBER;
93 alias lua_Integer = LUA_INTEGER;
94 
95 enum LUA_GCSTOP = 0;
96 enum LUA_GCRESTART = 1;
97 enum LUA_GCCOLLECT = 2;
98 enum LUA_GCCOUNT = 3;
99 enum LUA_GCCOUNTB = 4;
100 enum LUA_GCSTEP = 5;
101 enum LUA_GCSETPAUSE = 6;
102 enum LUA_GCSETSTEPMUL = 7;
103 
104 enum LUA_HOOKCALL = 0;
105 enum LUA_HOOKRET = 1;
106 enum LUA_HOOKLINE = 2;
107 enum LUA_HOOKCOUNT = 3;
108 enum LUA_HOOKTAILRET = 4;
109 
110 enum LUA_MASKCALL = 1 << LUA_HOOKCALL;
111 enum LUA_MASKRET = 1 << LUA_HOOKRET;
112 enum LUA_MASKLINE = 1 << LUA_HOOKLINE;
113 enum LUA_MASKCOUNT = 1 << LUA_HOOKCOUNT;
114 
115 struct lua_Debug{
116 	int event;
117 	const(char)* name;
118 	const(char)* namewhat;
119 	const(char)* what;
120 	const(char)* source;
121 	int currentline;
122 	int nups;
123 	int linedefined;
124 	int lastlinedefined;
125 	char[LUA_IDSIZE] short_src;
126 	private int i_ci;
127 }
128 
129 alias lua_Hook = extern(C) void function(lua_State*, lua_Debug*) nothrow;
130 
131 // lualib.h
132 enum LUA_FILEHANDLE = "FILE*";
133 enum LUA_COLIBNAME = "coroutine";
134 enum LUA_TABLIBNAME = "table";
135 enum LUA_IOLIBNAME = "io";
136 enum LUA_OSLIBNAME = "os";
137 enum LUA_STRLIBNAME = "string";
138 enum LUA_MATHLIBNAME = "math";
139 enum LUA_DBLIBNAME = "debug";
140 enum LUA_LOADLIBNAME = "package";