Skip to main content

luaur_vm/records/
closure.rs

1#[allow(non_camel_case_types)]
2#[repr(C)]
3pub struct CClosure {
4    pub f: crate::type_aliases::lua_c_function::lua_CFunction,
5    pub cont: crate::type_aliases::lua_continuation::lua_Continuation,
6    pub debugname: *const core::ffi::c_char,
7    pub upvals: [crate::type_aliases::t_value::TValue; 1],
8}
9
10#[allow(non_camel_case_types)]
11#[repr(C)]
12pub struct LClosure {
13    pub p: *mut crate::records::proto::Proto,
14    pub uprefs: [crate::type_aliases::t_value::TValue; 1],
15}
16
17#[allow(non_snake_case)]
18#[repr(C)]
19pub union ClosureInner {
20    pub c: core::mem::ManuallyDrop<CClosure>,
21    pub l: core::mem::ManuallyDrop<LClosure>,
22}
23
24impl core::fmt::Debug for ClosureInner {
25    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26        f.debug_struct("ClosureInner").finish_non_exhaustive()
27    }
28}
29
30#[allow(non_camel_case_types)]
31#[repr(C)]
32#[derive(Debug)]
33pub struct Closure {
34    pub hdr: crate::records::g_cheader::GCheader,
35    pub isC: u8,
36    pub nupvalues: u8,
37    pub stacksize: u8,
38    pub preload: u8,
39    pub usage: u64,
40    pub gclist: *mut crate::records::gc_object::GcObject,
41    pub env: *mut crate::records::lua_table::LuaTable,
42    pub inner: ClosureInner,
43}
44
45#[allow(non_camel_case_types)]
46pub type closure = Closure;