luaur_vm/functions/
lua_l_checkboolean.rs1use crate::enums::lua_type::lua_Type;
2use crate::functions::lua_toboolean::lua_toboolean;
3use crate::functions::tag_error::tag_error;
4use crate::macros::lua_isboolean::lua_isboolean;
5use crate::type_aliases::lua_state::lua_State;
6
7#[no_mangle]
8pub unsafe fn lua_l_checkboolean(L: *mut lua_State, narg: core::ffi::c_int) -> core::ffi::c_int {
9 let is_bool = {
18 let func: unsafe fn(*mut lua_State, core::ffi::c_int) -> core::ffi::c_int =
19 core::mem::transmute(crate::functions::lua_type::lua_type as *const core::ffi::c_void);
20 func(L, narg) == (lua_Type::LUA_TBOOLEAN as core::ffi::c_int)
21 };
22
23 if !is_bool {
24 tag_error(L, narg, lua_Type::LUA_TBOOLEAN as core::ffi::c_int);
25 }
26
27 let func_toboolean: unsafe fn(*mut lua_State, core::ffi::c_int) -> core::ffi::c_int =
31 core::mem::transmute(lua_toboolean as *const core::ffi::c_void);
32
33 func_toboolean(L, narg)
34}