Skip to main content

luaur_vm/macros/
setnodekey.rs

1use crate::macros::checkliveness::checkliveness;
2use crate::records::lua_node::LuaNode;
3use crate::records::lua_t_value::lua_TValue;
4use crate::type_aliases::lua_state::lua_State;
5use crate::type_aliases::t_value::TValue;
6
7#[allow(non_snake_case)]
8#[macro_export]
9macro_rules! setnodekey {
10    ($L:expr, $node:expr, $obj:expr) => {
11        unsafe {
12            let n_: *mut LuaNode = $node as *mut LuaNode;
13            let i_o: *const lua_TValue = $obj as *const lua_TValue;
14
15            (*n_).key.value = (*i_o).value;
16            core::ptr::copy_nonoverlapping((*i_o).extra.as_ptr(), (*n_).key.extra.as_mut_ptr(), 1);
17            (*n_).key.set_tt((*i_o).tt);
18            checkliveness!((*$L).global, i_o as *mut TValue);
19        }
20    };
21}
22
23pub use setnodekey;