luaur_vm/functions/
luaopen_table.rs1use crate::functions::foreach::foreach;
5use crate::functions::foreachi::foreachi;
6use crate::functions::getn::getn;
7use crate::functions::lua_l_register::lua_l_register;
8use crate::functions::lua_setfield::lua_setfield;
9use crate::functions::maxn::maxn;
10use crate::functions::tclear::tclear;
11use crate::functions::tclone::tclone;
12use crate::functions::tconcat::tconcat;
13use crate::functions::tcreate::tcreate;
14use crate::functions::tfind::tfind;
15use crate::functions::tfreeze::tfreeze;
16use crate::functions::tinsert::tinsert;
17use crate::functions::tisfrozen::tisfrozen;
18use crate::functions::tmove::tmove;
19use crate::functions::tpack::tpack;
20use crate::functions::tremove::tremove;
21use crate::functions::tsort::tsort;
22use crate::functions::tunpack::tunpack;
23use crate::macros::lua_pushcfunction::LUA_PUSHCFUNCTION;
24use crate::macros::lua_setglobal::lua_setglobal;
25use crate::records::lua_l_reg::LuaLReg;
26use crate::type_aliases::lua_state::lua_State;
27
28struct TabFuncs([LuaLReg; 18]);
29unsafe impl Sync for TabFuncs {}
30
31static TAB_FUNCS: TabFuncs = TabFuncs([
32 LuaLReg {
33 name: c"concat".as_ptr(),
34 func: Some(tconcat),
35 },
36 LuaLReg {
37 name: c"foreach".as_ptr(),
38 func: Some(foreach),
39 },
40 LuaLReg {
41 name: c"foreachi".as_ptr(),
42 func: Some(foreachi),
43 },
44 LuaLReg {
45 name: c"getn".as_ptr(),
46 func: Some(getn),
47 },
48 LuaLReg {
49 name: c"maxn".as_ptr(),
50 func: Some(maxn),
51 },
52 LuaLReg {
53 name: c"insert".as_ptr(),
54 func: Some(tinsert),
55 },
56 LuaLReg {
57 name: c"remove".as_ptr(),
58 func: Some(tremove),
59 },
60 LuaLReg {
61 name: c"sort".as_ptr(),
62 func: Some(tsort),
63 },
64 LuaLReg {
65 name: c"pack".as_ptr(),
66 func: Some(tpack),
67 },
68 LuaLReg {
69 name: c"unpack".as_ptr(),
70 func: Some(tunpack),
71 },
72 LuaLReg {
73 name: c"move".as_ptr(),
74 func: Some(tmove),
75 },
76 LuaLReg {
77 name: c"create".as_ptr(),
78 func: Some(tcreate),
79 },
80 LuaLReg {
81 name: c"find".as_ptr(),
82 func: Some(tfind),
83 },
84 LuaLReg {
85 name: c"clear".as_ptr(),
86 func: Some(tclear),
87 },
88 LuaLReg {
89 name: c"freeze".as_ptr(),
90 func: Some(tfreeze),
91 },
92 LuaLReg {
93 name: c"isfrozen".as_ptr(),
94 func: Some(tisfrozen),
95 },
96 LuaLReg {
97 name: c"clone".as_ptr(),
98 func: Some(tclone),
99 },
100 LuaLReg {
101 name: core::ptr::null(),
102 func: None,
103 },
104]);
105
106#[allow(non_snake_case)]
107pub unsafe fn luaopen_table(L: *mut lua_State) -> core::ffi::c_int {
108 lua_l_register(L, c"table".as_ptr(), TAB_FUNCS.0.as_ptr());
109
110 LUA_PUSHCFUNCTION(L, Some(tunpack), c"unpack".as_ptr());
111 lua_setglobal(L, c"unpack".as_ptr());
112
113 1
114}