luaur_vm/records/
closure.rs1#[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;