oxixml-encoding 0.1.2

Character-encoding decoders/encoders and XML-prologue encoding sniffing: UTF-8, UTF-16, Latin-1/windows-125x, Shift_JIS/EUC-JP/ISO-2022-JP, and GBK/gb18030/Big5/EUC-KR (pure-Rust encoding_rs-style replacement for XML).
Documentation
//! Generated table for the gb18030 4-byte algorithmic mapping, a.k.a. WHATWG
//! "index gb18030 ranges".
//!
//! Source: <https://encoding.spec.whatwg.org/index-gb18030-ranges.txt> (WHATWG data
//! dated 2024-09-18).
//!
//! Unlike every other index in this crate, this one is not a dense pointer -> code point
//! lookup: it lists only the *start* of each of 207 linear ranges (`(pointer, code point)`),
//! because gb18030's 4-byte space covers over a million code points that would otherwise
//! need a table entry each. Within a range, `code point == code_point_offset + (pointer -
//! pointer_offset)`; the range a given pointer/code point falls into is found by locating
//! the last entry whose own pointer/code point is `<=` the value being looked up. Two
//! additional special cases (pointer 7457 <-> U+E7C7, and the pointer bounds check) are not
//! part of this table and are implemented directly in `crate::cjk::gb18030`, per the WHATWG
//! "index gb18030 ranges code point"/"index gb18030 ranges pointer" algorithms.

