Skip to main content

luaur_vm/functions/
validateclass.rs

1use 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}