Skip to main content

luaur_vm/functions/
lua_t_init.rs

1use crate::macros::lua_s_fix::luaS_fix;
2use crate::macros::lua_s_new::luaS_new;
3use crate::type_aliases::lua_state::lua_State;
4use crate::type_aliases::tms::TMS;
5
6#[allow(non_snake_case)]
7pub unsafe fn luaT_init(l: *mut lua_State) {
8    let typenames = [
9        c"nil".as_ptr(),
10        c"boolean".as_ptr(),
11        c"userdata".as_ptr(),
12        c"number".as_ptr(),
13        c"integer".as_ptr(),
14        c"vector".as_ptr(),
15        c"string".as_ptr(),
16        c"table".as_ptr(),
17        c"function".as_ptr(),
18        c"userdata".as_ptr(),
19        c"thread".as_ptr(),
20        c"buffer".as_ptr(),
21        c"class".as_ptr(),
22        c"object".as_ptr(),
23    ];
24
25    let eventnames = [
26        c"__index".as_ptr(),
27        c"__newindex".as_ptr(),
28        c"__mode".as_ptr(),
29        c"__namecall".as_ptr(),
30        c"__call".as_ptr(),
31        c"__iter".as_ptr(),
32        c"__len".as_ptr(),
33        c"__eq".as_ptr(),
34        c"__add".as_ptr(),
35        c"__sub".as_ptr(),
36        c"__mul".as_ptr(),
37        c"__div".as_ptr(),
38        c"__idiv".as_ptr(),
39        c"__mod".as_ptr(),
40        c"__pow".as_ptr(),
41        c"__unm".as_ptr(),
42        c"__lt".as_ptr(),
43        c"__le".as_ptr(),
44        c"__concat".as_ptr(),
45        c"__type".as_ptr(),
46        c"__metatable".as_ptr(),
47    ];
48
49    let mut i = 0;
50    while i < typenames.len() {
51        (*(*l).global).ttname[i] = luaS_new(l, typenames[i]);
52        luaS_fix!((*(*l).global).ttname[i]);
53        i += 1;
54    }
55
56    i = 0;
57    while i < TMS::TM_N as usize {
58        (*(*l).global).tmname[i] = luaS_new(l, eventnames[i]);
59        luaS_fix!((*(*l).global).tmname[i]);
60        i += 1;
61    }
62}
63
64#[allow(unused_imports)]
65pub use luaT_init as lua_t_init;