appcui_proc_macro 0.1.9

Procedural macros for the AppCUI TUI framework.
Documentation
#[repr(u8)]
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
pub(crate) enum Dock {
    Left = 0,
    Right = 1,
    Top = 2,
    Bottom = 3,
    Fill = 4,
}

static HASH_TO_VALUE: [Option<Dock>; 19] = [
    None,
    None,
    Some(Dock::Fill),
    None,
    Some(Dock::Right),
    None,
    None,
    None,
    Some(Dock::Bottom),
    Some(Dock::Fill),
    Some(Dock::Right),
    None,
    Some(Dock::Bottom),
    Some(Dock::Left),
    None,
    Some(Dock::Top),
    Some(Dock::Top),
    Some(Dock::Left),
    None,
];

static HASH_COLISION_VALIDATOR: [u64; 19] = [
    0x0,
    0x0,
    0xAAD01878F02A7608,
    0x0,
    0xAF63EF4C86020CD5,
    0x0,
    0x0,
    0x0,
    0xAF63DF4C8601F1A5,
    0xAF63DB4C8601EAD9,
    0x76AAAA535714D805,
    0x0,
    0xE117B24625D0110A,
    0x24B070ADA2041CB0,
    0x0,
    0xAF63E94C860202A3,
    0x56F9BC194465A83C,
    0xAF63E14C8601F50B,
    0x0,
];

impl Dock {
    pub(super) fn from_hash(hash: u64) -> Option<Dock> {
        let entry_index = (hash % 19) as usize;
        if HASH_COLISION_VALIDATOR[entry_index] != hash {
            return None;
        }
        HASH_TO_VALUE[entry_index]
    }
    pub(crate) fn name(&self) -> &'static str {
        match self {
            Dock::Left => "Left",
            Dock::Right => "Right",
            Dock::Top => "Top",
            Dock::Bottom => "Bottom",
            Dock::Fill => "Fill",
        }
    }
}