use core::ffi::c_void;
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct VmLoaderData {
pub data: *mut c_void,
}
unsafe impl Send for VmLoaderData {}
unsafe impl Sync for VmLoaderData {}
impl VmLoaderData {
pub fn null() -> Self {
Self {
data: core::ptr::null_mut(),
}
}
pub fn is_null(&self) -> bool {
self.data.is_null()
}
}
#[cfg(test)]
mod tests {
use super::VmLoaderData;
use core::mem::{align_of, size_of};
#[test]
fn layout_vm_loader_data() {
assert_eq!(size_of::<VmLoaderData>(), 8);
assert_eq!(align_of::<VmLoaderData>(), 8);
}
#[test]
fn null_loader_data() {
let data = VmLoaderData::null();
assert!(data.is_null());
}
#[test]
fn vm_loader_data_repr_c() {
assert_eq!(size_of::<VmLoaderData>(), 8);
assert_eq!(align_of::<VmLoaderData>(), 8);
}
}