luaur_vm/functions/
lua_g_hasnative.rs1use 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}