luaur_vm/records/
load_context.rs1use crate::records::proto::Proto;
2use crate::records::t_string::TString;
3use crate::records::temp_buffer::TempBuffer;
4use crate::type_aliases::lua_state::lua_State;
5
6#[allow(non_camel_case_types)]
7#[repr(C)]
8#[derive(Debug)]
9pub struct LoadContext {
10 pub(crate) strings: TempBuffer<*mut TString>,
11 pub(crate) protos: TempBuffer<*mut Proto>,
12 pub(crate) chunkname: *const core::ffi::c_char,
13 pub(crate) data: *const core::ffi::c_char,
14 pub(crate) size: usize,
15 pub(crate) env: i32,
16 pub(crate) result: i32,
17}
18
19impl LoadContext {
20 #[allow(non_snake_case)]
21 pub(crate) unsafe extern "C" fn run(L: lua_State, ud: *mut core::ffi::c_void) {
22 let ctx = &mut *(ud as *mut LoadContext);
23
24 ctx.result = loadsafe(
25 L,
26 &mut ctx.strings,
27 &mut ctx.protos,
28 ctx.chunkname,
29 ctx.data,
30 ctx.size,
31 ctx.env,
32 );
33 }
34}
35
36extern "C" {
37 fn loadsafe(
38 L: lua_State,
39 strings: *mut TempBuffer<*mut TString>,
40 protos: *mut TempBuffer<*mut Proto>,
41 chunkname: *const core::ffi::c_char,
42 data: *const core::ffi::c_char,
43 size: usize,
44 env: i32,
45 ) -> i32;
46}