use super::cursor::Cursor;
pub(crate) fn object_ref(bytes: &[u8], position: &mut usize, extended: bool) -> Option<u32> {
let mut cursor = Cursor::new_at(bytes, *position);
let value = cursor.object_ref(extended)?;
*position = cursor.position();
Some(value)
}
pub(crate) fn compact_uint(bytes: &[u8], position: &mut usize) -> Option<u32> {
let mut cursor = Cursor::new_at(bytes, *position);
let value = cursor.compact_uint()?;
*position = cursor.position();
Some(value)
}
pub(crate) fn counted_refs(payload: &[u8], extended: bool) -> Option<(Vec<u32>, usize)> {
let count = usize::from(payload.first()?.checked_sub(0x80)?);
let mut position = 1;
let mut references = Vec::with_capacity(count);
for _ in 0..count {
references.push(object_ref(payload, &mut position, extended)?);
}
Some((references, position))
}