use yog_sync::atomic::{AtomicPtr, AtomicU32};
#[repr(C)]
pub struct YogColumn {
pub seq: AtomicU32,
pub width: u32,
pub capacity: AtomicU32,
pub generation: AtomicU32,
pub data: AtomicPtr<u8>,
}
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct YogKeySlot {
pub key: u64,
pub row: u32,
pub _pad: u32,
}
pub const EMPTY_SLOT: u32 = u32::MAX;
pub const GONE_SLOT: u32 = u32::MAX - 1;
#[repr(C)]
pub struct YogKeySpace {
pub seq: AtomicU32,
pub rows: AtomicU32,
pub keys: *const YogColumn,
pub live: *const YogColumn,
pub index: *const YogColumn,
pub parent: *const YogKeySpace,
pub parent_keys: *const YogColumn,
}
unsafe impl Send for YogColumn {}
unsafe impl Sync for YogColumn {}
unsafe impl Send for YogKeySpace {}
unsafe impl Sync for YogKeySpace {}