pub const GLOBAL_HEADER_SIZE: usize = 32;
pub const N_ROOTS: usize = 508;

#[derive(Debug)]
#[repr(C)]
pub struct GlobalHeader {
    /// Version of Sanakirja
    pub version: u16,
    /// Which page is currently the root page? (only valid for page 0)
    pub root: u8,
    pub n_roots: u8,
    /// CRC of this page
    pub crc: u32,

    /// First free page at the end of the file (only valid for page 0)
    pub length: u64,

    /// Offset of the free list
    pub free_db: u64,

    /// Offset of the RC db,
    pub rc_db: u64,
}

impl GlobalHeader {
    pub fn from_le(&self) -> Self {
        GlobalHeader {
            version: u16::from_le(self.version),
            root: self.root,
            n_roots: self.n_roots,
            crc: u32::from_le(self.crc),
            free_db: u64::from_le(self.free_db),
            length: u64::from_le(self.length),
            rc_db: u64::from_le(self.rc_db),
        }
    }
    pub fn to_le(&self) -> Self {
        GlobalHeader {
            version: self.version.to_le(),
            root: self.root,
            n_roots: self.n_roots,
            crc: self.crc.to_le(),
            free_db: self.free_db.to_le(),
            length: self.length.to_le(),
            rc_db: self.rc_db.to_le(),
        }
    }
}