luaur_vm/functions/
lua_h_set.rs1use crate::functions::lua_h_get::lua_h_get;
2use crate::functions::lua_h_newkey::lua_h_newkey;
3use crate::macros::cast_to::cast_to;
4use crate::macros::invalidate_t_mcache::invalidateTMcache;
5use crate::records::lua_table::LuaTable;
6use crate::type_aliases::lua_state::lua_State;
7use crate::type_aliases::t_value::TValue;
8
9use crate::macros::lua_o_nilobject::luaO_nilobject;
10
11#[allow(non_snake_case)]
12pub unsafe fn luaH_set(L: *mut lua_State, t: *mut LuaTable, key: *const TValue) -> *mut TValue {
13 let p = lua_h_get(t, key);
14 invalidateTMcache(t);
15
16 if p != luaO_nilobject {
17 cast_to!(*mut TValue, p)
18 } else {
19 lua_h_newkey(L, t, key)
20 }
21}