///|
/// 返回 freelist 中的 trunk 与 leaf 页号,并校验计数与循环。
pub fn Database::freelist(self : Database) -> Array[Int] raise SqliteError {
self.freelist_observed((_, _, _) => ())
}
///|
fn Database::freelist_observed(
self : Database,
claim : (Int, PageKind, Int?) -> Unit raise SqliteError,
trace? : InspectionTrace = InspectionTrace::new(),
) -> Array[Int] raise SqliteError {
let cursor = self.freelist_cursor(claim, trace)
while cursor.next() is Some(number) {
cursor.supplied = Some(self.read_page(number))
}
cursor.result
}