Skip to main content

luaur_repl_cli/functions/
counters_init.rs

1use alloc::vec::Vec;
2
3use luaur_vm::functions::lua_mainthread::lua_mainthread;
4use luaur_vm::type_aliases::lua_state::lua_State;
5
6use crate::records::module_counters::ModuleCounters;
7
8// Faithful port of Counters.cpp's file-static
9//     struct Counters {
10//         lua_State* L = nullptr;
11//         std::vector<int> moduleRefs;
12//         std::vector<ModuleCounters> moduleCounters;
13//     } gCounters;
14pub(crate) struct CountersState {
15    pub(crate) l: *mut lua_State,
16    pub(crate) module_refs: Vec<i32>,
17    pub(crate) module_counters: Vec<ModuleCounters>,
18}
19
20pub(crate) static mut G_COUNTERS: CountersState = CountersState {
21    l: core::ptr::null_mut(),
22    module_refs: Vec::new(),
23    module_counters: Vec::new(),
24};
25
26pub fn counters_init(l: *mut core::ffi::c_void) {
27    unsafe {
28        (*core::ptr::addr_of_mut!(G_COUNTERS)).l = lua_mainthread(l as *mut lua_State);
29    }
30}