26KI6CQSTGLQ4MGPLFQYPLDMH56M6VY6KQB5ONMQXUNV3ZX665TQC
DASFQGORX56YK5E4Y7GGYZSQQQMUXYTZZ4A6IVWSTI3QGRUORLPAC
LSQ6V7M66TEGLJ7QBLRVDX4E7UKJTDQTEXZOS3KGPGFKVXNLPKBQC
XEU2QVLCHPYOOD4TQIPEEVYOVSFMKFPLJYWEJYXYJAZ7S54KWDZAC
OP6SVMOD2GTQ7VNJ4E5KYFG4MIYA7HBMXJTADALMZH4PY7OQRMZQC
HN6Z5DU4WYMAIOOSNVHLIIMNF6Q53TNJ7YC27SLKWNXVYCTACQKQC
PXF3R6SVXJXN2NMLMWNY5OFV5QYVE2VZTLGIZDZVK5ZVLFTVSSWQC
ESUI5EUZUBDPHNN3APU33IFORYPYR6J3WEMEZG57FKF3EH66ZBHAC
73Z2UB3JGRLFNFORE7D64O4IHIFSZASD4G4FLJ4FJLHANT75MGIAC
KM3JAFGPFV7MP7M2LJIYRVAUTU646B3IRXADTRZKOU2RF7LUB62QC
TSMS6W4DOKQNUQ4PEMTLOIODR33VFPN6MMNS73ZPSU4BOQVRGPNAC
LROAI3NBBSCU4T2YA6EHJYKKKL75AU5A7C7WIRCGIQ56S6HPLRXQC
OFINGD26ZWCRDVVDI2ZIBLMHXKEMJA6MRNLANJYUHQPIJLPA7J2AC
if P::is_init(¤t.cursor) {
let left = P::right_child(current.page.as_page(), ¤t.cursor);
P::move_next(&mut current.cursor);
// Visit the left child of the page (if any), i.e. push.
if left != 0 {
let page = txn.load_page(left)?;
self.push(PageCursor {
cursor: P::cursor_before(&page),
page,
})
if P::is_empty(¤t.cursor) {
if self.len > 1 {
if self.first_rc_len == self.len {
self.first_rc_len = N_CURSORS
}
self.len -= 1
} else {
return Ok(None);
} else if let Some((k, v, r)) = P::current(txn, current.page.as_page(), ¤t.cursor)
{
} else {
let (cur_entry, r) = if let Some((k, v, r)) = P::current(txn, current.page.as_page(), ¤t.cursor) {
(Some((k, v)), r)
} else {
(None, P::right_child(current.page.as_page(), ¤t.cursor))
};
/// Move the cursor to the previous entry, and return the current
/// entry. If the cursor is initially after all the entries, this
/// moves it back by two steps.
/// Move the cursor to the previous entry, and return the entry
/// that was current before the move. If the cursor is initially
/// after all the entries, this moves it back by two steps.
if P::is_empty(¤t.cursor) {
if P::is_init(¤t.cursor) {
if self.len > 1 {
if self.first_rc_len == self.len {
self.first_rc_len = N_CURSORS
}
self.len -= 1;
let current = unsafe { &mut *self.stack[self.len - 1].as_mut_ptr() };
P::move_prev(&mut current.cursor);
} else {
return Ok(None);
}
} else {
let cur_entry = P::current(txn, current.page.as_page(), ¤t.cursor);
P::move_prev(&mut current.cursor);
}
} else if let Some((k, v, _)) = P::current(txn, current.page.as_page(), ¤t.cursor)
{
let l = P::left_child(current.page.as_page(), ¤t.cursor);
if l > 0 {
let page = txn.load_page(l)?;
self.push(PageCursor {
cursor: P::cursor_after(&page),
page,
})
} else {
} else if self.len > 1 {
self.len -= 1;
let current = unsafe { &mut *self.stack[self.len - 1].as_mut_ptr() };
P::move_prev(&mut current.cursor);
} else {
return Ok(None);