locenv/
api.rs

1use std::ffi::c_void;
2use std::os::raw::{c_char, c_double, c_int, c_longlong, c_ulonglong};
3
4pub type LuaFunction = extern "C" fn(*mut LuaState) -> c_int;
5pub type LuaContinuation = unsafe extern "C" fn(*mut LuaState, c_int, isize) -> c_int;
6pub type LuaReader = unsafe extern "C" fn(*mut LuaState, *mut c_void, *mut usize) -> *const c_char;
7pub type LuaWriter =
8    unsafe extern "C" fn(*mut LuaState, *const c_void, usize, *mut c_void) -> c_int;
9pub type LuaAlloc = unsafe extern "C" fn(*mut c_void, *mut c_void, usize, usize) -> *mut c_void;
10
11#[repr(C)]
12pub struct BootstrapContext {
13    pub revision: u32,
14    pub name: *const c_char,
15    pub locenv: *const c_void,
16    pub lua: *mut LuaState,
17    pub working_directory: *const c_char,
18}
19
20#[repr(C)]
21pub struct LuaState {
22    private: [u8; 0],
23}
24
25#[repr(C)]
26pub struct LuaReg {
27    pub name: *const c_char,
28    pub func: Option<LuaFunction>,
29}
30
31#[repr(C)]
32pub struct ApiTable {
33    pub revision: u32,
34
35    pub lua_pushboolean: unsafe extern "C" fn(*mut LuaState, c_int),
36    pub lua_pushcclosure: extern "C" fn(*mut LuaState, LuaFunction, c_int),
37    pub lua_pushfstring: unsafe extern "C" fn(*mut LuaState, *const c_char, ...) -> *const c_char,
38    pub lua_pushinteger: unsafe extern "C" fn(*mut LuaState, c_longlong),
39    pub lua_pushlightuserdata: extern "C" fn(*mut LuaState, *mut u8),
40    pub lua_pushlstring: unsafe extern "C" fn(*mut LuaState, *const c_char, usize) -> *const c_char,
41    pub lua_pushnil: extern "C" fn(*mut LuaState),
42    pub lua_pushnumber: unsafe extern "C" fn(*mut LuaState, c_double),
43    pub lua_pushstring: unsafe extern "C" fn(*mut LuaState, *const c_char) -> *const c_char,
44    pub lua_pushthread: unsafe extern "C" fn(*mut LuaState) -> c_int,
45    pub lua_pushvalue: extern "C" fn(*mut LuaState, c_int),
46    pub lua_pushvfstring:
47        unsafe extern "C" fn(*mut LuaState, *const c_char, *mut c_void) -> *const c_char,
48    pub lua_createtable: extern "C" fn(*mut LuaState, c_int, c_int),
49    pub lua_newuserdatauv: extern "C" fn(*mut LuaState, usize, c_int) -> *mut u8,
50
51    pub lua_settable: extern "C" fn(*mut LuaState, c_int),
52    pub lua_rawset: unsafe extern "C" fn(*mut LuaState, c_int),
53    pub lua_seti: unsafe extern "C" fn(*mut LuaState, c_int, c_longlong),
54    pub lua_rawseti: unsafe extern "C" fn(*mut LuaState, c_int, c_longlong),
55    pub lua_setfield: unsafe extern "C" fn(*mut LuaState, c_int, *const c_char),
56    pub lua_rawsetp: unsafe extern "C" fn(*mut LuaState, c_int, *const c_void),
57    pub lua_setmetatable: extern "C" fn(*mut LuaState, c_int) -> c_int,
58    pub lua_setiuservalue: unsafe extern "C" fn(*mut LuaState, c_int, c_int) -> c_int,
59
60    pub lua_iscfunction: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
61    pub lua_isinteger: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
62    pub lua_isnumber: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
63    pub lua_isstring: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
64    pub lua_isuserdata: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
65    pub lua_type: extern "C" fn(*mut LuaState, c_int) -> c_int,
66    pub lua_typename: unsafe extern "C" fn(*mut LuaState, c_int) -> *const c_char,
67    pub lua_getmetatable: extern "C" fn(*mut LuaState, c_int) -> c_int,
68
69    pub lua_toboolean: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
70    pub lua_tocfunction: unsafe extern "C" fn(*mut LuaState, c_int) -> LuaFunction,
71    pub lua_tointegerx: unsafe extern "C" fn(*mut LuaState, c_int, *mut c_int) -> c_longlong,
72    pub lua_tolstring: unsafe extern "C" fn(*mut LuaState, c_int, *mut usize) -> *const c_char,
73    pub lua_tonumberx: unsafe extern "C" fn(*mut LuaState, c_int, *mut c_int) -> c_double,
74    pub lua_topointer: unsafe extern "C" fn(*mut LuaState, c_int) -> *const c_void,
75    pub lua_tothread: unsafe extern "C" fn(*mut LuaState, c_int) -> *mut LuaState,
76    pub lua_touserdata: extern "C" fn(*mut LuaState, c_int) -> *mut u8,
77
78    pub lua_geti: unsafe extern "C" fn(*mut LuaState, c_int, c_longlong) -> c_int,
79    pub lua_rawgeti: unsafe extern "C" fn(*mut LuaState, c_int, c_longlong) -> c_int,
80    pub lua_gettable: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
81    pub lua_rawget: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
82    pub lua_getfield: unsafe extern "C" fn(*mut LuaState, c_int, *const c_char) -> c_int,
83    pub lua_rawgetp: unsafe extern "C" fn(*mut LuaState, c_int, *const c_void) -> c_int,
84    pub lua_next: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
85    pub lua_getiuservalue: unsafe extern "C" fn(*mut LuaState, c_int, c_int) -> c_int,
86
87    pub lua_getglobal: unsafe extern "C" fn(*mut LuaState, *const c_char) -> c_int,
88    pub lua_setglobal: unsafe extern "C" fn(*mut LuaState, *const c_char),
89
90    pub lua_gettop: unsafe extern "C" fn(*mut LuaState) -> c_int,
91    pub lua_settop: extern "C" fn(*mut LuaState, c_int),
92
93    pub lua_callk: unsafe extern "C" fn(*mut LuaState, c_int, c_int, isize, LuaContinuation),
94    pub lua_pcallk:
95        unsafe extern "C" fn(*mut LuaState, c_int, c_int, c_int, isize, LuaContinuation) -> c_int,
96    pub lua_error: extern "C" fn(*mut LuaState) -> c_int,
97    pub lua_warning: unsafe extern "C" fn(*mut LuaState, *const c_char, c_int),
98
99    pub lua_checkstack: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
100    pub lua_absindex: extern "C" fn(*mut LuaState, c_int) -> c_int,
101    pub lua_copy: unsafe extern "C" fn(*mut LuaState, c_int, c_int),
102    pub lua_rotate: unsafe extern "C" fn(*mut LuaState, c_int, c_int),
103
104    pub lua_len: unsafe extern "C" fn(*mut LuaState, c_int),
105    pub lua_rawlen: unsafe extern "C" fn(*mut LuaState, c_int) -> c_ulonglong,
106    pub lua_compare: unsafe extern "C" fn(*mut LuaState, c_int, c_int, c_int) -> c_int,
107    pub lua_rawequal: unsafe extern "C" fn(*mut LuaState, c_int, c_int) -> c_int,
108
109    pub lua_arith: unsafe extern "C" fn(*mut LuaState, c_int),
110    pub lua_concat: unsafe extern "C" fn(*mut LuaState, c_int),
111
112    pub lua_load: unsafe extern "C" fn(
113        *mut LuaState,
114        LuaReader,
115        *mut c_void,
116        *const c_char,
117        *const c_char,
118    ) -> c_int,
119    pub lua_dump: unsafe extern "C" fn(*mut LuaState, LuaWriter, *mut c_void, c_int) -> c_int,
120
121    pub lua_toclose: unsafe extern "C" fn(*mut LuaState, c_int),
122    pub lua_closeslot: unsafe extern "C" fn(*mut LuaState, c_int),
123
124    pub lua_stringtonumber: unsafe extern "C" fn(*mut LuaState, *const c_char) -> usize,
125    pub lua_getallocf: unsafe extern "C" fn(*mut LuaState, *mut *mut c_void) -> LuaAlloc,
126    pub lua_gc: unsafe extern "C" fn(*mut LuaState, c_int, ...) -> c_int,
127    pub lua_version: unsafe extern "C" fn(*mut LuaState) -> c_double,
128
129    pub aux_checkany: unsafe extern "C" fn(*mut LuaState, c_int),
130    pub aux_checkinteger: unsafe extern "C" fn(*mut LuaState, c_int) -> c_longlong,
131    pub aux_checklstring: unsafe extern "C" fn(*mut LuaState, c_int, *mut usize) -> *const c_char,
132    pub aux_checknumber: unsafe extern "C" fn(*mut LuaState, c_int) -> c_double,
133    pub aux_checkoption:
134        unsafe extern "C" fn(*mut LuaState, c_int, *const c_char, *const *const c_char) -> c_int,
135    pub aux_checkudata: unsafe extern "C" fn(*mut LuaState, c_int, *const c_char) -> *mut u8,
136    pub aux_testudata: unsafe extern "C" fn(*mut LuaState, c_int, *const c_char) -> *mut c_void,
137    pub aux_checktype: unsafe extern "C" fn(*mut LuaState, c_int, c_int),
138    pub aux_typeerror: unsafe extern "C" fn(*mut LuaState, c_int, *const c_char) -> c_int,
139    pub aux_argerror: unsafe extern "C" fn(*mut LuaState, c_int, *const c_char) -> c_int,
140
141    pub aux_optinteger: unsafe extern "C" fn(*mut LuaState, c_int, c_longlong) -> c_longlong,
142    pub aux_optlstring:
143        unsafe extern "C" fn(*mut LuaState, c_int, *const c_char, *mut usize) -> *const c_char,
144    pub aux_optnumber: unsafe extern "C" fn(*mut LuaState, c_int, c_double) -> c_double,
145
146    pub aux_error: unsafe extern "C" fn(*mut LuaState, *const c_char, ...) -> c_int,
147    pub aux_checkstack: unsafe extern "C" fn(*mut LuaState, c_int, *const c_char),
148    pub aux_tolstring: unsafe extern "C" fn(*mut LuaState, c_int, *mut usize) -> *const c_char,
149
150    pub aux_len: unsafe extern "C" fn(*mut LuaState, c_int) -> c_longlong,
151    pub aux_getsubtable: unsafe extern "C" fn(*mut LuaState, c_int, *const c_char) -> c_int,
152    pub aux_ref: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
153    pub aux_unref: unsafe extern "C" fn(*mut LuaState, c_int, c_int),
154
155    pub aux_newmetatable: unsafe extern "C" fn(*mut LuaState, *const c_char) -> c_int,
156    pub aux_setmetatable: unsafe extern "C" fn(*mut LuaState, *const c_char),
157    pub aux_callmeta: unsafe extern "C" fn(*mut LuaState, c_int, *const c_char) -> c_int,
158    pub aux_getmetafield: unsafe extern "C" fn(*mut LuaState, c_int, *const c_char) -> c_int,
159
160    pub aux_loadstring: unsafe extern "C" fn(*mut LuaState, *const c_char) -> c_int,
161    pub aux_loadfilex: unsafe extern "C" fn(*mut LuaState, *const c_char, *const c_char) -> c_int,
162    pub aux_loadbufferx: unsafe extern "C" fn(
163        *mut LuaState,
164        *const c_char,
165        usize,
166        *const c_char,
167        *const c_char,
168    ) -> c_int,
169
170    pub aux_setfuncs: unsafe extern "C" fn(*mut LuaState, *const LuaReg, c_int),
171    pub aux_where: unsafe extern "C" fn(*mut LuaState, c_int),
172    pub aux_traceback: unsafe extern "C" fn(*mut LuaState, *mut LuaState, *const c_char, c_int),
173    pub aux_gsub: unsafe extern "C" fn(
174        *mut LuaState,
175        *const c_char,
176        *const c_char,
177        *const c_char,
178    ) -> *const c_char,
179    pub aux_execresult: unsafe extern "C" fn(*mut LuaState, c_int) -> c_int,
180    pub aux_fileresult: unsafe extern "C" fn(*mut LuaState, c_int, *const c_char) -> c_int,
181    pub module_configurations_path:
182        unsafe extern "C" fn(*const c_void, *const c_char, *mut c_char, u32) -> u32,
183}