Skip to main content

luaur_vm/functions/
dumpobj.rs

1use crate::enums::lua_type::lua_Type;
2use crate::functions::dumpbuffer::dumpbuffer;
3use crate::functions::dumpclass::dumpclass;
4use crate::functions::dumpclosure::dumpclosure;
5use crate::functions::dumpobject::dumpobject;
6use crate::functions::dumpproto::dumpproto;
7use crate::functions::dumpstring::dumpstring;
8use crate::functions::dumptable::dumptable;
9use crate::functions::dumpthread::dumpthread;
10use crate::functions::dumpudata::dumpudata;
11use crate::functions::dumpupval::dumpupval;
12use crate::macros::gco_2_buf::gco2buf;
13use crate::macros::gco_2_cl::gco2cl;
14use crate::macros::gco_2_class::gco2class;
15use crate::macros::gco_2_h::gco2h;
16use crate::macros::gco_2_object::gco2object;
17use crate::macros::gco_2_p::gco2p;
18use crate::macros::gco_2_th::gco2th;
19use crate::macros::gco_2_ts::gco2ts;
20use crate::macros::gco_2_u::gco2u;
21use crate::macros::gco_2_uv::gco2uv;
22use crate::records::gc_object::GCObject;
23use luaur_common::macros::luau_assert::LUAU_ASSERT;
24
25#[allow(non_snake_case)]
26pub(crate) unsafe fn dumpobj(f: *mut core::ffi::c_void, o: *mut GCObject) {
27    match (*o).gch.tt as i32 {
28        t if t == lua_Type::LUA_TSTRING as i32 => {
29            dumpstring(f, gco2ts!(o) as *const _ as *mut _);
30        }
31        t if t == lua_Type::LUA_TTABLE as i32 => {
32            dumptable(f, gco2h!(o) as *const _ as *mut _);
33        }
34        t if t == lua_Type::LUA_TFUNCTION as i32 => {
35            dumpclosure(f, gco2cl!(o) as *const _ as *mut _);
36        }
37        t if t == lua_Type::LUA_TUSERDATA as i32 => {
38            dumpudata(f, gco2u!(o) as *const _ as *mut _);
39        }
40        t if t == lua_Type::LUA_TTHREAD as i32 => {
41            dumpthread(f, gco2th!(o) as *const _ as *mut _);
42        }
43        t if t == lua_Type::LUA_TBUFFER as i32 => {
44            dumpbuffer(f, gco2buf!(o) as *const _ as *mut _);
45        }
46        t if t == lua_Type::LUA_TCLASS as i32 => {
47            dumpclass(f, gco2class!(o) as *const _ as *mut _);
48        }
49        t if t == lua_Type::LUA_TOBJECT as i32 => {
50            dumpobject(f, gco2object!(o) as *const _ as *mut _);
51        }
52        t if t == lua_Type::LUA_TPROTO as i32 => {
53            dumpproto(f, gco2p!(o) as *const _ as *mut _);
54        }
55        t if t == lua_Type::LUA_TUPVAL as i32 => {
56            dumpupval(f, gco2uv!(o) as *const _ as *mut _);
57        }
58        _ => {
59            LUAU_ASSERT!(false);
60        }
61    }
62}