Skip to main content

luaur_vm/functions/
lua_b_rawlen.rs

1use core::ffi::c_int;
2
3use crate::enums::lua_type::lua_Type;
4use crate::functions::lua_objlen::lua_objlen;
5use crate::functions::lua_pushinteger::lua_pushinteger;
6use crate::functions::lua_type::lua_type;
7use crate::macros::lua_l_argcheck::luaL_argcheck;
8use crate::type_aliases::lua_state::lua_State;
9
10#[no_mangle]
11pub unsafe fn lua_b_rawlen(L: *mut lua_State) -> c_int {
12    let tt = lua_type(L, 1);
13
14    luaL_argcheck!(
15        L,
16        tt == lua_Type::LUA_TTABLE as c_int || tt == lua_Type::LUA_TSTRING as c_int,
17        1,
18        "table or string expected"
19    );
20
21    let len = lua_objlen(L, 1);
22    lua_pushinteger(L, len);
23
24    1
25}