use std::mem;
use super::frame_ffi;
use super::frame_ffi::CFrameItem;
use crate::ffi::UWORD;
impl CFrameItem {
unsafe fn new_unchecked() -> Self {
Self {
edge: std::ptr::null(),
len: 0,
}
}
pub unsafe fn new_read(n: usize, from: *const UWORD) -> Self {
let mut frame = CFrameItem::new_unchecked();
frame_ffi::c_initReadFrame(&mut frame, n, from);
frame
}
pub unsafe fn new_write(n: usize, from: *mut UWORD) -> Self {
let mut frame = CFrameItem::new_unchecked();
frame_ffi::c_initWriteFrame(&mut frame, n, from);
frame
}
}
pub fn uword_width(n_bits: usize) -> usize {
n_bits.div_ceil(8 * mem::size_of::<UWORD>())
}
pub fn byte_width(n_bits: usize) -> usize {
uword_width(n_bits) * mem::size_of::<UWORD>()
}