luaur_analysis/methods/
weird_iter_advance.rs1use crate::records::type_pack::TypePack;
2use crate::records::weird_iter::WeirdIter;
3
4impl WeirdIter {
5 pub fn weird_iter_advance(&mut self) -> bool {
6 if self.pack.is_null() {
7 return self.weird_iter_good();
8 }
9 if self.index < unsafe { (*self.pack).head.len() } {
10 self.index += 1;
11 }
12 if self.growing || self.index < unsafe { (*self.pack).head.len() } {
13 return self.weird_iter_good();
14 }
15 if let Some(tail) = unsafe { (*self.pack).tail } {
16 self.pack_id = unsafe { (*self.log).follow_type_pack_id(tail) };
17 self.pack = unsafe { (*self.log).txn_log_get_mutable::<TypePack, _>(self.pack_id) };
18 self.index = 0;
19 }
20 self.weird_iter_good()
21 }
22}