Skip to main content

luaur_require/functions/
clear_cache_entry.rs

1use core::ffi::c_char;
2
3use luaur_vm::functions::lua_l_findtable::luaL_findtable;
4use luaur_vm::functions::lua_pushnil::lua_pushnil;
5use luaur_vm::functions::lua_setfield::lua_setfield;
6use luaur_vm::functions::lua_tolstring::lua_tolstring;
7use luaur_vm::macros::lua_l_checkstring::luaL_checkstring;
8use luaur_vm::macros::lua_pop::lua_pop;
9use luaur_vm::macros::lua_registryindex::LUA_REGISTRYINDEX;
10use luaur_vm::records::lua_state::lua_State;
11
12// C++ RequireImpl.cpp: `static const char* requiredCacheTableKey = "_MODULES";`
13const required_cache_table_key: *const c_char = c"_MODULES".as_ptr();
14
15pub fn clear_cache_entry(l: *mut lua_State) -> i32 {
16    unsafe {
17        let cache_key = lua_tolstring(l, 1, core::ptr::null_mut());
18
19        luaL_findtable(l, LUA_REGISTRYINDEX, required_cache_table_key, 1);
20
21        lua_pushnil(l);
22
23        lua_setfield(l, -2, cache_key);
24
25        lua_pop(l, 1);
26    }
27    0
28}