| 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 | |