use core::ffi::c_void;
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct HostContractInstance {
pub data: *mut c_void,
}
unsafe impl Send for HostContractInstance {}
unsafe impl Sync for HostContractInstance {}
impl HostContractInstance {
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::HostContractInstance;
use core::mem::{align_of, size_of};
#[test]
fn layout_host_contract_instance() {
assert_eq!(size_of::<HostContractInstance>(), 8);
assert_eq!(align_of::<HostContractInstance>(), 8);
}
#[test]
fn null_instance() {
let instance = HostContractInstance::null();
assert!(instance.is_null());
}
#[test]
fn host_contract_instance_repr_c() {
assert_eq!(size_of::<HostContractInstance>(), 8);
assert_eq!(align_of::<HostContractInstance>(), 8);
}
}