use crate::functions::lua_h_getstr::lua_h_getstr;
use crate::macros::cast_byte::cast_byte;
use crate::macros::ttisnil::ttisnil;
use crate::type_aliases::lua_table::LuaTable;
use crate::type_aliases::t_string::TString;
use crate::type_aliases::t_value::TValue;
use crate::type_aliases::tms::TMS;
use luaur_common::macros::luau_assert::LUAU_ASSERT;
#[allow(non_snake_case)]
pub unsafe fn lua_t_gettm(events: *mut LuaTable, event: TMS, ename: *mut TString) -> *const TValue {
let tm = crate::functions::lua_h_getstr::luaH_getstr(events, ename);
LUAU_ASSERT!((event as u32) <= (TMS::TM_EQ as u32));
if ttisnil!(tm) {
(*events).tmcache |= cast_byte!(1u32 << (event as u32));
core::ptr::null()
} else {
tm
}
}
#[export_name = "luaT_gettm"]
pub unsafe extern "C" fn lua_t_gettm_export(
events: *mut core::ffi::c_void,
event: TMS,
ename: *mut core::ffi::c_void,
) -> *const TValue {
lua_t_gettm(events as *mut LuaTable, event, ename as *mut TString)
}