/// `(pointer, code point)` pairs marking the start of each of the 207 linear ranges,
/// strictly increasing in both columns (used for a last-`<=`-target binary search in
/// both directions -- see `crate::cjk::gb18030`).
#[rustfmt::skip]
pub(crate) static GB18030_RANGES: [(u32, u32); 207] = [
    (0x0, 0x80), (0x24, 0xA5), (0x26, 0xA9), (0x2D, 0xB2), (0x32, 0xB8), (0x51, 0xD8),
    (0x59, 0xE2), (0x5F, 0xEB), (0x60, 0xEE), (0x64, 0xF4), (0x67, 0xF8), (0x68, 0xFB),
    (0x69, 0xFD), (0x6D, 0x102), (0x7E, 0x114), (0x85, 0x11C), (0x94, 0x12C), (0xAC, 0x145),
    (0xAF, 0x149), (0xB3, 0x14E), (0xD0, 0x16C), (0x132, 0x1CF), (0x133, 0x1D1), (0x134, 0x1D3),
    (0x135, 0x1D5), (0x136, 0x1D7), (0x137, 0x1D9), (0x138, 0x1DB), (0x139, 0x1DD), (0x155, 0x1FA),
    (0x1AC, 0x252), (0x1BB, 0x262), (0x220, 0x2C8), (0x221, 0x2CC), (0x22E, 0x2DA), (0x2E5, 0x3A2),
    (0x2E6, 0x3AA), (0x2ED, 0x3C2), (0x2EE, 0x3CA), (0x325, 0x402), (0x333, 0x450), (0x334, 0x452),
    (0x1EF2, 0x2011), (0x1EF4, 0x2017), (0x1EF5, 0x201A), (0x1EF7, 0x201E), (0x1EFE, 0x2027), (0x1F07, 0x2031),
    (0x1F08, 0x2034), (0x1F09, 0x2036), (0x1F0E, 0x203C), (0x1F7E, 0x20AD), (0x1FD4, 0x2104), (0x1FD5, 0x2106),
    (0x1FD8, 0x210A), (0x1FE4, 0x2117), (0x1FEE, 0x2122), (0x202C, 0x216C), (0x2030, 0x217A), (0x2046, 0x2194),
    (0x2048, 0x219A), (0x20B6, 0x2209), (0x20BC, 0x2210), (0x20BD, 0x2212), (0x20C0, 0x2216), (0x20C4, 0x221B),
    (0x20C6, 0x2221), (0x20C8, 0x2224), (0x20C9, 0x2226), (0x20CA, 0x222C), (0x20CC, 0x222F), (0x20D1, 0x2238),
    (0x20D6, 0x223E), (0x20E0, 0x2249), (0x20E3, 0x224D), (0x20E8, 0x2253), (0x20F5, 0x2262), (0x20F7, 0x2268),
    (0x20FD, 0x2270), (0x2122, 0x2296), (0x2125, 0x229A), (0x2130, 0x22A6), (0x2149, 0x22C0), (0x219B, 0x2313),
    (0x22E8, 0x246A), (0x22F2, 0x249C), (0x2356, 0x254C), (0x235A, 0x2574), (0x2367, 0x2590), (0x236A, 0x2596),
    (0x2374, 0x25A2), (0x2384, 0x25B4), (0x238C, 0x25BE), (0x2394, 0x25C8), (0x2397, 0x25CC), (0x2399, 0x25D0),
    (0x23AB, 0x25E6), (0x23CA, 0x2607), (0x23CC, 0x260A), (0x2402, 0x2641), (0x2403, 0x2643), (0x2C41, 0x2E82),
    (0x2C43, 0x2E85), (0x2C46, 0x2E89), (0x2C48, 0x2E8D), (0x2C52, 0x2E98), (0x2C61, 0x2EA8), (0x2C63, 0x2EAB),
    (0x2C66, 0x2EAF), (0x2C6A, 0x2EB4), (0x2C6C, 0x2EB8), (0x2C6F, 0x2EBC), (0x2C7D, 0x2ECB), (0x2DA2, 0x2FFC),
    (0x2DA6, 0x3004), (0x2DA7, 0x3018), (0x2DAC, 0x301F), (0x2DAE, 0x302A), (0x2DC2, 0x303F), (0x2DC4, 0x3094),
    (0x2DCB, 0x309F), (0x2DCD, 0x30F7), (0x2DD2, 0x30FF), (0x2DD8, 0x312A), (0x2ECE, 0x322A), (0x2ED5, 0x3232),
    (0x2F46, 0x32A4), (0x3030, 0x3390), (0x303C, 0x339F), (0x303E, 0x33A2), (0x3060, 0x33C5), (0x3069, 0x33CF),
    (0x306B, 0x33D3), (0x306D, 0x33D6), (0x30DE, 0x3448), (0x3109, 0x3474), (0x3233, 0x359F), (0x32A2, 0x360F),
    (0x32AD, 0x361B), (0x35AA, 0x3919), (0x35FF, 0x396F), (0x365F, 0x39D1), (0x366D, 0x39E0), (0x3700, 0x3A74),
    (0x37DA, 0x3B4F), (0x38F9, 0x3C6F), (0x396A, 0x3CE1), (0x3CDF, 0x4057), (0x3DE7, 0x4160), (0x3FBE, 0x4338),
    (0x4032, 0x43AD), (0x4036, 0x43B2), (0x4061, 0x43DE), (0x4159, 0x44D7), (0x42CE, 0x464D), (0x42E2, 0x4662),
    (0x43A3, 0x4724), (0x43A8, 0x472A), (0x43FA, 0x477D), (0x440A, 0x478E), (0x45C3, 0x4948), (0x45F5, 0x497B),
    (0x45F7, 0x497E), (0x45FB, 0x4984), (0x45FC, 0x4987), (0x4610, 0x499C), (0x4613, 0x49A0), (0x4629, 0x49B8),
    (0x48E8, 0x4C78), (0x490F, 0x4CA4), (0x497E, 0x4D1A), (0x4A12, 0x4DAF), (0x4A63, 0x9FA6), (0x82BD, 0xE76C),
    (0x82BE, 0xE7C8), (0x82BF, 0xE7E7), (0x82CC, 0xE815), (0x82CD, 0xE819), (0x82D2, 0xE81F), (0x82D9, 0xE827),
    (0x82DD, 0xE82D), (0x82E1, 0xE833), (0x82E9, 0xE83C), (0x82F0, 0xE844), (0x8300, 0xE856), (0x830E, 0xE865),
    (0x93D5, 0xF92D), (0x9421, 0xF97A), (0x943C, 0xF996), (0x948D, 0xF9E8), (0x9496, 0xF9F2), (0x94B0, 0xFA10),
    (0x94B1, 0xFA12), (0x94B2, 0xFA15), (0x94B5, 0xFA19), (0x94BB, 0xFA22), (0x94BC, 0xFA25), (0x94BE, 0xFA2A),
    (0x98C4, 0xFE32), (0x98C5, 0xFE45), (0x98C9, 0xFE53), (0x98CA, 0xFE58), (0x98CB, 0xFE67), (0x98CC, 0xFE6C),
    (0x9961, 0xFF5F), (0x99E2, 0xFFE6), (0x2E248, 0x10000),
];