def page_header
@page_header ||= cursor(pos_index_header).name("index") do |c|
index = {
:n_dir_slots => c.name("n_dir_slots") { c.get_uint16 },
:heap_top => c.name("heap_top") { c.get_uint16 },
:n_heap_format => c.name("n_heap_format") { c.get_uint16 },
:garbage_offset => c.name("garbage_offset") { c.get_uint16 },
:garbage_size => c.name("garbage_size") { c.get_uint16 },
:last_insert_offset => c.name("last_insert_offset") { c.get_uint16 },
:direction => c.name("direction") { PAGE_DIRECTION[c.get_uint16] },
:n_direction => c.name("n_direction") { c.get_uint16 },
:n_recs => c.name("n_recs") { c.get_uint16 },
:max_trx_id => c.name("max_trx_id") { c.get_uint64 },
:level => c.name("level") { c.get_uint16 },
:index_id => c.name("index_id") { c.get_uint64 },
}
index[:n_heap] = index[:n_heap_format] & (2**15-1)
index[:format] = (index[:n_heap_format] & 1<<15) == 0 ?
:redundant : :compact
index.delete :n_heap_format
index
end
end