Skip to main content

luaur_vm/functions/
lua_g_isnative.rs

1use crate::macros::lua_callinfo_native::LUA_CALLINFO_NATIVE;
2use crate::records::call_info::CallInfo;
3use crate::records::lua_state::lua_State;
4use crate::type_aliases::lua_state::lua_State as LuaState;
5
6#[no_mangle]
7pub unsafe fn luaG_isnative(L: *mut lua_State, level: core::ffi::c_int) -> core::ffi::c_int {
8    if (level as u32) >= ((unsafe { (*L).ci }).offset_from(unsafe { (*L).base_ci }) as u32) {
9        return 0;
10    }
11
12    let ci = unsafe { (*L).ci.offset(-level as isize) };
13    if (unsafe { (*ci).flags } & LUA_CALLINFO_NATIVE as u32) != 0 {
14        1
15    } else {
16        0
17    }
18}