From 7d42170c8625de0fe44b98f47e8b9a603a9de794 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Tue, 24 Feb 2026 11:08:42 +0100 Subject: Genesis commit --- oryxc/src/unicode/default_ignorable_code_point.rs | 363 ++++++++ oryxc/src/unicode/line_terminator.rs | 135 +++ oryxc/src/unicode/mod.rs | 11 + oryxc/src/unicode/pattern_white_space.rs | 137 +++ oryxc/src/unicode/xid_continue.rs | 1007 +++++++++++++++++++++ oryxc/src/unicode/xid_start.rs | 927 +++++++++++++++++++ 6 files changed, 2580 insertions(+) create mode 100644 oryxc/src/unicode/default_ignorable_code_point.rs create mode 100644 oryxc/src/unicode/line_terminator.rs create mode 100644 oryxc/src/unicode/mod.rs create mode 100644 oryxc/src/unicode/pattern_white_space.rs create mode 100644 oryxc/src/unicode/xid_continue.rs create mode 100644 oryxc/src/unicode/xid_start.rs (limited to 'oryxc/src/unicode') diff --git a/oryxc/src/unicode/default_ignorable_code_point.rs b/oryxc/src/unicode/default_ignorable_code_point.rs new file mode 100644 index 0000000..b900a3b --- /dev/null +++ b/oryxc/src/unicode/default_ignorable_code_point.rs @@ -0,0 +1,363 @@ +/* Autogenerated – DO NOT EDIT */ + +static DEFAULT_IGNORABLE_CODE_POINT_L1: [u16; 544] = [ + 0, 1, 2, 3, 4, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 7, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +]; +static DEFAULT_IGNORABLE_CODE_POINT_L2: [u64; 320] = [ + 0, + 0, + 35184372088832, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 32768, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 268435456, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 6442450944, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 13510798882111488, + 0, + 63488, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 136339441907712, + 281470681743360, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 68719476736, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 65535, + 0, + 0, + 9223372036854775808, + 0, + 0, + 4294967296, + 143833713099145216, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64424509440, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 574208952489738240, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, +]; +#[inline] +pub fn default_ignorable_code_point_p(c: char) -> bool { + let cp = c as usize; + let blki = + unsafe { *DEFAULT_IGNORABLE_CODE_POINT_L1.get_unchecked(cp >> 11) } + as usize; + let in_blk_offset_p = cp & 0x7FF; + let wordi = (blki * 32) + (in_blk_offset_p >> 6); + let biti = in_blk_offset_p & 0x3F; + unsafe { + return (*DEFAULT_IGNORABLE_CODE_POINT_L2.get_unchecked(wordi) + & (1 << biti)) + != 0; + } +} diff --git a/oryxc/src/unicode/line_terminator.rs b/oryxc/src/unicode/line_terminator.rs new file mode 100644 index 0000000..e30e031 --- /dev/null +++ b/oryxc/src/unicode/line_terminator.rs @@ -0,0 +1,135 @@ +/* Autogenerated – DO NOT EDIT */ + +static LINE_TERMINATOR_L1: [u16; 544] = [ + 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +]; +static LINE_TERMINATOR_L2: [u64; 96] = [ + 15360, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3298534883328, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +]; +#[inline] +pub fn line_terminator_p(c: char) -> bool { + let cp = c as usize; + let blki = unsafe { *LINE_TERMINATOR_L1.get_unchecked(cp >> 11) } as usize; + let in_blk_offset_p = cp & 0x7FF; + let wordi = (blki * 32) + (in_blk_offset_p >> 6); + let biti = in_blk_offset_p & 0x3F; + unsafe { + return (*LINE_TERMINATOR_L2.get_unchecked(wordi) & (1 << biti)) != 0; + } +} diff --git a/oryxc/src/unicode/mod.rs b/oryxc/src/unicode/mod.rs new file mode 100644 index 0000000..2fbdcb3 --- /dev/null +++ b/oryxc/src/unicode/mod.rs @@ -0,0 +1,11 @@ +pub mod default_ignorable_code_point; +pub mod line_terminator; +pub mod pattern_white_space; +pub mod xid_continue; +pub mod xid_start; + +pub use default_ignorable_code_point::default_ignorable_code_point_p; +pub use line_terminator::line_terminator_p; +pub use pattern_white_space::pattern_white_space_p; +pub use xid_continue::xid_continue_p; +pub use xid_start::xid_start_p; diff --git a/oryxc/src/unicode/pattern_white_space.rs b/oryxc/src/unicode/pattern_white_space.rs new file mode 100644 index 0000000..b051e3a --- /dev/null +++ b/oryxc/src/unicode/pattern_white_space.rs @@ -0,0 +1,137 @@ +/* Autogenerated – DO NOT EDIT */ + +static PATTERN_WHITE_SPACE_L1: [u16; 544] = [ + 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +]; +static PATTERN_WHITE_SPACE_L2: [u64; 96] = [ + 4294983168, + 0, + 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 3298534932480, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +]; +#[inline] +pub fn pattern_white_space_p(c: char) -> bool { + let cp = c as usize; + let blki = + unsafe { *PATTERN_WHITE_SPACE_L1.get_unchecked(cp >> 11) } as usize; + let in_blk_offset_p = cp & 0x7FF; + let wordi = (blki * 32) + (in_blk_offset_p >> 6); + let biti = in_blk_offset_p & 0x3F; + unsafe { + return (*PATTERN_WHITE_SPACE_L2.get_unchecked(wordi) & (1 << biti)) + != 0; + } +} diff --git a/oryxc/src/unicode/xid_continue.rs b/oryxc/src/unicode/xid_continue.rs new file mode 100644 index 0000000..8fbbce4 --- /dev/null +++ b/oryxc/src/unicode/xid_continue.rs @@ -0,0 +1,1007 @@ +/* Autogenerated – DO NOT EDIT */ + +static XID_CONTINUE_L1: [u16; 1088] = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 12, 12, 12, 12, 12, 13, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 14, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 9, 9, 9, 9, 9, 9, + 9, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 9, 29, 12, 30, 12, + 12, 31, 32, 9, 9, 9, 9, 9, 9, 33, 9, 34, 35, 12, 12, 12, 12, 12, 12, 12, + 36, 9, 9, 9, 9, 9, 9, 9, 37, 38, 9, 9, 39, 9, 9, 9, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 9, 9, 49, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 50, 12, 12, 12, 12, 51, 12, 12, 12, + 12, 52, 12, 12, 12, 12, 12, 12, 53, 54, 9, 9, 55, 9, 12, 12, 12, 12, 56, + 12, 12, 12, 12, 12, 12, 12, 12, 57, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 58, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, +]; +static XID_CONTINUE_L2: [u64; 944] = [ + 287948901175001088, + 576460745995190270, + 333270770471927808, + 18410715276682199039, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 88094074470339, + 18446744073709551615, + 13321647697761927167, + 18446744056529672128, + 18428729675200069631, + 18446744073709551615, + 18446744073709551615, + 18446744073709550843, + 18446744073709551615, + 18446462598732840959, + 18446744069456527359, + 13835058055282033151, + 2119858418286774, + 18446744069548736512, + 18446678103011885055, + 18446744073709551615, + 11529212845433552895, + 18446744073709486080, + 18446744073709545471, + 1125899906842623, + 2612087783874887679, + 70368744177663, + 18446471390799331327, + 18446744073701228287, + 18446744056529682431, + 18446744073709551615, + 18446462392574410751, + 17565725197581524975, + 5765733215448889759, + 15235112390417287150, + 18014125208779143, + 17576984196650090478, + 18302910150157089727, + 17576984196649951214, + 844217444219295, + 14123225865944680428, + 281200107273671, + 17582050746231021567, + 281265452367327, + 17577547146603651055, + 4221916082617823, + 18446744073709412351, + 18158794964244397535, + 3457638613854978030, + 3658904103781503, + 576460752303423486, + 67076095, + 4611685674830002134, + 4093607775, + 14024213633433600001, + 18446216308128218879, + 2305843009196916703, + 64, + 18446744073709551615, + 18446744073709487103, + 18446744070488326143, + 17870283321406070975, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744070446333439, + 9168765891372858879, + 18446744073701162813, + 18446744073696837631, + 1123704775901183, + 18446744069414649855, + 4557642822898941951, + 18446744073709551614, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446638520593285119, + 18446744069548802046, + 144053615424700415, + 9007197111451647, + 3905461007941631, + 18446744073709551615, + 4394566287359, + 18446744069481674752, + 144115188075855871, + 18446471394825863167, + 18014398509481983, + 1152657619668697087, + 8796093022207936, + 18446480190918885375, + 134153215, + 18446744069683019775, + 11529215043920986111, + 13834777130128311295, + 17588964818943, + 18446744073709551615, + 4494803601399807, + 18446744073709551615, + 4503599627370495, + 72057594037927935, + 4611686018427380735, + 16717361816799217663, + 576460752302833664, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744070475743231, + 4611686017001275199, + 6908521828386340863, + 2295745090394464220, + 9231253336202686464, + 9223934986817634305, + 536805376, + 562821641207808, + 17582049991377026180, + 18446744069414601696, + 511, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 4494940973301759, + 18446498607738650623, + 9223513873854758911, + 9187201948305063935, + 18446744071553646463, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2251518330118602976, + 18446744073709551614, + 18446744068986765311, + 18446744073709551615, + 18446462598732840928, + 18446744073709551615, + 18446744069414617087, + 18446462598732840960, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 8191, + 4611686018427322368, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 17592185987071, + 13830835930631503871, + 18446744073709551615, + 1125899906842623, + 18446744060816261120, + 18446744073709551615, + 18446744073709550079, + 18446181124293001215, + 18691697672191, + 4503599627370495, + 18446744073709551615, + 16789419406609285183, + 18446532967477018623, + 2305843004919775231, + 18446744073709551615, + 9223372032626884609, + 36028797018963967, + 18194542490348896255, + 18446744073709551615, + 35184368733388807, + 18446602782178705022, + 18446466996645134335, + 18446744073709551615, + 288010473826156543, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446462667452317695, + 1152921504606845055, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446532967477018623, + 18446744073709551615, + 67108863, + 6881498031078244479, + 18446744073709551579, + 1125899906842623, + 18446744073709027328, + 18446744073709551615, + 18446744006063816703, + 18446744073709551615, + 18446744073709551615, + 4611686018427387903, + 18446744073709486080, + 18446744073709355007, + 287948901175001343, + 7036870122864639, + 12288634533233876992, + 18446744073709551615, + 2305843009213693951, + 9799832780635308032, + 18446743936404815870, + 9223372036854775807, + 486341884, + 13258596753222922239, + 1073692671, + 18446744073709551615, + 576460752303423487, + 0, + 9007199254740991, + 0, + 2305843009213693952, + 0, + 0, + 18446744069951455231, + 4295098367, + 18446708893632430079, + 576460752303359999, + 18446744070488326143, + 4128527, + 18446744073709551615, + 18446744073709551615, + 18446466993558126591, + 1152921504591118335, + 18446463698244468735, + 17870001915148894207, + 2016486715970549759, + 4503599627370495, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 36028797018963967, + 1095220854783, + 575897802350002111, + 0, + 10502394331027995967, + 36028792728190975, + 2147483647, + 15762594400829440, + 288230371860938751, + 67108863, + 13907115649320091647, + 0, + 9745789593611923567, + 2305843004918726656, + 536870911, + 549755813631, + 18014398509481983, + 2251795522912255, + 262143, + 0, + 18446744073709551615, + 511, + 2251799813685247, + 2251799813685247, + 287950000686628863, + 18446671780820025343, + 63, + 0, + 0, + 0, + 875211255709695, + 18158513697557840124, + 18446463149025525759, + 18446462598732972031, + 18446462598732841023, + 36028792723996703, + 18446744073709551615, + 9241386160486350975, + 576460752303423487, + 287951100198191108, + 18437736874454810623, + 22517998136787184, + 18446744073709551615, + 402644511, + 13907115649319829503, + 3, + 18446464796682337663, + 287957697268023295, + 18153444948953374703, + 8760701963286943, + 18428729675200023551, + 25770850213, + 18446744073709551615, + 16173172735, + 18446744073709551615, + 67043519, + 0, + 0, + 18392700878181105663, + 1056964609, + 18446744073709551615, + 67043345, + 144115188075855871, + 68719412223, + 287966492958392319, + 127, + 0, + 0, + 576460752303423487, + 0, + 18446744069414584320, + 9223376434901286911, + 17996384110963061375, + 67043343, + 18446740770879700992, + 120208752639, + 9223372036854775807, + 18446744073709486208, + 18446462599336820735, + 144115188075855871, + 0, + 1095216660480, + 0, + 287948909764935679, + 18410715276690587135, + 18445618173869752321, + 36027697507139583, + 0, + 13006395723845991295, + 18446741595580465407, + 18446466992517644287, + 4394019979263, + 0, + 0, + 0, + 36028792723996672, + 14411518807585456127, + 134152199, + 281474976710656, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 67108863, + 0, + 18446744073709551615, + 140737488355327, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 15, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709486080, + 562949953421311, + 281474976710655, + 18446744069418778623, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 576460752303423487, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 127, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 288230376151711743, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 144115188075855871, + 18446466994631868415, + 9223372036854775807, + 8796093022143487, + 36028797018963967, + 16212958624241090575, + 65535, + 0, + 0, + 0, + 0, + 0, + 0, + 287984085547089919, + 0, + 0, + 0, + 18446744073709551615, + 18014398505187016704, + 1048575, + 18446744073709551615, + 18446744073709520895, + 4294934783, + 35747438006370304, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 9223372036858970111, + 2147483647, + 0, + 18446744073709551615, + 2251799813685247, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 8065665457643847680, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 1125934266580991, + 18446463629527547904, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 1152921504606846975, + 0, + 0, + 0, + 0, + 18446744073709551615, + 2305570330330005503, + 1677656575, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 287948901175001088, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446532967477018623, + 127, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 17872504197455282176, + 65970697670631, + 0, + 0, + 28, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073707454463, + 17005555242810474495, + 18446744073709551599, + 8935141660164089791, + 18446744073709419615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446743249075830783, + 17870283321271910397, + 18437736874452713471, + 18446603336221163519, + 18446741874686295551, + 18446744073709539319, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 17906312118425092095, + 9042383626829823, + 281470547525648, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 8660801552383, + 0, + 0, + 0, + 18446471240106377087, + 70368744177663, + 32768, + 0, + 4611439727822766079, + 17407, + 0, + 0, + 0, + 0, + 140737488289792, + 288230376151711743, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 288230376151646208, + 0, + 0, + 0, + 576460752303357952, + 0, + 0, + 0, + 13853072451644162047, + 0, + 0, + 0, + 9223213153129594880, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 8323103, + 18446744073709551615, + 67047423, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 790380184120328175, + 6843210385291930244, + 1152917029519358975, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 287948901175001088, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 4294967295, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744070488326143, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446532967477018623, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446462607322775551, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 1073741823, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 1073741823, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709488127, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 288230376151711743, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 281474976710655, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +]; +#[inline] +pub fn xid_continue_p(c: char) -> bool { + let cp = c as usize; + let blki = unsafe { *XID_CONTINUE_L1.get_unchecked(cp >> 10) } as usize; + let in_blk_offset_p = cp & 0x3FF; + let wordi = (blki * 16) + (in_blk_offset_p >> 6); + let biti = in_blk_offset_p & 0x3F; + unsafe { + return (*XID_CONTINUE_L2.get_unchecked(wordi) & (1 << biti)) != 0; + } +} diff --git a/oryxc/src/unicode/xid_start.rs b/oryxc/src/unicode/xid_start.rs new file mode 100644 index 0000000..1c9d9ae --- /dev/null +++ b/oryxc/src/unicode/xid_start.rs @@ -0,0 +1,927 @@ +/* Autogenerated – DO NOT EDIT */ + +static XID_START_L1: [u16; 1088] = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 12, 12, 12, 12, 12, 13, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 14, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 9, 9, 9, 9, 9, 9, + 9, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 9, 29, 12, 30, 12, + 12, 31, 32, 9, 9, 9, 9, 9, 9, 33, 9, 34, 35, 12, 12, 12, 12, 12, 12, 12, + 36, 9, 9, 9, 9, 9, 9, 9, 37, 38, 9, 9, 39, 9, 9, 9, 9, 9, 40, 9, 41, 42, + 43, 44, 45, 9, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 46, 12, 12, 12, 12, 47, 12, 12, 12, 12, + 48, 12, 12, 12, 12, 12, 12, 49, 50, 9, 9, 51, 9, 12, 12, 12, 12, 52, 12, + 12, 12, 12, 12, 12, 12, 12, 53, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, +]; +static XID_START_L2: [u64; 864] = [ + 68719476736, + 576460745995190270, + 297241973452963840, + 18410715276682199039, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 88094074470339, + 0, + 13321366222785216512, + 18446744056529672000, + 18428729675200069631, + 18446744073709551615, + 18446744073709551615, + 18446744073709550595, + 18446744073709551615, + 18446462598732840959, + 18446744069456527359, + 511, + 2119858418286592, + 18446744069414584320, + 18446392229988665343, + 18446744073709551615, + 11241196188469297151, + 281474976514048, + 18446744073709543424, + 563224831328255, + 301749971126844416, + 1168302407679, + 18446471390564450303, + 18446744069414649599, + 1023, + 2594073385365405680, + 18446181140919287808, + 2577745637692514273, + 1153765945374687232, + 247132830528276448, + 7881300924956672, + 2589004636761079776, + 144115200960823296, + 2589004636760940512, + 562965791113216, + 288167810662516712, + 65536, + 2594071186342010848, + 13807648768, + 2589567586714640353, + 1688864624214016, + 2882303761516978160, + 18158513712597581824, + 3457638613854978016, + 127, + 1688849860263934, + 127, + 2307531515476572118, + 4026531935, + 1, + 35184372088575, + 7936, + 0, + 9223380832947798015, + 18438229877581611008, + 18446744069414600707, + 17870283321406070975, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744070446333439, + 9168765891372858879, + 18446744073701162813, + 18446744073696837631, + 134217727, + 18446744069414649855, + 4557642822898941951, + 18446744073709551614, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446638520593285119, + 18446744069548802046, + 144053615424700415, + 1125897759621119, + 527761286627327, + 4503599627370495, + 276824064, + 18446744069414584320, + 144115188075855871, + 18446469195802607615, + 18014398509481983, + 2147483647, + 8796093022142464, + 18446480190918885375, + 1023, + 18446744069422972927, + 2097151, + 549755813888, + 0, + 4503599627370464, + 8160, + 18158724812380307448, + 274877906943, + 68719476735, + 4611686018360336384, + 16717361816799217663, + 319718190147960832, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744070475743231, + 4611686017001275199, + 6908521828386340863, + 2295745090394464220, + 0, + 9223934986808197120, + 536805376, + 0, + 17582049991377026180, + 18446744069414601696, + 511, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 3509778554814463, + 18446498607738650623, + 141836999983103, + 9187201948305063935, + 2139062143, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2251241253188403424, + 18446744073709551614, + 18446744068886102015, + 17870283321406128127, + 18446462598732840928, + 18446744073709551615, + 18446744069414617087, + 18446462598732840960, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 8191, + 4611686018427322368, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 13198434443263, + 9223512774343131135, + 18446744070488326143, + 281474976710655, + 18446744060816261120, + 18446744073709551615, + 18446744073709550079, + 18446181124293001215, + 34359736251, + 4503599627370495, + 4503599627370492, + 7564921474075590656, + 18446462873610746880, + 2305843004918726783, + 2251799813685232, + 8935422993945886720, + 2199023255551, + 14159317224157876215, + 4495436853045886975, + 7890092085477381, + 18446602782178705022, + 18446466996645134335, + 18446744073709551615, + 34359738367, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446462667452317695, + 1152921504606845055, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446532967477018623, + 18446744073709551615, + 67108863, + 6881498030004502655, + 18446744073709551579, + 1125899906842623, + 18446744073709027328, + 18446744073709551615, + 18446744006063816703, + 18446744073709551615, + 18446744073709551615, + 4611686018427387903, + 18446744073709486080, + 18446744073709355007, + 287948901175001343, + 0, + 12288634533233819648, + 18446744073709551615, + 2305843009213693951, + 576460743713488896, + 18446743798965862398, + 9223372033633550335, + 486341884, + 13258596753222922239, + 1073692671, + 18446744073709551615, + 576460752303423487, + 0, + 9007199254740991, + 0, + 0, + 0, + 0, + 18446744069951455231, + 131071, + 18446708893632430079, + 18014398509418495, + 18446744070488326143, + 4128527, + 18446744073709551615, + 18446744073709551615, + 18446462599806582783, + 1152921504591118335, + 18446463698244468735, + 17870001915148894207, + 2016486715970549759, + 4503599627370495, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 36028797018963967, + 1095220854783, + 575897802350002111, + 0, + 10502394331027995967, + 36028792728190975, + 2147483647, + 15762594400829440, + 288230371860938751, + 67108863, + 13907115649320091647, + 0, + 18014398491590657, + 2305843004918726656, + 536870911, + 137438953215, + 18014398509481983, + 2251795522912255, + 262143, + 0, + 18446744073709551615, + 511, + 2251799813685247, + 2251799813685247, + 68719476735, + 18446603611099102208, + 63, + 0, + 0, + 0, + 848822976643071, + 252, + 18446463149025525759, + 18446462598732841023, + 18446462598732840963, + 36028792723996703, + 72057594037927928, + 10696049115004928, + 281474976710648, + 2199023190016, + 549755813880, + 20266198323101840, + 2251799813685240, + 335544350, + 9223389629040558079, + 1, + 18446464796682337663, + 2147483647, + 2589004636760940512, + 16643063808, + 54043195528399871, + 655360, + 9007199254740991, + 15032387456, + 281474976710655, + 176, + 0, + 0, + 140737488355327, + 251658240, + 281474976710655, + 16, + 72066390130950143, + 0, + 134217727, + 127, + 0, + 0, + 17592186044415, + 0, + 18446744069414584320, + 9223372041149743103, + 9223653511822045823, + 2, + 18446740770879700992, + 42949804031, + 290482175965394945, + 18446744073441181696, + 18446462599269712895, + 144115188075855871, + 0, + 0, + 0, + 8589934591, + 140737488354815, + 18445618173802708993, + 65535, + 0, + 562949953420159, + 18446741595513421888, + 18446462598749619199, + 268435455, + 0, + 0, + 0, + 2251795518717952, + 4503599627239412, + 0, + 281474976710656, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 67108863, + 0, + 18446744073709551615, + 140737488355327, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 15, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709486080, + 562949953421311, + 281474976710655, + 18446744069414584446, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 576460752303423487, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 127, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1073741823, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 144115188075855871, + 18446462600880324607, + 9223372036854775807, + 70368744112128, + 281474976710655, + 16212958624174047247, + 65535, + 0, + 0, + 0, + 0, + 0, + 0, + 35184372088831, + 0, + 0, + 0, + 18446744073709551615, + 18014398505187016704, + 1048575, + 18446744073709551615, + 67583, + 4294443008, + 34902944356761600, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 9223372036858970111, + 2147483647, + 0, + 18446744073709551615, + 2251799813685247, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 8065665457643847680, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 1125934266580991, + 18446463629527547904, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 1152921504606846975, + 0, + 0, + 0, + 0, + 18446744073709551615, + 2305570330330005503, + 67043839, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073707454463, + 17005555242810474495, + 18446744073709551599, + 8935141660164089791, + 18446744073709419615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446743249075830783, + 17870283321271910397, + 18437736874452713471, + 18446603336221163519, + 18446741874686295551, + 4087, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 8660801552383, + 0, + 0, + 0, + 18446462598732840960, + 70368744177663, + 0, + 0, + 4575692405780512767, + 16384, + 0, + 0, + 0, + 0, + 70368744112128, + 17592186044415, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 17592185978880, + 0, + 0, + 0, + 351843720822784, + 0, + 0, + 0, + 13843853836919242751, + 0, + 0, + 0, + 9223213153129594880, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 31, + 18446744073709551615, + 2063, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 790380184120328175, + 6843210385291930244, + 1152917029519358975, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 4294967295, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744070488326143, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446532967477018623, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446462607322775551, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 1073741823, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 1073741823, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 18446744073709488127, + 18446744073709551615, + 18446744073709551615, + 18446744073709551615, + 288230376151711743, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +]; +#[inline] +pub fn xid_start_p(c: char) -> bool { + let cp = c as usize; + let blki = unsafe { *XID_START_L1.get_unchecked(cp >> 10) } as usize; + let in_blk_offset_p = cp & 0x3FF; + let wordi = (blki * 16) + (in_blk_offset_p >> 6); + let biti = in_blk_offset_p & 0x3F; + unsafe { + return (*XID_START_L2.get_unchecked(wordi) & (1 << biti)) != 0; + } +} -- cgit v1.2.3