#[derive(Debug, Clone, Copy)]
pub enum ValueTokenKind {
NumberOrTimestamp,
Letter,
Symbol,
QuotedText,
List,
SExp,
LobOrStruct,
Invalid(u8),
}
pub(crate) static TEXT_ION_TOKEN_KINDS: &[ValueTokenKind] = &init_value_token_cache();
pub(crate) const fn init_value_token_cache() -> [ValueTokenKind; 256] {
let mut jump_table = [ValueTokenKind::Invalid(0); 256];
let mut index: usize = 0;
while index < 256 {
let byte = index as u8;
jump_table[index] = match byte {
b'0'..=b'9' | b'-' | b'+' => ValueTokenKind::NumberOrTimestamp,
b'a'..=b'z' | b'A'..=b'Z' => ValueTokenKind::Letter,
b'$' | b'_' => ValueTokenKind::Symbol,
b'"' | b'\'' => ValueTokenKind::QuotedText,
b'[' => ValueTokenKind::List,
b'(' => ValueTokenKind::SExp,
b'{' => ValueTokenKind::LobOrStruct,
other_byte => ValueTokenKind::Invalid(other_byte),
};
index += 1;
}
jump_table
}