blob: fc821ca16bd6b548bdcb85449735fde53ee3e003 [file] [log] [blame] [edit]
/// Helper function for reading big endian u16 values from a ptr unchecked.
///
/// # Safety
///
/// It is in the responsibility of the caller to ensure there are at least 2
/// bytes accessable via the ptr. If this is not the case undefined behavior
/// will be triggered.
#[inline]
pub(crate) unsafe fn get_unchecked_be_u16(ptr: *const u8) -> u16 {
u16::from_be_bytes([*ptr, *ptr.add(1)])
}
/// Helper function for reading big endian u32 values from a ptr unchecked.
///
/// # Safety
///
/// It is in the responsibility of the caller to ensure there are at least 4
/// bytes accessable via the ptr. If this is not the case undefined behavior
/// will be triggered.
#[inline]
pub(crate) unsafe fn get_unchecked_be_u32(ptr: *const u8) -> u32 {
u32::from_be_bytes([*ptr, *ptr.add(1), *ptr.add(2), *ptr.add(3)])
}
/// Helper function for reading a 4 byte fixed-size array.
///
/// # Safety
///
/// It is in the responsibility of the caller to ensure there are at least 4
/// bytes accessable via the ptr. If this is not the case undefined behavior
/// will be triggered.
#[inline]
pub(crate) unsafe fn get_unchecked_4_byte_array(ptr: *const u8) -> [u8; 4] {
[*ptr, *ptr.add(1), *ptr.add(2), *ptr.add(3)]
}
/// Helper function for reading a 6 byte fixed-size array.
///
/// # Safety
///
/// It is in the responsibility of the caller to ensure there are at least 6
/// bytes accessable via the ptr. If this is not the case undefined behavior
/// will be triggered.
#[inline]
pub(crate) unsafe fn get_unchecked_6_byte_array(ptr: *const u8) -> [u8; 6] {
[
*ptr,
*ptr.add(1),
*ptr.add(2),
*ptr.add(3),
*ptr.add(4),
*ptr.add(5),
]
}
/// Helper function for reading a 8 byte fixed-size array.
///
/// # Safety
///
/// It is in the responsibility of the caller to ensure there are at least 6
/// bytes accessable via the ptr. If this is not the case undefined behavior
/// will be triggered.
#[inline]
pub(crate) unsafe fn get_unchecked_8_byte_array(ptr: *const u8) -> [u8; 8] {
[
*ptr,
*ptr.add(1),
*ptr.add(2),
*ptr.add(3),
*ptr.add(4),
*ptr.add(5),
*ptr.add(6),
*ptr.add(7),
]
}
/// Helper function for reading a 16 byte fixed-size array.
///
/// # Safety
///
/// It is in the responsibility of the caller to ensure there are at least 16
/// bytes accessable via the ptr. If this is not the case undefined behavior
/// will be triggered.
#[inline]
pub(crate) unsafe fn get_unchecked_16_byte_array(ptr: *const u8) -> [u8; 16] {
[
*ptr,
*ptr.add(1),
*ptr.add(2),
*ptr.add(3),
*ptr.add(4),
*ptr.add(5),
*ptr.add(6),
*ptr.add(7),
*ptr.add(8),
*ptr.add(9),
*ptr.add(10),
*ptr.add(11),
*ptr.add(12),
*ptr.add(13),
*ptr.add(14),
*ptr.add(15),
]
}