in common/rusty_leveldb_sgx/src/block.rs [213:247]
fn prev(&mut self) -> bool {
// as in the original implementation -- seek to last restart point, then look for key
let orig_offset = self.current_entry_offset;
// At the beginning, can't go further back
if orig_offset == 0 {
self.reset();
return false;
}
while self.get_restart_point(self.current_restart_ix) >= orig_offset {
// todo: double check this
if self.current_restart_ix == 0 {
self.offset = self.restarts_off;
self.current_restart_ix = self.number_restarts();
break;
}
self.current_restart_ix -= 1;
}
self.offset = self.get_restart_point(self.current_restart_ix);
assert!(self.offset < orig_offset);
let mut result;
// Stop if the next entry would be the original one (self.offset always points to the start
// of the next entry)
loop {
result = self.advance();
if self.offset >= orig_offset {
break;
}
}
result
}