use super::pod::{FixedLayout, Pod};
use hopper_runtime::error::ProgramError;
#[inline(always)]
pub fn overlay<T: Pod + FixedLayout>(data: &[u8]) -> Result<&T, ProgramError> {
super::pod::pod_from_bytes(data)
}
#[inline(always)]
pub fn overlay_mut<T: Pod + FixedLayout>(data: &mut [u8]) -> Result<&mut T, ProgramError> {
super::pod::pod_from_bytes_mut(data)
}
#[inline(always)]
#[allow(dead_code)]
pub fn overlay_at<T: Pod + FixedLayout>(data: &[u8], offset: usize) -> Result<&T, ProgramError> {
if offset > data.len() {
return Err(ProgramError::InvalidAccountData);
}
super::pod::pod_from_bytes(&data[offset..])
}
#[inline(always)]
#[allow(dead_code)]
pub fn overlay_at_mut<T: Pod + FixedLayout>(
data: &mut [u8],
offset: usize,
) -> Result<&mut T, ProgramError> {
if offset > data.len() {
return Err(ProgramError::InvalidAccountData);
}
super::pod::pod_from_bytes_mut(&mut data[offset..])
}