Skip to main content

luaur_vm/functions/
dumpstring.rs

1use crate::functions::dumpstringdata::dumpstringdata;
2use crate::macros::sizestring::sizestring;
3use crate::type_aliases::t_string::TString;
4
5#[allow(non_snake_case)]
6pub(crate) unsafe fn dumpstring(f: *mut core::ffi::c_void, ts: *mut TString) {
7    let ts = &*ts;
8    let fmt = "{\"type\":\"string\",\"cat\":%d,\"size\":%d,\"data\":\"";
9
10    extern "C" {
11        fn fprintf(
12            stream: *mut core::ffi::c_void,
13            format: *const core::ffi::c_char,
14            ...
15        ) -> core::ffi::c_int;
16    }
17
18    fprintf(
19        f,
20        fmt.as_ptr() as *const core::ffi::c_char,
21        ts.hdr.memcat as core::ffi::c_int,
22        sizestring(ts.len as usize) as core::ffi::c_int,
23    );
24
25    dumpstringdata(f, ts.data.as_ptr(), ts.len as usize);
26
27    fprintf(f, b"\"}\"".as_ptr() as *const core::ffi::c_char);
28}