add last method to queue
This commit is contained in:
parent
e8f243e854
commit
fe9b7df81f
@ -137,6 +137,28 @@ impl<T: FromBytes + FromZeroes + AsBytes + Unaligned + Clone + Copy> FilePointer
|
|||||||
Some(queue)
|
Some(queue)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn is_empty(self, reader: &impl ReaderTrait) -> bool {
|
||||||
|
self.length(reader) == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn last(self, reader: &impl ReaderTrait) -> Option<T> {
|
||||||
|
let this = reader.read(self);
|
||||||
|
|
||||||
|
if this.length.get() == 0 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut next = this.head;
|
||||||
|
|
||||||
|
for _ in 1..this.length.get() {
|
||||||
|
// println!("free [{i}] {ptr:?}");
|
||||||
|
|
||||||
|
next = *reader.read(field_ptr!(next, QueueElement<T>, next));
|
||||||
|
}
|
||||||
|
|
||||||
|
Some(*reader.read(field_ptr!(next, QueueElement<T>, data)))
|
||||||
|
}
|
||||||
|
|
||||||
pub fn length(self, reader: &impl ReaderTrait) -> u64 {
|
pub fn length(self, reader: &impl ReaderTrait) -> u64 {
|
||||||
reader.read(field_ptr!(self, Queue<T>, length)).get()
|
reader.read(field_ptr!(self, Queue<T>, length)).get()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user