Skip to main content

luaur_analysis/methods/
weird_iter_advance.rs

1use 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}