use core::ffi::CStr;
mod generated {
#![allow(non_camel_case_types, non_upper_case_globals, dead_code)]
include!("generated.rs");
}
pub use generated::ComponentCoreRef;
#[doc(hidden)]
pub use generated::ComponentCoreVtable;
impl ComponentCoreRef {
pub fn request_reset(&self, reason: u32) {
let Some(f) = (unsafe { (*self.vtable).request_reset }) else {
return;
};
unsafe { f(*self, reason) };
}
pub fn request_exit(&self, code: i32, message: Option<&'static CStr>) {
let Some(f) = (unsafe { (*self.vtable).request_exit }) else {
return;
};
let message = message.map_or(core::ptr::null(), |m| m.as_ptr());
unsafe { f(*self, code, message) };
}
pub fn save_checkpoint(&self, path: &CStr) {
let Some(f) = (unsafe { (*self.vtable).save_checkpoint }) else {
return;
};
unsafe { f(*self, path.as_ptr()) };
}
}