pub const MAGIC: [u8; 4] = *b"MF2B";
pub const VERSION: u16 = 0x0100;
pub const VERSION_MAJOR: u16 = 1;
pub const HEADER_LEN: usize = 32;
pub const SECTION_ENTRY_LEN: usize = 10;
pub const MAX_MESSAGES: u32 = 1 << 24;
pub const MAX_OFFSET: u32 = (1 << 30) - 1;
pub const MAX_FALLBACK_LOCALES: usize = 256;
pub const IDS_RESTART: usize = 16;
pub mod header {
pub const MAGIC: usize = 0;
pub const VERSION: usize = 4;
pub const FLAGS: usize = 6;
pub const MANIFEST_HASH: usize = 8;
pub const MESSAGE_COUNT: usize = 16;
pub const LOCALE: usize = 20;
pub const CLDR_VERSION: usize = 24;
pub const CHUNK: usize = 28;
pub const DIR: usize = 29;
pub const SECTION_COUNT: usize = 30;
}
pub mod flags {
pub const COLD_STRIPPED: u16 = 1;
pub const IDS_STRIPPED: u16 = 2;
}
pub mod section {
pub const INDEX: u16 = 1;
pub const MESSAGES: u16 = 2;
pub const COLD: u16 = 3;
pub const NAMES: u16 = 4;
pub const FALLBACK: u16 = 5;
pub const LOCALE: u16 = 6;
pub const FUNCS: u16 = 7;
pub const IDS: u16 = 8;
pub const STRINGS: u16 = 15;
pub const fn name(kind: u16) -> Option<&'static str> {
Some(match kind {
INDEX => "INDEX",
MESSAGES => "MESSAGES",
COLD => "COLD",
NAMES => "NAMES",
FALLBACK => "FALLBACK",
LOCALE => "LOCALE",
FUNCS => "FUNCS",
IDS => "IDS",
STRINGS => "STRINGS",
_ => return None,
})
}
}
pub mod kind {
pub const SIMPLE: u32 = 0;
pub const PATTERN: u32 = 1;
pub const SELECT: u32 = 2;
pub const ABSENT: u32 = 3;
pub const SHIFT: u32 = 30;
pub const OFFSET_MASK: u32 = (1 << 30) - 1;
}
pub mod tag {
pub const KIND_MASK: u8 = 0b111;
pub const TEXT: u8 = 0;
pub const EXPRESSION: u8 = 1;
pub const OPEN: u8 = 2;
pub const STANDALONE: u8 = 3;
pub const CLOSE: u8 = 4;
pub const OP_SHIFT: u8 = 3;
pub const OP_MASK: u8 = 0b11 << 3;
pub const OP_NONE: u8 = 0;
pub const OP_LITERAL: u8 = 1;
pub const OP_VARIABLE: u8 = 2;
pub const FUNCTION: u8 = 0x20;
pub const LOCAL: u8 = 0x80;
pub const OPTIONS: u8 = 0x80;
pub const EXPRESSION_BITS: u8 = KIND_MASK | OP_MASK | FUNCTION;
pub const MARKUP_BITS: u8 = KIND_MASK | OPTIONS;
}
pub mod cold {
pub const SPELLING: u8 = 0;
pub const ATTRIBUTES: u8 = 1;
pub const CATCH_ALL: u8 = 2;
}
pub mod locale_key {
pub const PLURAL_CARDINAL: u32 = 1;
pub const PLURAL_ORDINAL: u32 = 2;
pub const NUMBER_SYMBOLS: u32 = 3;
pub const NUMBER_PATTERNS: u32 = 4;
pub const CURRENCY_FIRST: u32 = 16;
pub const CURRENCY_DATA: u32 = 16;
pub const UNIT_FIRST: u32 = 32;
pub const UNIT_DATA: u32 = 32;
pub const DATE_FIRST: u32 = 48;
pub const ICU_BLOB: u32 = 48;
}