Skip to main content

luaur_vm/macros/
setuvalue.rs

1use crate::enums::lua_type::lua_Type;
2use crate::macros::cast_to::cast_to;
3use crate::macros::checkliveness::checkliveness;
4use crate::type_aliases::t_value::TValue;
5
6#[allow(non_snake_case)]
7#[macro_export]
8macro_rules! setuvalue {
9    ($L:expr, $obj:expr, $x:expr) => {{
10        let i_o = $obj as *mut $crate::type_aliases::t_value::TValue;
11        unsafe {
12            (*i_o).value.gc =
13                $crate::macros::cast_to::cast_to!($crate::type_aliases::gc_object::GCObject, $x);
14            (*i_o).tt = $crate::enums::lua_type::lua_Type::LUA_TUSERDATA as core::ffi::c_int;
15            $crate::macros::checkliveness::checkliveness!((*$L).global, i_o);
16        }
17    }};
18}
19
20pub use setuvalue;