Skip to main content

luaur_vm/functions/
lua_g_hasnative.rs

1use crate::functions::getluaproto::get_lua_proto;
2use crate::records::call_info::CallInfo;
3use crate::records::lua_state::lua_State;
4use crate::type_aliases::lua_state::lua_State as LuaState;
5use crate::type_aliases::proto::Proto;
6
7#[no_mangle]
8pub unsafe fn lua_g_hasnative(L: *mut lua_State, level: core::ffi::c_int) -> core::ffi::c_int {
9    if (level as u32) >= ((*L).ci).offset_from((*L).base_ci) as u32 {
10        return 0;
11    }
12
13    let ci: *mut CallInfo = (*L).ci.offset(-(level as isize));
14    let proto: *mut Proto = get_lua_proto(ci);
15    if proto.is_null() {
16        return 0;
17    }
18
19    ((*proto).execdata).is_null() as core::ffi::c_int ^ 1
20}