luaur_vm/functions/
validateclass.rs1use crate::functions::validateobjref::validateobjref;
2use crate::functions::validateref::validateref;
3use crate::macros::obj_2_gco::obj2gco;
4use crate::records::gc_object::GCObject;
5use crate::records::global_state::global_State;
6use crate::records::luau_class::LuauClass;
7
8#[allow(non_snake_case)]
9pub(crate) unsafe fn validateclass(g: *mut global_State, lco: *mut LuauClass) {
10 let obj = obj2gco!(lco as *mut LuauClass);
11 validateobjref(
12 g,
13 obj,
14 obj2gco!((*lco).name as *mut crate::records::t_string::TString),
15 );
16 validateobjref(
17 g,
18 obj,
19 obj2gco!((*lco).memberstooffset as *mut crate::records::lua_table::LuaTable),
20 );
21
22 for i in 0..(*lco).numberofallmembers {
23 validateobjref(
24 g,
25 obj,
26 obj2gco!(
27 *(*lco).offsettomember.add(i as usize) as *mut crate::records::t_string::TString
28 ),
29 );
30 if i >= (*lco).numberofinstancemembers {
31 validateref(
32 g,
33 obj,
34 (*lco)
35 .staticmembers
36 .add((i - (*lco).numberofinstancemembers) as usize),
37 );
38 }
39 }
40
41 validateobjref(
42 g,
43 obj,
44 obj2gco!((*lco).metatable as *mut crate::records::lua_table::LuaTable),
45 );
46 if !(*lco).instancemetatable.is_null() {
47 validateobjref(
48 g,
49 obj,
50 obj2gco!((*lco).instancemetatable as *mut crate::records::lua_table::LuaTable),
51 );
52 }
53}