1 | // This file is part of ICU4X. For terms of use, please see the file |
2 | // called LICENSE at the top level of the ICU4X source tree |
3 | // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). |
4 | |
5 | pub const FAST_TYPE_SHIFT: i32 = 6; |
6 | |
7 | /// Number of entries in a data block for code points below the fast limit. 64=0x40 |
8 | pub const FAST_TYPE_DATA_BLOCK_LENGTH: u32 = 1 << FAST_TYPE_SHIFT; |
9 | |
10 | /// Mask for getting the lower bits for the in-fast-data-block offset. |
11 | pub const FAST_TYPE_DATA_MASK: u32 = FAST_TYPE_DATA_BLOCK_LENGTH - 1; |
12 | |
13 | /// Fast indexing limit for "fast"-type trie |
14 | pub const FAST_TYPE_FAST_INDEXING_MAX: u32 = 0xffff; |
15 | |
16 | /// Fast indexing limit for "small"-type trie |
17 | pub const SMALL_TYPE_FAST_INDEXING_MAX: u32 = 0xfff; |
18 | |
19 | /// Offset from dataLength (to be subtracted) for fetching the |
20 | /// value returned for out-of-range code points and ill-formed UTF-8/16. |
21 | pub const ERROR_VALUE_NEG_DATA_OFFSET: u32 = 1; |
22 | |
23 | /// Offset from dataLength (to be subtracted) for fetching the |
24 | /// value returned for code points highStart..U+10FFFF. |
25 | pub const HIGH_VALUE_NEG_DATA_OFFSET: u32 = 2; |
26 | |
27 | /// The length of the BMP index table. 1024=0x400 |
28 | pub const BMP_INDEX_LENGTH: u32 = 0x10000 >> FAST_TYPE_SHIFT; |
29 | |
30 | pub const SMALL_LIMIT: u32 = 0x1000; |
31 | |
32 | pub const SMALL_INDEX_LENGTH: u32 = SMALL_LIMIT >> FAST_TYPE_SHIFT; |
33 | |
34 | /// Shift size for getting the index-3 table offset. |
35 | pub const SHIFT_3: u32 = 4; |
36 | |
37 | /// Shift size for getting the index-2 table offset. |
38 | pub const SHIFT_2: u32 = 5 + SHIFT_3; |
39 | |
40 | /// Shift size for getting the index-1 table offset. |
41 | pub const SHIFT_1: u32 = 5 + SHIFT_2; |
42 | |
43 | /// Difference between two shift sizes, |
44 | /// for getting an index-2 offset from an index-3 offset. 5=9-4 |
45 | pub const SHIFT_2_3: u32 = SHIFT_2 - SHIFT_3; |
46 | |
47 | /// Difference between two shift sizes, |
48 | /// for getting an index-1 offset from an index-2 offset. 5=14-9 |
49 | pub const SHIFT_1_2: u32 = SHIFT_1 - SHIFT_2; |
50 | |
51 | /// Number of index-1 entries for the BMP. (4) |
52 | /// This part of the index-1 table is omitted from the serialized form. |
53 | pub const OMITTED_BMP_INDEX_1_LENGTH: u32 = 0x10000 >> SHIFT_1; |
54 | |
55 | /// Number of entries in an index-2 block. 32=0x20 |
56 | pub const INDEX_2_BLOCK_LENGTH: u32 = 1 << SHIFT_1_2; |
57 | |
58 | /// Mask for getting the lower bits for the in-index-2-block offset. |
59 | pub const INDEX_2_MASK: u32 = INDEX_2_BLOCK_LENGTH - 1; |
60 | |
61 | /// Number of code points per index-2 table entry. 512=0x200 |
62 | pub const CP_PER_INDEX_2_ENTRY: u32 = 1 << SHIFT_2; |
63 | |
64 | /// Number of entries in an index-3 block. 32=0x20 |
65 | pub const INDEX_3_BLOCK_LENGTH: u32 = 1 << SHIFT_2_3; |
66 | |
67 | /// Mask for getting the lower bits for the in-index-3-block offset. |
68 | pub const INDEX_3_MASK: u32 = INDEX_3_BLOCK_LENGTH - 1; |
69 | |
70 | /// Number of entries in a small data block. 16=0x10 |
71 | pub const SMALL_DATA_BLOCK_LENGTH: u32 = 1 << SHIFT_3; |
72 | |
73 | /// Mask for getting the lower bits for the in-small-data-block offset. |
74 | pub const SMALL_DATA_MASK: u32 = SMALL_DATA_BLOCK_LENGTH - 1; |
75 | |
76 | pub const CODE_POINT_MAX: u32 = 0x10ffff; |
77 | |