use super::*;
#[derive(Default, Debug, Copy, Clone)]
pub struct CanisterStableMemory {}
impl StableMemory for CanisterStableMemory {
fn stable_size(&self) -> u64 {
unsafe { ic0::stable64_size() as u64 }
}
fn stable_grow(&self, new_pages: u64) -> Result<u64, StableMemoryError> {
unsafe {
match ic0::stable64_grow(new_pages as i64) {
-1 => Err(StableMemoryError::OutOfMemory),
x => Ok(x as u64),
}
}
}
fn stable_write(&self, offset: u64, buf: &[u8]) {
unsafe {
ic0::stable64_write(offset as i64, buf.as_ptr() as i64, buf.len() as i64);
}
}
fn stable_read(&self, offset: u64, buf: &mut [u8]) {
unsafe {
ic0::stable64_read(buf.as_ptr() as i64, offset as i64, buf.len() as i64);
}
}
}