//# This file is a part of toml++ and is subject to the the terms of the MIT license. //# Copyright (c) 2019-2020 Mark Gillard //# See https://github.com/marzer/tomlplusplus/blob/master/LICENSE for the full license text. // SPDX-License-Identifier: MIT //#----- //# this file was generated by generate_unicode_functions.py - do not modify it directly #pragma once #include "toml_preprocessor.h" #ifndef DOXYGEN TOML_IMPL_NAMESPACE_START { //# Returns true if a codepoint matches any of: //# 0 - 9, A - F, a - f [[nodiscard]] TOML_ATTR(const) constexpr bool is_hexadecimal_digit(char32_t cp) noexcept { using ui64 = std::uint_least64_t; return cp >= U'0' && cp <= U'f' && (1ull << (static_cast(cp) - 0x30ull)) & 0x7E0000007E03FFull; } #if TOML_LANG_UNRELEASED // toml/issues/687 (unicode bare keys) //# Returns true if a codepoint belongs to any of these categories: //# Ll, Lm, Lo, Lt, Lu [[nodiscard]] TOML_ATTR(const) constexpr bool is_unicode_letter(char32_t cp) noexcept { using ui64 = std::uint_least64_t; using ui32 = std::uint_least32_t; if (cp < U'\u00AA' || cp > U'\U00031349') return false; const auto child_index_0 = (static_cast(cp) - 0xAAull) / 0xC4Bull; if ((1ull << child_index_0) & 0x8A7FFC004001CFA0ull) return true; if ((1ull << child_index_0) & 0x26180C0000ull) return false; switch (child_index_0) { case 0x00: // [0] 00AA - 0CF4 { if (cp > U'\u0CF2') return false; TOML_ASSUME(cp >= U'\u00AA'); constexpr ui64 bitmask_table_1[] = { 0xFFFFDFFFFFC10801ull, 0xFFFFFFFFFFFFDFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x07C000FFF0FFFFFFull, 0x0000000000000014ull, 0x0000000000000000ull, 0xFEFFFFF5D02F37C0ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFEFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFF00FFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFC09FFFFFFFFFBFull, 0x000000007FFFFFFFull, 0xFFFFFFC000000000ull, 0xFFC00000000001E1ull, 0x00000001FFFFFFFFull, 0xFFFFFFFFFFFFFFB0ull, 0x18000BFFFFFFFFFFull, 0xFFFFFF4000270030ull, 0xFFFFFFF80000003Full, 0x0FFFFFFFFFFFFFFFull, 0xFFFFFFFF00000080ull, 0x44010FFFFFC10C01ull, 0xFFC07FFFFFC00000ull, 0xFFC0000000000001ull, 0x000000003FFFF7FFull, 0xFFFFFFFFFC000000ull, 0x00FFC0400008FFFFull, 0x7FFFFE67F87FFF80ull, 0x00EC00100008F17Full, 0x7FFFFE61F80400C0ull, 0x001780000000DB7Full, 0x7FFFFEEFF8000700ull, 0x00C000400008FB7Full, 0x7FFFFE67F8008000ull, 0x00EC00000008FB7Full, 0xC6358F71FA000080ull, 0x000000400000FFF1ull, 0x7FFFFF77F8000000ull, 0x00C1C0000008FFFFull, 0x7FFFFF77F8400000ull, 0x00D000000008FBFFull, 0x0000000000000180ull, }; return bitmask_table_1[(static_cast(cp) - 0xAAull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0xAAull) % 0x40ull)); //# chunk summary: 1922 codepoints from 124 ranges (spanning a search area of 3147) } case 0x01: // [1] 0CF5 - 193F { if (cp < U'\u0D04' || cp > U'\u191E') return false; constexpr ui64 bitmask_table_1[] = { 0x027FFFFFFFFFDDFFull, 0x0FC0000038070400ull, 0xF2FFBFFFFFC7FFFEull, 0xE000000000000007ull, 0xF000DFFFFFFFFFFFull, 0x6000000000000007ull, 0xF200DFFAFFFFFF7Dull, 0x100000000F000005ull, 0xF000000000000000ull, 0x000001FFFFFFFFEFull, 0x00000000000001F0ull, 0xF000000000000000ull, 0x0800007FFFFFFFFFull, 0x3FFE1C0623C3F000ull, 0xFFFFFFFFF0000400ull, 0xFF7FFFFFFFFFF20Bull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFF3D7F3DFull, 0xD7F3DFFFFFFFF3DFull, 0xFFFFFFFFFFF7FFF3ull, 0xFFFFFFFFFFF3DFFFull, 0xF0000000007FFFFFull, 0xFFFFFFFFF0000FFFull, 0xE3F3FFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xEFFFF9FFFFFFFFFFull, 0xFFFFFFFFF07FFFFFull, 0xF01FE07FFFFFFFFFull, 0xF0003FFFF0003DFFull, 0xF0001DFFF0003FFFull, 0x0000FFFFFFFFFFFFull, 0x0000000001080000ull, 0xFFFFFFFFF0000000ull, 0xF01FFFFFFFFFFFFFull, 0xFFFFF05FFFFFFFF9ull, 0xF003FFFFFFFFFFFFull, 0x0000000007FFFFFFull, }; return bitmask_table_1[(static_cast(cp) - 0xD04ull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0xD04ull) % 0x40ull)); //# chunk summary: 2239 codepoints from 83 ranges (spanning a search area of 3147) } case 0x02: // [2] 1940 - 258A { if (cp < U'\u1950' || cp > U'\u2184') return false; constexpr ui64 bitmask_table_1[] = { 0xFFFF001F3FFFFFFFull, 0x03FFFFFF0FFFFFFFull, 0xFFFF000000000000ull, 0xFFFFFFFFFFFF007Full, 0x000000000000001Full, 0x0000000000800000ull, 0xFFE0000000000000ull, 0x0FE0000FFFFFFFFFull, 0xFFF8000000000000ull, 0xFFFFFC00C001FFFFull, 0xFFFF0000003FFFFFull, 0xE0000000000FFFFFull, 0x01FF3FFFFFFFFC00ull, 0x0000E7FFFFFFFFFFull, 0xFFFF046FDE000000ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x0000FFFFFFFFFFFFull, 0xFFFF000000000000ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x3F3FFFFFFFFF3F3Full, 0xFFFF3FFFFFFFAAFFull, 0x1FDC5FDFFFFFFFFFull, 0x00001FDC1FFF0FCFull, 0x0000000000000000ull, 0x0000800200000000ull, 0x0000000000001FFFull, 0xFC84000000000000ull, 0x43E0F3FFBD503E2Full, 0x0018000000000000ull, }; return bitmask_table_1[(static_cast(cp) - 0x1950ull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0x1950ull) % 0x40ull)); //# chunk summary: 1184 codepoints from 59 ranges (spanning a search area of 3147) } case 0x03: // [3] 258B - 31D5 { if (cp < U'\u2C00' || cp > U'\u31BF') return false; constexpr ui64 bitmask_table_1[] = { 0xFFFF7FFFFFFFFFFFull, 0xFFFFFFFF7FFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x000C781FFFFFFFFFull, 0xFFFF20BFFFFFFFFFull, 0x000080FFFFFFFFFFull, 0x7F7F7F7F007FFFFFull, 0x000000007F7F7F7Full, 0x0000800000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x183E000000000060ull, 0xFFFFFFFFFFFFFFFEull, 0xFFFFFFFEE07FFFFFull, 0xF7FFFFFFFFFFFFFFull, 0xFFFEFFFFFFFFFFE0ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFF00007FFFull, }; return bitmask_table_1[(static_cast(cp) - 0x2C00ull) / 0x40ull] & (0x1ull << (static_cast(cp) % 0x40ull)); //# chunk summary: 771 codepoints from 30 ranges (spanning a search area of 3147) } case 0x04: return (cp >= U'\u31F0' && cp <= U'\u31FF') || (cp >= U'\u3400' && cp <= U'\u3E20'); case 0x06: return (cp >= U'\u4A6C' && cp <= U'\u4DBE') || (cp >= U'\u4E00' && cp <= U'\u56B6'); case 0x0C: return (cp >= U'\u942E' && cp <= U'\u9FFB') || (cp >= U'\uA000' && cp <= U'\uA078'); case 0x0D: // [13] A079 - ACC3 { TOML_ASSUME(cp >= U'\uA079' && cp <= U'\uACC3'); constexpr ui64 bitmask_table_1[] = { 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x00000000000FFFFFull, 0xFFFFFFFFFF800000ull, 0xFFFFFFFFFFFFFF9Full, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x0006007FFF8FFFFFull, 0x003FFFFFFFFFFF80ull, 0xFFFFFF9FFFFFFFC0ull, 0x00001FFFFFFFFFFFull, 0xFFFFFE7FC0000000ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFCFFFFull, 0xF00000000003FE7Full, 0x000003FFFFFBDDFFull, 0x07FFFFFFFFFFFF80ull, 0x07FFFFFFFFFFFE00ull, 0x7E00000000000000ull, 0xFF801FFFFFFE0034ull, 0xFFFFFF8000003FFFull, 0x03FFFFFFFFFFF80Full, 0x007FEF8000400000ull, 0x0000FFFFFFFFFFBEull, 0x3FFFFF800007FB80ull, 0x317FFFFFFFFFFFE2ull, 0x0E03FF9C0000029Full, 0xFFBFBF803F3F3F00ull, 0xFF81FFFBFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x000003FFFFFFFFFFull, 0xFFFFFFFFFFFFFF80ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x00000000000007FFull, }; return bitmask_table_1[(static_cast(cp) - 0xA079ull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0xA079ull) % 0x40ull)); //# chunk summary: 2554 codepoints from 52 ranges (spanning a search area of 3147) } case 0x11: return (cp >= U'\uD1A5' && cp <= U'\uD7A2') || (cp >= U'\uD7B0' && cp <= U'\uD7C6') || (cp >= U'\uD7CB' && cp <= U'\uD7FB'); case 0x14: // [20] F686 - 102D0 { if (cp < U'\uF900') return false; TOML_ASSUME(cp <= U'\U000102D0'); constexpr ui64 bitmask_table_1[] = { 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFF3FFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x0000000003FFFFFFull, 0x5F7FFDFFA0F8007Full, 0xFFFFFFFFFFFFFFDBull, 0x0003FFFFFFFFFFFFull, 0xFFFFFFFFFFF80000ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x3FFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFF0000ull, 0xFFFFFFFFFFFCFFFFull, 0x0FFF0000000000FFull, 0x0000000000000000ull, 0xFFDF000000000000ull, 0xFFFFFFFFFFFFFFFFull, 0x1FFFFFFFFFFFFFFFull, 0x07FFFFFE00000000ull, 0xFFFFFFC007FFFFFEull, 0x7FFFFFFFFFFFFFFFull, 0x000000001CFCFCFCull, 0xB7FFFF7FFFFFEFFFull, 0x000000003FFF3FFFull, 0xFFFFFFFFFFFFFFFFull, 0x07FFFFFFFFFFFFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0xFFFFFFFF1FFFFFFFull, 0x000000000001FFFFull, }; return bitmask_table_1[(static_cast(cp) - 0xF900ull) / 0x40ull] & (0x1ull << (static_cast(cp) % 0x40ull)); //# chunk summary: 1710 codepoints from 34 ranges (spanning a search area of 3147) } case 0x15: // [21] 102D1 - 10F1B { if (cp < U'\U00010300') return false; TOML_ASSUME(cp <= U'\U00010F1B'); constexpr ui64 bitmask_table_1[] = { 0xFFFFE000FFFFFFFFull, 0x003FFFFFFFFF03FDull, 0xFFFFFFFF3FFFFFFFull, 0x000000000000FF0Full, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFF00003FFFFFFFull, 0x0FFFFFFFFF0FFFFFull, 0xFFFF00FFFFFFFFFFull, 0x0000000FFFFFFFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x007FFFFFFFFFFFFFull, 0x000000FF003FFFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x91BFFFFFFFFFFD3Full, 0x007FFFFF003FFFFFull, 0x000000007FFFFFFFull, 0x0037FFFF00000000ull, 0x03FFFFFF003FFFFFull, 0x0000000000000000ull, 0xC0FFFFFFFFFFFFFFull, 0x0000000000000000ull, 0x003FFFFFFEEF0001ull, 0x1FFFFFFF00000000ull, 0x000000001FFFFFFFull, 0x0000001FFFFFFEFFull, 0x003FFFFFFFFFFFFFull, 0x0007FFFF003FFFFFull, 0x000000000003FFFFull, 0x0000000000000000ull, 0xFFFFFFFFFFFFFFFFull, 0x00000000000001FFull, 0x0007FFFFFFFFFFFFull, 0x0007FFFFFFFFFFFFull, 0x0000000FFFFFFFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x000303FFFFFFFFFFull, 0x0000000000000000ull, 0x000000000FFFFFFFull, }; return bitmask_table_1[(static_cast(cp) - 0x10300ull) / 0x40ull] & (0x1ull << (static_cast(cp) % 0x40ull)); //# chunk summary: 1620 codepoints from 48 ranges (spanning a search area of 3147) } case 0x16: // [22] 10F1C - 11B66 { if (cp > U'\U00011AF8') return false; TOML_ASSUME(cp >= U'\U00010F1C'); constexpr ui64 bitmask_table_1[] = { 0x000003FFFFF00801ull, 0x0000000000000000ull, 0x000001FFFFF00000ull, 0xFFFFFF8007FFFFF0ull, 0x000000000FFFFFFFull, 0xFFFFFF8000000000ull, 0xFFF00000000FFFFFull, 0xFFFFFF8000001FFFull, 0xFFF00900000007FFull, 0xFFFFFF80047FFFFFull, 0x400001E0007FFFFFull, 0xFFBFFFF000000001ull, 0x000000000000FFFFull, 0xFFFBD7F000000000ull, 0xFFFFFFFFFFF01FFBull, 0xFF99FE0000000007ull, 0x001000023EDFDFFFull, 0x000000000000003Eull, 0x0000000000000000ull, 0xFFFFFFF000000000ull, 0x0000780001FFFFFFull, 0xFFFFFFF000000038ull, 0x00000B00000FFFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0xFFFFFFF000000000ull, 0xF00000000007FFFFull, 0xFFFFFFF000000000ull, 0x00000100000FFFFFull, 0xFFFFFFF000000000ull, 0x0000000010007FFFull, 0x7FFFFFF000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0xFFFFFFF000000000ull, 0x000000000000FFFFull, 0x0000000000000000ull, 0xFFFFFFFFFFFFFFF0ull, 0xF6FF27F80000000Full, 0x00000028000FFFFFull, 0x0000000000000000ull, 0x001FFFFFFFFFCFF0ull, 0xFFFF8010000000A0ull, 0x00100000407FFFFFull, 0x00003FFFFFFFFFFFull, 0xFFFFFFF000000002ull, 0x000000001FFFFFFFull, }; return bitmask_table_1[(static_cast(cp) - 0x10F1Cull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0x10F1Cull) % 0x40ull)); //# chunk summary: 1130 codepoints from 67 ranges (spanning a search area of 3147) } case 0x17: // [23] 11B67 - 127B1 { if (cp < U'\U00011C00' || cp > U'\U00012543') return false; constexpr ui64 bitmask_table_1[] = { 0x00007FFFFFFFFDFFull, 0xFFFC000000000001ull, 0x000000000000FFFFull, 0x0000000000000000ull, 0x0001FFFFFFFFFB7Full, 0xFFFFFDBF00000040ull, 0x00000000010003FFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0007FFFF00000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0001000000000000ull, 0x0000000000000000ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x0000000003FFFFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x000000000000000Full, }; return bitmask_table_1[(static_cast(cp) - 0x11C00ull) / 0x40ull] & (0x1ull << (static_cast(cp) % 0x40ull)); //# chunk summary: 1304 codepoints from 16 ranges (spanning a search area of 3147) } case 0x18: return cp >= U'\U00013000'; case 0x19: return cp <= U'\U0001342E'; case 0x1A: return cp >= U'\U00014400' && cp <= U'\U00014646'; case 0x1D: // [29] 16529 - 17173 { if (cp < U'\U00016800') return false; TOML_ASSUME(cp <= U'\U00017173'); constexpr ui64 bitmask_table_1[] = { 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x01FFFFFFFFFFFFFFull, 0x000000007FFFFFFFull, 0x0000000000000000ull, 0x00003FFFFFFF0000ull, 0x0000FFFFFFFFFFFFull, 0xE0FFFFF80000000Full, 0x000000000000FFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0xFFFFFFFFFFFFFFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0xFFFFFFFFFFFFFFFFull, 0x00000000000107FFull, 0x00000000FFF80000ull, 0x0000000B00000000ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x000FFFFFFFFFFFFFull, }; return bitmask_table_1[(static_cast(cp) - 0x16800ull) / 0x40ull] & (0x1ull << (static_cast(cp) % 0x40ull)); //# chunk summary: 1250 codepoints from 14 ranges (spanning a search area of 3147) } case 0x1F: return (cp >= U'\U00017DBF' && cp <= U'\U000187F6') || (cp >= U'\U00018800' && cp <= U'\U00018A09'); case 0x20: return (cp >= U'\U00018A0A' && cp <= U'\U00018CD5') || (cp >= U'\U00018D00' && cp <= U'\U00018D07'); case 0x23: // [35] 1AEEB - 1BB35 { if (cp < U'\U0001B000' || cp > U'\U0001B2FB') return false; constexpr ui64 bitmask_table_1[] = { 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x000000007FFFFFFFull, 0xFFFF00F000070000ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x0FFFFFFFFFFFFFFFull, }; return bitmask_table_1[(static_cast(cp) - 0x1B000ull) / 0x40ull] & (0x1ull << (static_cast(cp) % 0x40ull)); //# chunk summary: 690 codepoints from 4 ranges (spanning a search area of 3147) } case 0x24: // [36] 1BB36 - 1C780 { if (cp < U'\U0001BC00' || cp > U'\U0001BC99') return false; switch ((static_cast(cp) - 0x1BC00ull) / 0x40ull) { case 0x01: return cp <= U'\U0001BC7C' && (1ull << (static_cast(cp) - 0x1BC40ull)) & 0x1FFF07FFFFFFFFFFull; case 0x02: return (1u << (static_cast(cp) - 0x1BC80u)) & 0x3FF01FFu; default: return true; } //# chunk summary: 139 codepoints from 4 ranges (spanning a search area of 3147) } case 0x26: // [38] 1D3CC - 1E016 { if (cp < U'\U0001D400' || cp > U'\U0001D7CB') return false; constexpr ui64 bitmask_table_1[] = { 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFDFFFFFull, 0xEBFFDE64DFFFFFFFull, 0xFFFFFFFFFFFFFFEFull, 0x7BFFFFFFDFDFE7BFull, 0xFFFFFFFFFFFDFC5Full, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFF3FFFFFFFFFull, 0xF7FFFFFFF7FFFFFDull, 0xFFDFFFFFFFDFFFFFull, 0xFFFF7FFFFFFF7FFFull, 0xFFFFFDFFFFFFFDFFull, 0x0000000000000FF7ull, }; return bitmask_table_1[(static_cast(cp) - 0x1D400ull) / 0x40ull] & (0x1ull << (static_cast(cp) % 0x40ull)); //# chunk summary: 936 codepoints from 30 ranges (spanning a search area of 3147) } case 0x27: // [39] 1E017 - 1EC61 { if (cp < U'\U0001E100' || cp > U'\U0001E94B') return false; constexpr ui64 bitmask_table_1[] = { 0x3F801FFFFFFFFFFFull, 0x0000000000004000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x00000FFFFFFFFFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull, 0x000000000000001Full, 0xFFFFFFFFFFFFFFFFull, 0x000000000000080Full, }; return bitmask_table_1[(static_cast(cp) - 0x1E100ull) / 0x40ull] & (0x1ull << (static_cast(cp) % 0x40ull)); //# chunk summary: 363 codepoints from 7 ranges (spanning a search area of 3147) } case 0x28: // [40] 1EC62 - 1F8AC { if (cp < U'\U0001EE00' || cp > U'\U0001EEBB') return false; switch ((static_cast(cp) - 0x1EE00ull) / 0x40ull) { case 0x00: return cp <= U'\U0001EE3B' && (1ull << (static_cast(cp) - 0x1EE00ull)) & 0xAF7FE96FFFFFFEFull; case 0x01: return cp >= U'\U0001EE42' && cp <= U'\U0001EE7E' && (1ull << (static_cast(cp) - 0x1EE42ull)) & 0x17BDFDE5AAA5BAA1ull; case 0x02: return (1ull << (static_cast(cp) - 0x1EE80ull)) & 0xFFFFBEE0FFFFBFFull; TOML_NO_DEFAULT_CASE; } //# chunk summary: 141 codepoints from 33 ranges (spanning a search area of 3147) } case 0x29: return cp >= U'\U00020000'; case 0x37: return (cp >= U'\U0002A4C7' && cp <= U'\U0002A6DC') || (cp >= U'\U0002A700' && cp <= U'\U0002B111'); case 0x38: return (cp >= U'\U0002B112' && cp <= U'\U0002B733') || (cp >= U'\U0002B740' && cp <= U'\U0002B81C') || (cp >= U'\U0002B820' && cp <= U'\U0002BD5C'); case 0x3A: return (cp >= U'\U0002C9A8' && cp <= U'\U0002CEA0') || (cp >= U'\U0002CEB0' && cp <= U'\U0002D5F2'); case 0x3C: return cp <= U'\U0002EBDF'; case 0x3D: return cp >= U'\U0002F800' && cp <= U'\U0002FA1D'; case 0x3E: return cp >= U'\U00030000'; TOML_NO_DEFAULT_CASE; } //# chunk summary: 131178 codepoints from 620 ranges (spanning a search area of 201376) } //# Returns true if a codepoint belongs to any of these categories: //# Nd, Nl [[nodiscard]] TOML_ATTR(const) constexpr bool is_unicode_number(char32_t cp) noexcept { using ui64 = std::uint_least64_t; if (cp < U'\u0660' || cp > U'\U0001FBF9') return false; const auto child_index_0 = (static_cast(cp) - 0x660ull) / 0x7D7ull; if ((1ull << child_index_0) & 0x47FFDFE07FCFFFD0ull) return false; switch (child_index_0) { case 0x00: // [0] 0660 - 0E36 { if (cp > U'\u0DEF') return false; TOML_ASSUME(cp >= U'\u0660'); constexpr ui64 bitmask_table_1[] = { 0x00000000000003FFull, 0x0000000000000000ull, 0x0000000003FF0000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x000003FF00000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x000000000000FFC0ull, 0x0000000000000000ull, 0x000000000000FFC0ull, 0x0000000000000000ull, 0x000000000000FFC0ull, 0x0000000000000000ull, 0x000000000000FFC0ull, 0x0000000000000000ull, 0x000000000000FFC0ull, 0x0000000000000000ull, 0x000000000000FFC0ull, 0x0000000000000000ull, 0x000000000000FFC0ull, 0x0000000000000000ull, 0x000000000000FFC0ull, 0x0000000000000000ull, 0x000000000000FFC0ull, 0x0000000000000000ull, 0x000000000000FFC0ull, }; return bitmask_table_1[(static_cast(cp) - 0x660ull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0x660ull) % 0x40ull)); //# chunk summary: 130 codepoints from 13 ranges (spanning a search area of 2007) } case 0x01: // [1] 0E37 - 160D { if (cp < U'\u0E50' || cp > U'\u1099') return false; constexpr ui64 bitmask_table_1[] = { 0x00000000000003FFull, 0x0000000000000000ull, 0x00000000000003FFull, 0x0000000003FF0000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x03FF000000000000ull, 0x0000000000000000ull, 0x00000000000003FFull, }; return bitmask_table_1[(static_cast(cp) - 0xE50ull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0xE50ull) % 0x40ull)); //# chunk summary: 50 codepoints from 5 ranges (spanning a search area of 2007) } case 0x02: // [2] 160E - 1DE4 { if (cp < U'\u16EE' || cp > U'\u1C59') return false; constexpr ui64 bitmask_table_1[] = { 0x0000000000000007ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0FFC000000000000ull, 0x00000FFC00000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x00000003FF000000ull, 0x0000000000000000ull, 0x00000FFC00000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x00000FFC0FFC0000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x00000FFC00000000ull, 0x0000000000000000ull, 0x0000000000000FFCull, 0x0000000000000000ull, 0x00000FFC0FFC0000ull, }; return bitmask_table_1[(static_cast(cp) - 0x16EEull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0x16EEull) % 0x40ull)); //# chunk summary: 103 codepoints from 11 ranges (spanning a search area of 2007) } case 0x03: return cp >= U'\u2160' && cp <= U'\u2188' && (1ull << (static_cast(cp) - 0x2160ull)) & 0x1E7FFFFFFFFull; case 0x05: return cp >= U'\u3007' && cp <= U'\u303A' && (1ull << (static_cast(cp) - 0x3007ull)) & 0xE0007FC000001ull; case 0x14: // [20] A32C - AB02 { if (cp < U'\uA620' || cp > U'\uAA59') return false; constexpr ui64 bitmask_table_1[] = { 0x00000000000003FFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x000000000000FFC0ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x03FF000000000000ull, 0x000003FF00000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x03FF000000000000ull, 0x0000000003FF0000ull, 0x03FF000000000000ull, }; return bitmask_table_1[(static_cast(cp) - 0xA620ull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0xA620ull) % 0x40ull)); //# chunk summary: 70 codepoints from 7 ranges (spanning a search area of 2007) } case 0x15: return cp >= U'\uABF0' && cp <= U'\uABF9'; case 0x1F: return cp >= U'\uFF10' && cp <= U'\uFF19'; case 0x20: // [32] 10140 - 10916 { if (cp > U'\U000104A9') return false; TOML_ASSUME(cp >= U'\U00010140'); constexpr ui64 bitmask_table_1[] = { 0x001FFFFFFFFFFFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000402ull, 0x0000000000000000ull, 0x00000000003E0000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x000003FF00000000ull, }; return bitmask_table_1[(static_cast(cp) - 0x10140ull) / 0x40ull] & (0x1ull << (static_cast(cp) % 0x40ull)); //# chunk summary: 70 codepoints from 5 ranges (spanning a search area of 2007) } case 0x21: return (cp >= U'\U00010D30' && cp <= U'\U00010D39') || (cp >= U'\U00011066' && cp <= U'\U0001106F'); case 0x22: // [34] 110EE - 118C4 { if (cp < U'\U000110F0' || cp > U'\U00011739') return false; constexpr ui64 bitmask_table_1[] = { 0x00000000000003FFull, 0x000000000000FFC0ull, 0x0000000000000000ull, 0x000003FF00000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x00000000000003FFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x000003FF00000000ull, 0x0000000000000000ull, 0x000003FF00000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x000003FF00000000ull, 0x0000000000000000ull, 0x0000000003FF0000ull, 0x0000000000000000ull, 0x00000000000003FFull, }; return bitmask_table_1[(static_cast(cp) - 0x110F0ull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0x110F0ull) % 0x40ull)); //# chunk summary: 90 codepoints from 9 ranges (spanning a search area of 2007) } case 0x23: // [35] 118C5 - 1209B { if (cp < U'\U000118E0' || cp > U'\U00011DA9') return false; constexpr ui64 bitmask_table_1[] = { 0x00000000000003FFull, 0x03FF000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x03FF000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x03FF000000000000ull, 0x0000000000000000ull, 0x00000000000003FFull, }; return bitmask_table_1[(static_cast(cp) - 0x118E0ull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0x118E0ull) % 0x40ull)); //# chunk summary: 50 codepoints from 5 ranges (spanning a search area of 2007) } case 0x24: return cp >= U'\U00012400' && cp <= U'\U0001246E'; case 0x2D: return (cp >= U'\U00016A60' && cp <= U'\U00016A69') || (cp >= U'\U00016B50' && cp <= U'\U00016B59'); case 0x3B: return cp >= U'\U0001D7CE' && cp <= U'\U0001D7FF'; case 0x3C: return (cp >= U'\U0001E140' && cp <= U'\U0001E149') || (cp >= U'\U0001E2F0' && cp <= U'\U0001E2F9'); case 0x3D: return cp >= U'\U0001E950' && cp <= U'\U0001E959'; case 0x3F: return cp >= U'\U0001FBF0'; TOML_NO_DEFAULT_CASE; } //# chunk summary: 876 codepoints from 72 ranges (spanning a search area of 128410) } //# Returns true if a codepoint belongs to any of these categories: //# Mn, Mc [[nodiscard]] TOML_ATTR(const) constexpr bool is_unicode_combining_mark(char32_t cp) noexcept { using ui64 = std::uint_least64_t; if (cp < U'\u0300' || cp > U'\U000E01EF') return false; const auto child_index_0 = (static_cast(cp) - 0x300ull) / 0x37FCull; if ((1ull << child_index_0) & 0x7FFFFFFFFFFFFE02ull) return false; switch (child_index_0) { case 0x00: // [0] 0300 - 3AFB { if (cp > U'\u309A') return false; TOML_ASSUME(cp >= U'\u0300'); constexpr ui64 bitmask_table_1[] = { 0xFFFFFFFFFFFFFFFFull, 0x0000FFFFFFFFFFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x00000000000000F8ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0xBFFFFFFFFFFE0000ull, 0x00000000000000B6ull, 0x0000000007FF0000ull, 0x00010000FFFFF800ull, 0x0000000000000000ull, 0x00003D9F9FC00000ull, 0xFFFF000000020000ull, 0x00000000000007FFull, 0x0001FFC000000000ull, 0x200FF80000000000ull, 0x00003EEFFBC00000ull, 0x000000000E000000ull, 0x0000000000000000ull, 0xFFFFFFFBFFF80000ull, 0xDC0000000000000Full, 0x0000000C00FEFFFFull, 0xD00000000000000Eull, 0x4000000C0080399Full, 0xD00000000000000Eull, 0x0023000000023987ull, 0xD00000000000000Eull, 0xFC00000C00003BBFull, 0xD00000000000000Eull, 0x0000000C00E0399Full, 0xC000000000000004ull, 0x0000000000803DC7ull, 0xC00000000000001Full, 0x0000000C00603DDFull, 0xD00000000000000Eull, 0x0000000C00603DDFull, 0xD80000000000000Full, 0x0000000C00803DDFull, 0x000000000000000Eull, 0x000C0000FF5F8400ull, 0x07F2000000000000ull, 0x0000000000007F80ull, 0x1FF2000000000000ull, 0x0000000000003F00ull, 0xC2A0000003000000ull, 0xFFFE000000000000ull, 0x1FFFFFFFFEFFE0DFull, 0x0000000000000040ull, 0x7FFFF80000000000ull, 0x001E3F9DC3C00000ull, 0x000000003C00BFFCull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x00000000E0000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x001C0000001C0000ull, 0x000C0000000C0000ull, 0xFFF0000000000000ull, 0x00000000200FFFFFull, 0x0000000000003800ull, 0x0000000000000000ull, 0x0000020000000060ull, 0x0000000000000000ull, 0x0FFF0FFF00000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x000000000F800000ull, 0x9FFFFFFF7FE00000ull, 0xBFFF000000000000ull, 0x0000000000000001ull, 0xFFF000000000001Full, 0x000FF8000000001Full, 0x00003FFE00000007ull, 0x000FFFC000000000ull, 0x00FFFFF000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x039021FFFFF70000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0xFBFFFFFFFFFFFFFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0001FFE21FFF0000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0003800000000000ull, 0x0000000000000000ull, 0x8000000000000000ull, 0x0000000000000000ull, 0xFFFFFFFF00000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000FC0000000000ull, 0x0000000000000000ull, 0x0000000006000000ull, }; return bitmask_table_1[(static_cast(cp) - 0x300ull) / 0x40ull] & (0x1ull << (static_cast(cp) % 0x40ull)); //# chunk summary: 1106 codepoints from 156 ranges (spanning a search area of 14332) } case 0x02: // [2] 72F8 - AAF3 { if (cp < U'\uA66F' || cp > U'\uAAEF') return false; constexpr ui64 bitmask_table_1[] = { 0x0001800000007FE1ull, 0x0000000000000000ull, 0x0000000000000006ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x21F0000010880000ull, 0x0000000000000000ull, 0x0000000000060000ull, 0xFFFE0000007FFFE0ull, 0x7F80000000010007ull, 0x0000001FFF000000ull, 0x00000000001E0000ull, 0x004000000003FFF0ull, 0xFC00000000000000ull, 0x00000000601000FFull, 0x0000000000007000ull, 0xF00000000005833Aull, 0x0000000000000001ull, }; return bitmask_table_1[(static_cast(cp) - 0xA66Full) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0xA66Full) % 0x40ull)); //# chunk summary: 137 codepoints from 28 ranges (spanning a search area of 14332) } case 0x03: return cp == U'\uAAF5' || cp == U'\uAAF6' || (cp >= U'\uABE3' && cp <= U'\uABEA') || cp == U'\uABEC' || cp == U'\uABED'; case 0x04: // [4] E2F0 - 11AEB { if (cp < U'\uFB1E' || cp > U'\U00011A99') return false; constexpr ui64 bitmask_table_1[] = { 0x0000000000000001ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0003FFFC00000000ull, 0x000000000003FFFCull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000080000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000004ull, 0x0000000000000000ull, 0x000000001F000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0003C1B800000000ull, 0x000000021C000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000180ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x00000000000003C0ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000006000ull, 0x0000000000000000ull, 0x0007FF0000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000001C00000000ull, 0x000001FFFC000000ull, 0x0000001E00000000ull, 0x000000001FFC0000ull, 0x0000001C00000000ull, 0x00000180007FFE00ull, 0x0000001C00200000ull, 0x00037807FFE00000ull, 0x0000000000000000ull, 0x0000000103FFC000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000003C00001FFEull, 0x0200E67F60000000ull, 0x00000000007C7F30ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x000001FFFF800000ull, 0x0000000000000001ull, 0x0000003FFFFC0000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0xC0000007FCFE0000ull, 0x0000000000000000ull, 0x00000007FFFC0000ull, 0x0000000000000000ull, 0x0000000003FFE000ull, 0x8000000000000000ull, 0x0000000000003FFFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x000000001FFFC000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x00000035E6FC0000ull, 0x0000000000000000ull, 0xF3F8000000000000ull, 0x00001FF800000047ull, 0x3FF80201EFE00000ull, 0x0FFFF00000000000ull, }; return bitmask_table_1[(static_cast(cp) - 0xFB1Eull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0xFB1Eull) % 0x40ull)); //# chunk summary: 402 codepoints from 63 ranges (spanning a search area of 14332) } case 0x05: // [5] 11AEC - 152E7 { if (cp < U'\U00011C2F' || cp > U'\U00011EF6') return false; constexpr ui64 bitmask_table_1[] = { 0x000000000001FEFFull, 0xFDFFFFF800000000ull, 0x00000000000000FFull, 0x0000000000000000ull, 0x00000000017F68FCull, 0x000001F6F8000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x00000000000000F0ull, }; return bitmask_table_1[(static_cast(cp) - 0x11C2Full) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0x11C2Full) % 0x40ull)); //# chunk summary: 85 codepoints from 13 ranges (spanning a search area of 14332) } case 0x06: // [6] 152E8 - 18AE3 { if (cp < U'\U00016AF0' || cp > U'\U00016FF1') return false; constexpr ui64 bitmask_table_1[] = { 0x000000000000001Full, 0x000000000000007Full, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0xFFFFFFFE80000000ull, 0x0000000780FFFFFFull, 0x0010000000000000ull, 0x0000000000000003ull, }; return bitmask_table_1[(static_cast(cp) - 0x16AF0ull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0x16AF0ull) % 0x40ull)); //# chunk summary: 75 codepoints from 7 ranges (spanning a search area of 14332) } case 0x07: return cp >= U'\U0001BC9D' && cp <= U'\U0001BC9E'; case 0x08: // [8] 1C2E0 - 1FADB { if (cp < U'\U0001D165' || cp > U'\U0001E94A') return false; constexpr ui64 bitmask_table_1[] = { 0x0000007F3FC03F1Full, 0x00000000000001E0ull, 0x0000000000000000ull, 0x00000000E0000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0xFFFFFFFFF8000000ull, 0xFFFFFFFFFFC3FFFFull, 0xF7C00000800100FFull, 0x00000000000007FFull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0xDFCFFFFBF8000000ull, 0x000000000000003Eull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x000000000003F800ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000780ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0003F80000000000ull, 0x0000000000000000ull, 0x0000003F80000000ull, }; return bitmask_table_1[(static_cast(cp) - 0x1D165ull) / 0x40ull] & (0x1ull << ((static_cast(cp) - 0x1D165ull) % 0x40ull)); //# chunk summary: 223 codepoints from 21 ranges (spanning a search area of 14332) } case 0x3F: return cp >= U'\U000E0100'; TOML_NO_DEFAULT_CASE; } //# chunk summary: 2282 codepoints from 293 ranges (spanning a search area of 917232) } #endif // TOML_LANG_UNRELEASED } TOML_IMPL_NAMESPACE_END #endif // !DOXYGEN