luaur-vm 0.1.1

The Luau register virtual machine and standard library (Rust).
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::functions::lua_getmetatable::lua_getmetatable;
use crate::functions::lua_l_checkany::lua_l_checkany;
use crate::functions::lua_l_getmetafield::lua_l_getmetafield;
use crate::functions::lua_pushnil::lua_pushnil;
use crate::type_aliases::lua_state::lua_State;

#[no_mangle]
pub unsafe fn lua_b_getmetatable(L: *mut lua_State) -> core::ffi::c_int {
    lua_l_checkany(L, 1);

    if lua_getmetatable(L, 1) == 0 {
        lua_pushnil(L);
        return 1; // no metatable
    }

    lua_l_getmetafield(L, 1, c"__metatable".as_ptr());
    1 // returns either __metatable field (if present) or metatable
}