From ec5fc2ed85211ed2159d7e8a2aede79bccab79d8 Mon Sep 17 00:00:00 2001 From: Zach Laine Date: Tue, 30 Jan 2024 23:27:13 -0600 Subject: [PATCH] Turn detail::char_{set,subranges} into structs to fix MSVC build. --- .../boost/parser/detail/unicode_char_sets.hpp | 736 ++++++++++-------- include/boost/parser/parser.hpp | 30 +- include/boost/parser/parser_fwd.hpp | 6 +- test/CMakeLists.txt | 6 +- 4 files changed, 423 insertions(+), 355 deletions(-) diff --git a/include/boost/parser/detail/unicode_char_sets.hpp b/include/boost/parser/detail/unicode_char_sets.hpp index d6fedbc5..658abf36 100644 --- a/include/boost/parser/detail/unicode_char_sets.hpp +++ b/include/boost/parser/detail/unicode_char_sets.hpp @@ -6,6 +6,9 @@ #ifndef BOOST_PARSER_UNICODE_CHAR_SETS_HPP #define BOOST_PARSER_UNICODE_CHAR_SETS_HPP +#include + + namespace boost::parser::detail { // Produced from https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp, @@ -13,119 +16,139 @@ namespace boost::parser::detail { // using the categories found at // https://www.fileformat.info/info/unicode/category/index.htm template<> - inline constexpr uint32_t char_set[] = { - 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2A, 0x5B, 0x5C, 0x5D, 0x5F, 0x7B, 0x7D, 0x2C, - 0x2D, 0x2E, 0x2F, 0x3A, 0x3B, 0x3F, 0x40, 0xA1, - 0xA7, 0xAB, 0xB6, 0xB7, 0xBB, 0xBF, 0x37E, 0x387, - 0x55A, 0x55B, 0x55C, 0x55D, 0x55E, 0x55F, 0x589, 0x58A, - 0x5BE, 0x5C0, 0x5C3, 0x5C6, 0x5F3, 0x5F4, 0x609, 0x60A, - 0x60C, 0x60D, 0x61B, 0x61D, 0x61E, 0x61F, 0x66A, 0x66B, - 0x66C, 0x66D, 0x6D4, 0x700, 0x701, 0x702, 0x703, 0x704, - 0x705, 0x706, 0x707, 0x708, 0x709, 0x70A, 0x70B, 0x70C, - 0x70D, 0x7F7, 0x7F8, 0x7F9, 0x830, 0x831, 0x832, 0x833, - 0x834, 0x835, 0x836, 0x837, 0x838, 0x839, 0x83A, 0x83B, - 0x83C, 0x83D, 0x83E, 0x85E, 0x964, 0x965, 0x970, 0x9FD, - 0xA76, 0xAF0, 0xC77, 0xC84, 0xDF4, 0xE4F, 0xE5A, 0xE5B, - 0xF04, 0xF05, 0xF06, 0xF07, 0xFD3, 0xFD4, 0xF08, 0xF09, - 0xF0A, 0xF0B, 0xF0C, 0xF0D, 0xF0E, 0xF0F, 0xF10, 0xF11, - 0xF12, 0xF14, 0xF85, 0xFD0, 0xFD1, 0xFD2, 0xF3A, 0xF3B, - 0xF3C, 0xF3D, 0xFD9, 0xFDA, 0x104A, 0x104B, 0x104C, 0x104D, - 0x104E, 0x104F, 0x10FB, 0x1360, 0x1361, 0x1362, 0x1363, 0x1364, - 0x1365, 0x1366, 0x1367, 0x1368, 0x1400, 0x166E, 0x169B, 0x169C, - 0x16EB, 0x16EC, 0x16ED, 0x1735, 0x1736, 0x17D4, 0x17D5, 0x17D6, - 0x17D8, 0x17D9, 0x17DA, 0x1800, 0x1801, 0x1802, 0x1803, 0x1804, - 0x1805, 0x1806, 0x1807, 0x1808, 0x1809, 0x180A, 0x1944, 0x1945, - 0x1A1E, 0x1A1F, 0x1AA0, 0x1AA1, 0x1AA2, 0x1AA3, 0x1AA4, 0x1AA5, - 0x1AA6, 0x1AA8, 0x1AA9, 0x1AAA, 0x1AAB, 0x1AAC, 0x1AAD, 0x1B5A, - 0x1B5B, 0x1B5C, 0x1B5D, 0x1B5E, 0x1B5F, 0x1B60, 0x1B7D, 0x1B7E, - 0x1BFC, 0x1BFD, 0x1BFE, 0x1BFF, 0x1C3B, 0x1C3C, 0x1C3D, 0x1C3E, - 0x1C3F, 0x1C7E, 0x1C7F, 0x1CC0, 0x1CC1, 0x1CC2, 0x1CC3, 0x1CC4, - 0x1CC5, 0x1CC6, 0x1CC7, 0x1CD3, 0x2010, 0x2011, 0x2012, 0x2013, - 0x2014, 0x2015, 0x2016, 0x2017, 0x2020, 0x2021, 0x2022, 0x2023, - 0x2024, 0x2025, 0x2026, 0x2027, 0x2030, 0x2031, 0x2032, 0x2033, - 0x2034, 0x2035, 0x2036, 0x2037, 0x2038, 0x203B, 0x203D, 0x203E, - 0x203F, 0x2040, 0x2041, 0x2042, 0x2043, 0x204A, 0x204B, 0x204C, - 0x204D, 0x204E, 0x204F, 0x2050, 0x2051, 0x2053, 0x2054, 0x2055, - 0x2057, 0x2018, 0x2019, 0x201A, 0x201B, 0x201C, 0x201D, 0x201E, - 0x201F, 0x2039, 0x203A, 0x203C, 0x2047, 0x2048, 0x2049, 0x2045, - 0x2046, 0x2056, 0x2058, 0x2059, 0x205A, 0x205B, 0x205C, 0x205D, - 0x205E, 0x207D, 0x207E, 0x208D, 0x208E, 0x2308, 0x2309, 0x230A, - 0x230B, 0x2329, 0x232A, 0x2768, 0x2769, 0x276A, 0x276B, 0x276C, - 0x276D, 0x276E, 0x276F, 0x2770, 0x2771, 0x2772, 0x2773, 0x2774, - 0x2775, 0x27C5, 0x27C6, 0x27E6, 0x27E7, 0x27E8, 0x27E9, 0x27EA, - 0x27EB, 0x27EC, 0x27ED, 0x27EE, 0x27EF, 0x2983, 0x2984, 0x2985, - 0x2986, 0x2987, 0x2988, 0x2989, 0x298A, 0x298B, 0x298C, 0x2991, - 0x2992, 0x2993, 0x2994, 0x2995, 0x2996, 0x2997, 0x2998, 0x29FC, - 0x29FD, 0x298D, 0x298E, 0x298F, 0x2990, 0x29D8, 0x29D9, 0x29DA, - 0x29DB, 0x2CF9, 0x2CFA, 0x2CFB, 0x2CFC, 0x2CFE, 0x2CFF, 0x2D70, - 0x2E00, 0x2E01, 0x2E02, 0x2E03, 0x2E04, 0x2E05, 0x2E06, 0x2E07, - 0x2E08, 0x2E09, 0x2E0A, 0x2E0B, 0x2E0C, 0x2E0D, 0x2E0E, 0x2E0F, - 0x2E10, 0x2E11, 0x2E12, 0x2E13, 0x2E14, 0x2E15, 0x2E16, 0x2E17, - 0x2E18, 0x2E19, 0x2E1A, 0x2E1B, 0x2E1E, 0x2E1F, 0x2E1C, 0x2E1D, - 0x2E20, 0x2E21, 0x2E26, 0x2E27, 0x2E28, 0x2E29, 0x2E55, 0x2E56, - 0x2E57, 0x2E58, 0x2E22, 0x2E23, 0x2E24, 0x2E25, 0x2E2A, 0x2E2B, - 0x2E2C, 0x2E2D, 0x2E2E, 0x2E30, 0x2E31, 0x2E33, 0x2E34, 0x2E3F, - 0x2E4A, 0x2E4B, 0x2E4C, 0x2E4D, 0x2E4E, 0x2E4F, 0x2E52, 0x2E53, - 0x2E54, 0x2E32, 0x2E35, 0x2E36, 0x2E37, 0x2E38, 0x2E39, 0x2E3A, - 0x2E3B, 0x2E3C, 0x2E3D, 0x2E3E, 0x2E40, 0x2E41, 0x2E42, 0x2E43, - 0x2E44, 0x2E45, 0x2E46, 0x2E47, 0x2E48, 0x2E49, 0x2E59, 0x2E5A, - 0x2E5B, 0x2E5C, 0x2E5D, 0x3001, 0x3002, 0x3003, 0x3008, 0x3009, - 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, - 0x3014, 0x3015, 0x3016, 0x3017, 0x3018, 0x3019, 0x301A, 0x301B, - 0x301C, 0x301D, 0x301E, 0x301F, 0x3030, 0x303D, 0x30A0, 0x30FB, - 0xA4FE, 0xA4FF, 0xA60D, 0xA60E, 0xA60F, 0xA673, 0xA67E, 0xA6F2, - 0xA6F3, 0xA6F4, 0xA6F5, 0xA6F6, 0xA6F7, 0xA874, 0xA875, 0xA876, - 0xA877, 0xA8CE, 0xA8CF, 0xA8F8, 0xA8F9, 0xA8FA, 0xA8FC, 0xA92E, - 0xA92F, 0xA95F, 0xA9C1, 0xA9C2, 0xA9C3, 0xA9C4, 0xA9C5, 0xA9C6, - 0xA9C7, 0xA9C8, 0xA9C9, 0xA9CA, 0xA9CB, 0xA9CC, 0xA9CD, 0xA9DE, - 0xA9DF, 0xAA5C, 0xAA5D, 0xAA5E, 0xAA5F, 0xAADE, 0xAADF, 0xAAF0, - 0xAAF1, 0xABEB, 0xFD3E, 0xFD3F, 0xFE10, 0xFE11, 0xFE12, 0xFE13, - 0xFE14, 0xFE15, 0xFE16, 0xFE17, 0xFE18, 0xFE19, 0xFE30, 0xFE31, - 0xFE32, 0xFE33, 0xFE34, 0xFE35, 0xFE36, 0xFE37, 0xFE38, 0xFE39, - 0xFE3A, 0xFE3B, 0xFE3C, 0xFE3D, 0xFE3E, 0xFE3F, 0xFE40, 0xFE41, - 0xFE42, 0xFE43, 0xFE44, 0xFE47, 0xFE48, 0xFE45, 0xFE46, 0xFE49, - 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE50, 0xFE51, - 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE58, 0xFE59, 0xFE5A, - 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0xFE5F, 0xFE60, 0xFE61, 0xFE63, - 0xFE68, 0xFE6A, 0xFE6B, 0xFF01, 0xFF02, 0xFF03, 0xFF05, 0xFF06, - 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, - 0xFF1A, 0xFF1B, 0xFF1F, 0xFF20, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3F, - 0xFF5B, 0xFF5D, 0xFF5F, 0xFF60, 0xFF61, 0xFF62, 0xFF63, 0xFF64, - 0xFF65, 0x10100, 0x10101, 0x10102, 0x1039F, 0x103D0, 0x1056F, 0x10857, - 0x1091F, 0x1093F, 0x10A50, 0x10A51, 0x10A52, 0x10A53, 0x10A54, 0x10A55, - 0x10A56, 0x10A57, 0x10A58, 0x10A7F, 0x10AF0, 0x10AF1, 0x10AF2, 0x10AF3, - 0x10AF4, 0x10AF5, 0x10AF6, 0x10B39, 0x10B3A, 0x10B3B, 0x10B3C, 0x10B3D, - 0x10B3E, 0x10B3F, 0x10B99, 0x10B9A, 0x10B9B, 0x10B9C, 0x10EAD, 0x10F55, - 0x10F56, 0x10F57, 0x10F58, 0x10F59, 0x10F86, 0x10F87, 0x10F88, 0x10F89, - 0x11047, 0x11048, 0x11049, 0x1104A, 0x1104B, 0x1104C, 0x1104D, 0x110BB, - 0x110BC, 0x110BE, 0x110BF, 0x110C0, 0x110C1, 0x11140, 0x11141, 0x11142, - 0x11143, 0x11174, 0x11175, 0x111C5, 0x111C6, 0x111C7, 0x111C8, 0x111CD, - 0x111DB, 0x111DD, 0x111DE, 0x111DF, 0x11238, 0x11239, 0x1123A, 0x1123B, - 0x1123C, 0x1123D, 0x112A9, 0x1144B, 0x1144C, 0x1144D, 0x1144E, 0x1144F, - 0x1145A, 0x1145B, 0x1145D, 0x114C6, 0x115C1, 0x115C2, 0x115C3, 0x115C4, - 0x115C5, 0x115C6, 0x115C7, 0x115C8, 0x115C9, 0x115CA, 0x115CB, 0x115CC, - 0x115CD, 0x115CE, 0x115CF, 0x115D0, 0x115D1, 0x115D2, 0x115D3, 0x115D4, - 0x115D5, 0x115D6, 0x115D7, 0x11641, 0x11642, 0x11643, 0x11660, 0x11661, - 0x11662, 0x11663, 0x11664, 0x11665, 0x11666, 0x11667, 0x11668, 0x11669, - 0x1166A, 0x1166B, 0x1166C, 0x116B9, 0x1173C, 0x1173D, 0x1173E, 0x1183B, - 0x11944, 0x11945, 0x11946, 0x119E2, 0x11A3F, 0x11A40, 0x11A45, 0x11A46, - 0x11A41, 0x11A42, 0x11A43, 0x11A44, 0x11A9A, 0x11A9B, 0x11A9C, 0x11A9E, - 0x11A9F, 0x11AA0, 0x11AA1, 0x11AA2, 0x11B00, 0x11B01, 0x11B02, 0x11B03, - 0x11B04, 0x11B05, 0x11B06, 0x11B07, 0x11B08, 0x11B09, 0x11C41, 0x11C42, - 0x11C43, 0x11C44, 0x11C45, 0x11C70, 0x11C71, 0x11EF7, 0x11EF8, 0x11F43, - 0x11F44, 0x11F45, 0x11F46, 0x11F47, 0x11F48, 0x11F49, 0x11F4A, 0x11F4B, - 0x11F4C, 0x11F4D, 0x11F4E, 0x11F4F, 0x11FFF, 0x12470, 0x12471, 0x12472, - 0x12473, 0x12474, 0x12FF1, 0x12FF2, 0x16A6E, 0x16A6F, 0x16AF5, 0x16B37, - 0x16B38, 0x16B39, 0x16B3A, 0x16B3B, 0x16B44, 0x16E97, 0x16E98, 0x16E99, - 0x16E9A, 0x16FE2, 0x1BC9F, 0x1DA87, 0x1DA88, 0x1DA89, 0x1DA8A, 0x1DA8B, - 0x1E95E, 0x1E95F}; + struct char_set + { + static constexpr uint32_t chars[] = { + 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2A, 0x5B, 0x5C, 0x5D, 0x5F, 0x7B, + 0x7D, 0x2C, 0x2D, 0x2E, 0x2F, 0x3A, 0x3B, + 0x3F, 0x40, 0xA1, 0xA7, 0xAB, 0xB6, 0xB7, + 0xBB, 0xBF, 0x37E, 0x387, 0x55A, 0x55B, 0x55C, + 0x55D, 0x55E, 0x55F, 0x589, 0x58A, 0x5BE, 0x5C0, + 0x5C3, 0x5C6, 0x5F3, 0x5F4, 0x609, 0x60A, 0x60C, + 0x60D, 0x61B, 0x61D, 0x61E, 0x61F, 0x66A, 0x66B, + 0x66C, 0x66D, 0x6D4, 0x700, 0x701, 0x702, 0x703, + 0x704, 0x705, 0x706, 0x707, 0x708, 0x709, 0x70A, + 0x70B, 0x70C, 0x70D, 0x7F7, 0x7F8, 0x7F9, 0x830, + 0x831, 0x832, 0x833, 0x834, 0x835, 0x836, 0x837, + 0x838, 0x839, 0x83A, 0x83B, 0x83C, 0x83D, 0x83E, + 0x85E, 0x964, 0x965, 0x970, 0x9FD, 0xA76, 0xAF0, + 0xC77, 0xC84, 0xDF4, 0xE4F, 0xE5A, 0xE5B, 0xF04, + 0xF05, 0xF06, 0xF07, 0xFD3, 0xFD4, 0xF08, 0xF09, + 0xF0A, 0xF0B, 0xF0C, 0xF0D, 0xF0E, 0xF0F, 0xF10, + 0xF11, 0xF12, 0xF14, 0xF85, 0xFD0, 0xFD1, 0xFD2, + 0xF3A, 0xF3B, 0xF3C, 0xF3D, 0xFD9, 0xFDA, 0x104A, + 0x104B, 0x104C, 0x104D, 0x104E, 0x104F, 0x10FB, 0x1360, + 0x1361, 0x1362, 0x1363, 0x1364, 0x1365, 0x1366, 0x1367, + 0x1368, 0x1400, 0x166E, 0x169B, 0x169C, 0x16EB, 0x16EC, + 0x16ED, 0x1735, 0x1736, 0x17D4, 0x17D5, 0x17D6, 0x17D8, + 0x17D9, 0x17DA, 0x1800, 0x1801, 0x1802, 0x1803, 0x1804, + 0x1805, 0x1806, 0x1807, 0x1808, 0x1809, 0x180A, 0x1944, + 0x1945, 0x1A1E, 0x1A1F, 0x1AA0, 0x1AA1, 0x1AA2, 0x1AA3, + 0x1AA4, 0x1AA5, 0x1AA6, 0x1AA8, 0x1AA9, 0x1AAA, 0x1AAB, + 0x1AAC, 0x1AAD, 0x1B5A, 0x1B5B, 0x1B5C, 0x1B5D, 0x1B5E, + 0x1B5F, 0x1B60, 0x1B7D, 0x1B7E, 0x1BFC, 0x1BFD, 0x1BFE, + 0x1BFF, 0x1C3B, 0x1C3C, 0x1C3D, 0x1C3E, 0x1C3F, 0x1C7E, + 0x1C7F, 0x1CC0, 0x1CC1, 0x1CC2, 0x1CC3, 0x1CC4, 0x1CC5, + 0x1CC6, 0x1CC7, 0x1CD3, 0x2010, 0x2011, 0x2012, 0x2013, + 0x2014, 0x2015, 0x2016, 0x2017, 0x2020, 0x2021, 0x2022, + 0x2023, 0x2024, 0x2025, 0x2026, 0x2027, 0x2030, 0x2031, + 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037, 0x2038, + 0x203B, 0x203D, 0x203E, 0x203F, 0x2040, 0x2041, 0x2042, + 0x2043, 0x204A, 0x204B, 0x204C, 0x204D, 0x204E, 0x204F, + 0x2050, 0x2051, 0x2053, 0x2054, 0x2055, 0x2057, 0x2018, + 0x2019, 0x201A, 0x201B, 0x201C, 0x201D, 0x201E, 0x201F, + 0x2039, 0x203A, 0x203C, 0x2047, 0x2048, 0x2049, 0x2045, + 0x2046, 0x2056, 0x2058, 0x2059, 0x205A, 0x205B, 0x205C, + 0x205D, 0x205E, 0x207D, 0x207E, 0x208D, 0x208E, 0x2308, + 0x2309, 0x230A, 0x230B, 0x2329, 0x232A, 0x2768, 0x2769, + 0x276A, 0x276B, 0x276C, 0x276D, 0x276E, 0x276F, 0x2770, + 0x2771, 0x2772, 0x2773, 0x2774, 0x2775, 0x27C5, 0x27C6, + 0x27E6, 0x27E7, 0x27E8, 0x27E9, 0x27EA, 0x27EB, 0x27EC, + 0x27ED, 0x27EE, 0x27EF, 0x2983, 0x2984, 0x2985, 0x2986, + 0x2987, 0x2988, 0x2989, 0x298A, 0x298B, 0x298C, 0x2991, + 0x2992, 0x2993, 0x2994, 0x2995, 0x2996, 0x2997, 0x2998, + 0x29FC, 0x29FD, 0x298D, 0x298E, 0x298F, 0x2990, 0x29D8, + 0x29D9, 0x29DA, 0x29DB, 0x2CF9, 0x2CFA, 0x2CFB, 0x2CFC, + 0x2CFE, 0x2CFF, 0x2D70, 0x2E00, 0x2E01, 0x2E02, 0x2E03, + 0x2E04, 0x2E05, 0x2E06, 0x2E07, 0x2E08, 0x2E09, 0x2E0A, + 0x2E0B, 0x2E0C, 0x2E0D, 0x2E0E, 0x2E0F, 0x2E10, 0x2E11, + 0x2E12, 0x2E13, 0x2E14, 0x2E15, 0x2E16, 0x2E17, 0x2E18, + 0x2E19, 0x2E1A, 0x2E1B, 0x2E1E, 0x2E1F, 0x2E1C, 0x2E1D, + 0x2E20, 0x2E21, 0x2E26, 0x2E27, 0x2E28, 0x2E29, 0x2E55, + 0x2E56, 0x2E57, 0x2E58, 0x2E22, 0x2E23, 0x2E24, 0x2E25, + 0x2E2A, 0x2E2B, 0x2E2C, 0x2E2D, 0x2E2E, 0x2E30, 0x2E31, + 0x2E33, 0x2E34, 0x2E3F, 0x2E4A, 0x2E4B, 0x2E4C, 0x2E4D, + 0x2E4E, 0x2E4F, 0x2E52, 0x2E53, 0x2E54, 0x2E32, 0x2E35, + 0x2E36, 0x2E37, 0x2E38, 0x2E39, 0x2E3A, 0x2E3B, 0x2E3C, + 0x2E3D, 0x2E3E, 0x2E40, 0x2E41, 0x2E42, 0x2E43, 0x2E44, + 0x2E45, 0x2E46, 0x2E47, 0x2E48, 0x2E49, 0x2E59, 0x2E5A, + 0x2E5B, 0x2E5C, 0x2E5D, 0x3001, 0x3002, 0x3003, 0x3008, + 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, + 0x3010, 0x3011, 0x3014, 0x3015, 0x3016, 0x3017, 0x3018, + 0x3019, 0x301A, 0x301B, 0x301C, 0x301D, 0x301E, 0x301F, + 0x3030, 0x303D, 0x30A0, 0x30FB, 0xA4FE, 0xA4FF, 0xA60D, + 0xA60E, 0xA60F, 0xA673, 0xA67E, 0xA6F2, 0xA6F3, 0xA6F4, + 0xA6F5, 0xA6F6, 0xA6F7, 0xA874, 0xA875, 0xA876, 0xA877, + 0xA8CE, 0xA8CF, 0xA8F8, 0xA8F9, 0xA8FA, 0xA8FC, 0xA92E, + 0xA92F, 0xA95F, 0xA9C1, 0xA9C2, 0xA9C3, 0xA9C4, 0xA9C5, + 0xA9C6, 0xA9C7, 0xA9C8, 0xA9C9, 0xA9CA, 0xA9CB, 0xA9CC, + 0xA9CD, 0xA9DE, 0xA9DF, 0xAA5C, 0xAA5D, 0xAA5E, 0xAA5F, + 0xAADE, 0xAADF, 0xAAF0, 0xAAF1, 0xABEB, 0xFD3E, 0xFD3F, + 0xFE10, 0xFE11, 0xFE12, 0xFE13, 0xFE14, 0xFE15, 0xFE16, + 0xFE17, 0xFE18, 0xFE19, 0xFE30, 0xFE31, 0xFE32, 0xFE33, + 0xFE34, 0xFE35, 0xFE36, 0xFE37, 0xFE38, 0xFE39, 0xFE3A, + 0xFE3B, 0xFE3C, 0xFE3D, 0xFE3E, 0xFE3F, 0xFE40, 0xFE41, + 0xFE42, 0xFE43, 0xFE44, 0xFE47, 0xFE48, 0xFE45, 0xFE46, + 0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, + 0xFE50, 0xFE51, 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, + 0xFE58, 0xFE59, 0xFE5A, 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, + 0xFE5F, 0xFE60, 0xFE61, 0xFE63, 0xFE68, 0xFE6A, 0xFE6B, + 0xFF01, 0xFF02, 0xFF03, 0xFF05, 0xFF06, 0xFF07, 0xFF08, + 0xFF09, 0xFF0A, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 0xFF1A, + 0xFF1B, 0xFF1F, 0xFF20, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3F, + 0xFF5B, 0xFF5D, 0xFF5F, 0xFF60, 0xFF61, 0xFF62, 0xFF63, + 0xFF64, 0xFF65, 0x10100, 0x10101, 0x10102, 0x1039F, 0x103D0, + 0x1056F, 0x10857, 0x1091F, 0x1093F, 0x10A50, 0x10A51, 0x10A52, + 0x10A53, 0x10A54, 0x10A55, 0x10A56, 0x10A57, 0x10A58, 0x10A7F, + 0x10AF0, 0x10AF1, 0x10AF2, 0x10AF3, 0x10AF4, 0x10AF5, 0x10AF6, + 0x10B39, 0x10B3A, 0x10B3B, 0x10B3C, 0x10B3D, 0x10B3E, 0x10B3F, + 0x10B99, 0x10B9A, 0x10B9B, 0x10B9C, 0x10EAD, 0x10F55, 0x10F56, + 0x10F57, 0x10F58, 0x10F59, 0x10F86, 0x10F87, 0x10F88, 0x10F89, + 0x11047, 0x11048, 0x11049, 0x1104A, 0x1104B, 0x1104C, 0x1104D, + 0x110BB, 0x110BC, 0x110BE, 0x110BF, 0x110C0, 0x110C1, 0x11140, + 0x11141, 0x11142, 0x11143, 0x11174, 0x11175, 0x111C5, 0x111C6, + 0x111C7, 0x111C8, 0x111CD, 0x111DB, 0x111DD, 0x111DE, 0x111DF, + 0x11238, 0x11239, 0x1123A, 0x1123B, 0x1123C, 0x1123D, 0x112A9, + 0x1144B, 0x1144C, 0x1144D, 0x1144E, 0x1144F, 0x1145A, 0x1145B, + 0x1145D, 0x114C6, 0x115C1, 0x115C2, 0x115C3, 0x115C4, 0x115C5, + 0x115C6, 0x115C7, 0x115C8, 0x115C9, 0x115CA, 0x115CB, 0x115CC, + 0x115CD, 0x115CE, 0x115CF, 0x115D0, 0x115D1, 0x115D2, 0x115D3, + 0x115D4, 0x115D5, 0x115D6, 0x115D7, 0x11641, 0x11642, 0x11643, + 0x11660, 0x11661, 0x11662, 0x11663, 0x11664, 0x11665, 0x11666, + 0x11667, 0x11668, 0x11669, 0x1166A, 0x1166B, 0x1166C, 0x116B9, + 0x1173C, 0x1173D, 0x1173E, 0x1183B, 0x11944, 0x11945, 0x11946, + 0x119E2, 0x11A3F, 0x11A40, 0x11A45, 0x11A46, 0x11A41, 0x11A42, + 0x11A43, 0x11A44, 0x11A9A, 0x11A9B, 0x11A9C, 0x11A9E, 0x11A9F, + 0x11AA0, 0x11AA1, 0x11AA2, 0x11B00, 0x11B01, 0x11B02, 0x11B03, + 0x11B04, 0x11B05, 0x11B06, 0x11B07, 0x11B08, 0x11B09, 0x11C41, + 0x11C42, 0x11C43, 0x11C44, 0x11C45, 0x11C70, 0x11C71, 0x11EF7, + 0x11EF8, 0x11F43, 0x11F44, 0x11F45, 0x11F46, 0x11F47, 0x11F48, + 0x11F49, 0x11F4A, 0x11F4B, 0x11F4C, 0x11F4D, 0x11F4E, 0x11F4F, + 0x11FFF, 0x12470, 0x12471, 0x12472, 0x12473, 0x12474, 0x12FF1, + 0x12FF2, 0x16A6E, 0x16A6F, 0x16AF5, 0x16B37, 0x16B38, 0x16B39, + 0x16B3A, 0x16B3B, 0x16B44, 0x16E97, 0x16E98, 0x16E99, 0x16E9A, + 0x16FE2, 0x1BC9F, 0x1DA87, 0x1DA88, 0x1DA89, 0x1DA8A, 0x1DA8B, + 0x1E95E, 0x1E95F}; + }; // Produced from https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp, // using "[:Ll:]" for the Input field, using the categories found at // https://www.fileformat.info/info/unicode/category/index.htm template<> - inline constexpr uint32_t char_set[] = { + struct char_set + { + static constexpr uint32_t chars[] = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, @@ -406,241 +429,278 @@ namespace boost::parser::detail { 0x1E933, 0x1E934, 0x1E935, 0x1E936, 0x1E937, 0x1E938, 0x1E939, 0x1E93A, 0x1E93B, 0x1E93C, 0x1E93D, 0x1E93E, 0x1E93F, 0x1E940, 0x1E941, 0x1E942, 0x1E943}; + }; // Produced from https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp, // using "[:Lu:]" for the Input field, using the categories found at // https://www.fileformat.info/info/unicode/category/index.htm template<> - inline constexpr uint32_t char_set[] = { - 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, - 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, - 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, - 0x59, 0x5A, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, - 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, - 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, - 0xD6, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, - 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, - 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, - 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, - 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, - 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, - 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, - 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, - 0x172, 0x174, 0x176, 0x178, 0x179, 0x17B, 0x17D, 0x181, - 0x182, 0x184, 0x186, 0x187, 0x189, 0x18A, 0x18B, 0x18E, - 0x18F, 0x190, 0x191, 0x193, 0x194, 0x196, 0x197, 0x198, - 0x19C, 0x19D, 0x19F, 0x1A0, 0x1A2, 0x1A4, 0x1A6, 0x1A7, - 0x1A9, 0x1AC, 0x1AE, 0x1AF, 0x1B1, 0x1B2, 0x1B3, 0x1B5, - 0x1B7, 0x1B8, 0x1BC, 0x1C4, 0x1C7, 0x1CA, 0x1CD, 0x1CF, - 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, - 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F1, - 0x1F4, 0x1F6, 0x1F7, 0x1F8, 0x1FA, 0x1FC, 0x1FE, 0x200, - 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, - 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, - 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, - 0x232, 0x23A, 0x23B, 0x23D, 0x23E, 0x241, 0x243, 0x244, - 0x245, 0x246, 0x248, 0x24A, 0x24C, 0x24E, 0x370, 0x372, - 0x376, 0x37F, 0x386, 0x388, 0x389, 0x38A, 0x38C, 0x38E, - 0x38F, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, - 0x398, 0x399, 0x39A, 0x39B, 0x39C, 0x39D, 0x39E, 0x39F, - 0x3A0, 0x3A1, 0x3A3, 0x3A4, 0x3A5, 0x3A6, 0x3A7, 0x3A8, - 0x3A9, 0x3AA, 0x3AB, 0x3CF, 0x3D2, 0x3D3, 0x3D4, 0x3D8, - 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, - 0x3EA, 0x3EC, 0x3EE, 0x3F4, 0x3F7, 0x3F9, 0x3FA, 0x3FD, - 0x3FE, 0x3FF, 0x400, 0x401, 0x402, 0x403, 0x404, 0x405, - 0x406, 0x407, 0x408, 0x409, 0x40A, 0x40B, 0x40C, 0x40D, - 0x40E, 0x40F, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, - 0x416, 0x417, 0x418, 0x419, 0x41A, 0x41B, 0x41C, 0x41D, - 0x41E, 0x41F, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, - 0x426, 0x427, 0x428, 0x429, 0x42A, 0x42B, 0x42C, 0x42D, - 0x42E, 0x42F, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, - 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, - 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, - 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, - 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, - 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C0, 0x4C1, - 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, - 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, - 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, - 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, - 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, - 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, - 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x531, 0x532, - 0x533, 0x534, 0x535, 0x536, 0x537, 0x538, 0x539, 0x53A, - 0x53B, 0x53C, 0x53D, 0x53E, 0x53F, 0x540, 0x541, 0x542, - 0x543, 0x544, 0x545, 0x546, 0x547, 0x548, 0x549, 0x54A, - 0x54B, 0x54C, 0x54D, 0x54E, 0x54F, 0x550, 0x551, 0x552, - 0x553, 0x554, 0x555, 0x556, 0x10A0, 0x10A1, 0x10A2, 0x10A3, - 0x10A4, 0x10A5, 0x10A6, 0x10A7, 0x10A8, 0x10A9, 0x10AA, 0x10AB, - 0x10AC, 0x10AD, 0x10AE, 0x10AF, 0x10B0, 0x10B1, 0x10B2, 0x10B3, - 0x10B4, 0x10B5, 0x10B6, 0x10B7, 0x10B8, 0x10B9, 0x10BA, 0x10BB, - 0x10BC, 0x10BD, 0x10BE, 0x10BF, 0x10C0, 0x10C1, 0x10C2, 0x10C3, - 0x10C4, 0x10C5, 0x10C7, 0x10CD, 0x13A0, 0x13A1, 0x13A2, 0x13A3, - 0x13A4, 0x13A5, 0x13A6, 0x13A7, 0x13A8, 0x13A9, 0x13AA, 0x13AB, - 0x13AC, 0x13AD, 0x13AE, 0x13AF, 0x13B0, 0x13B1, 0x13B2, 0x13B3, - 0x13B4, 0x13B5, 0x13B6, 0x13B7, 0x13B8, 0x13B9, 0x13BA, 0x13BB, - 0x13BC, 0x13BD, 0x13BE, 0x13BF, 0x13C0, 0x13C1, 0x13C2, 0x13C3, - 0x13C4, 0x13C5, 0x13C6, 0x13C7, 0x13C8, 0x13C9, 0x13CA, 0x13CB, - 0x13CC, 0x13CD, 0x13CE, 0x13CF, 0x13D0, 0x13D1, 0x13D2, 0x13D3, - 0x13D4, 0x13D5, 0x13D6, 0x13D7, 0x13D8, 0x13D9, 0x13DA, 0x13DB, - 0x13DC, 0x13DD, 0x13DE, 0x13DF, 0x13E0, 0x13E1, 0x13E2, 0x13E3, - 0x13E4, 0x13E5, 0x13E6, 0x13E7, 0x13E8, 0x13E9, 0x13EA, 0x13EB, - 0x13EC, 0x13ED, 0x13EE, 0x13EF, 0x13F0, 0x13F1, 0x13F2, 0x13F3, - 0x13F4, 0x13F5, 0x1C90, 0x1C91, 0x1C92, 0x1C93, 0x1C94, 0x1C95, - 0x1C96, 0x1C97, 0x1C98, 0x1C99, 0x1C9A, 0x1C9B, 0x1C9C, 0x1C9D, - 0x1C9E, 0x1C9F, 0x1CA0, 0x1CA1, 0x1CA2, 0x1CA3, 0x1CA4, 0x1CA5, - 0x1CA6, 0x1CA7, 0x1CA8, 0x1CA9, 0x1CAA, 0x1CAB, 0x1CAC, 0x1CAD, - 0x1CAE, 0x1CAF, 0x1CB0, 0x1CB1, 0x1CB2, 0x1CB3, 0x1CB4, 0x1CB5, - 0x1CB6, 0x1CB7, 0x1CB8, 0x1CB9, 0x1CBA, 0x1CBD, 0x1CBE, 0x1CBF, - 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, - 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, - 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, - 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, - 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, - 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, - 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, - 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, - 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, - 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, - 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, - 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, - 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, - 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, - 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, - 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F08, 0x1F09, 0x1F0A, 0x1F0B, - 0x1F0C, 0x1F0D, 0x1F0E, 0x1F0F, 0x1F18, 0x1F19, 0x1F1A, 0x1F1B, - 0x1F1C, 0x1F1D, 0x1F28, 0x1F29, 0x1F2A, 0x1F2B, 0x1F2C, 0x1F2D, - 0x1F2E, 0x1F2F, 0x1F38, 0x1F39, 0x1F3A, 0x1F3B, 0x1F3C, 0x1F3D, - 0x1F3E, 0x1F3F, 0x1F48, 0x1F49, 0x1F4A, 0x1F4B, 0x1F4C, 0x1F4D, - 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x1F68, 0x1F69, 0x1F6A, 0x1F6B, - 0x1F6C, 0x1F6D, 0x1F6E, 0x1F6F, 0x1FB8, 0x1FB9, 0x1FBA, 0x1FBB, - 0x1FC8, 0x1FC9, 0x1FCA, 0x1FCB, 0x1FD8, 0x1FD9, 0x1FDA, 0x1FDB, - 0x1FE8, 0x1FE9, 0x1FEA, 0x1FEB, 0x1FEC, 0x1FF8, 0x1FF9, 0x1FFA, - 0x1FFB, 0x2102, 0x2107, 0x210B, 0x210C, 0x210D, 0x2110, 0x2111, - 0x2112, 0x2115, 0x2119, 0x211A, 0x211B, 0x211C, 0x211D, 0x2124, - 0x2126, 0x2128, 0x212A, 0x212B, 0x212C, 0x212D, 0x2130, 0x2131, - 0x2132, 0x2133, 0x213E, 0x213F, 0x2145, 0x2183, 0x2C00, 0x2C01, - 0x2C02, 0x2C03, 0x2C04, 0x2C05, 0x2C06, 0x2C07, 0x2C08, 0x2C09, - 0x2C0A, 0x2C0B, 0x2C0C, 0x2C0D, 0x2C0E, 0x2C0F, 0x2C10, 0x2C11, - 0x2C12, 0x2C13, 0x2C14, 0x2C15, 0x2C16, 0x2C17, 0x2C18, 0x2C19, - 0x2C1A, 0x2C1B, 0x2C1C, 0x2C1D, 0x2C1E, 0x2C1F, 0x2C20, 0x2C21, - 0x2C22, 0x2C23, 0x2C24, 0x2C25, 0x2C26, 0x2C27, 0x2C28, 0x2C29, - 0x2C2A, 0x2C2B, 0x2C2C, 0x2C2D, 0x2C2E, 0x2C2F, 0x2C60, 0x2C62, - 0x2C63, 0x2C64, 0x2C67, 0x2C69, 0x2C6B, 0x2C6D, 0x2C6E, 0x2C6F, - 0x2C70, 0x2C72, 0x2C75, 0x2C7E, 0x2C7F, 0x2C80, 0x2C82, 0x2C84, - 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, - 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, - 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, - 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, - 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, - 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, - 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, - 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, - 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, - 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, - 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, - 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, - 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, - 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, - 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, - 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA77D, - 0xA77E, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, - 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, - 0xA7A4, 0xA7A6, 0xA7A8, 0xA7AA, 0xA7AB, 0xA7AC, 0xA7AD, 0xA7AE, - 0xA7B0, 0xA7B1, 0xA7B2, 0xA7B3, 0xA7B4, 0xA7B6, 0xA7B8, 0xA7BA, - 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C4, 0xA7C5, 0xA7C6, 0xA7C7, - 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5, 0xFF21, 0xFF22, 0xFF23, - 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, - 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, - 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0x10400, - 0x10401, 0x10402, 0x10403, 0x10404, 0x10405, 0x10406, 0x10407, 0x10408, - 0x10409, 0x1040A, 0x1040B, 0x1040C, 0x1040D, 0x1040E, 0x1040F, 0x10410, - 0x10411, 0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417, 0x10418, - 0x10419, 0x1041A, 0x1041B, 0x1041C, 0x1041D, 0x1041E, 0x1041F, 0x10420, - 0x10421, 0x10422, 0x10423, 0x10424, 0x10425, 0x10426, 0x10427, 0x104B0, - 0x104B1, 0x104B2, 0x104B3, 0x104B4, 0x104B5, 0x104B6, 0x104B7, 0x104B8, - 0x104B9, 0x104BA, 0x104BB, 0x104BC, 0x104BD, 0x104BE, 0x104BF, 0x104C0, - 0x104C1, 0x104C2, 0x104C3, 0x104C4, 0x104C5, 0x104C6, 0x104C7, 0x104C8, - 0x104C9, 0x104CA, 0x104CB, 0x104CC, 0x104CD, 0x104CE, 0x104CF, 0x104D0, - 0x104D1, 0x104D2, 0x104D3, 0x10570, 0x10571, 0x10572, 0x10573, 0x10574, - 0x10575, 0x10576, 0x10577, 0x10578, 0x10579, 0x1057A, 0x1057C, 0x1057D, - 0x1057E, 0x1057F, 0x10580, 0x10581, 0x10582, 0x10583, 0x10584, 0x10585, - 0x10586, 0x10587, 0x10588, 0x10589, 0x1058A, 0x1058C, 0x1058D, 0x1058E, - 0x1058F, 0x10590, 0x10591, 0x10592, 0x10594, 0x10595, 0x10C80, 0x10C81, - 0x10C82, 0x10C83, 0x10C84, 0x10C85, 0x10C86, 0x10C87, 0x10C88, 0x10C89, - 0x10C8A, 0x10C8B, 0x10C8C, 0x10C8D, 0x10C8E, 0x10C8F, 0x10C90, 0x10C91, - 0x10C92, 0x10C93, 0x10C94, 0x10C95, 0x10C96, 0x10C97, 0x10C98, 0x10C99, - 0x10C9A, 0x10C9B, 0x10C9C, 0x10C9D, 0x10C9E, 0x10C9F, 0x10CA0, 0x10CA1, - 0x10CA2, 0x10CA3, 0x10CA4, 0x10CA5, 0x10CA6, 0x10CA7, 0x10CA8, 0x10CA9, - 0x10CAA, 0x10CAB, 0x10CAC, 0x10CAD, 0x10CAE, 0x10CAF, 0x10CB0, 0x10CB1, - 0x10CB2, 0x118A0, 0x118A1, 0x118A2, 0x118A3, 0x118A4, 0x118A5, 0x118A6, - 0x118A7, 0x118A8, 0x118A9, 0x118AA, 0x118AB, 0x118AC, 0x118AD, 0x118AE, - 0x118AF, 0x118B0, 0x118B1, 0x118B2, 0x118B3, 0x118B4, 0x118B5, 0x118B6, - 0x118B7, 0x118B8, 0x118B9, 0x118BA, 0x118BB, 0x118BC, 0x118BD, 0x118BE, - 0x118BF, 0x16E40, 0x16E41, 0x16E42, 0x16E43, 0x16E44, 0x16E45, 0x16E46, - 0x16E47, 0x16E48, 0x16E49, 0x16E4A, 0x16E4B, 0x16E4C, 0x16E4D, 0x16E4E, - 0x16E4F, 0x16E50, 0x16E51, 0x16E52, 0x16E53, 0x16E54, 0x16E55, 0x16E56, - 0x16E57, 0x16E58, 0x16E59, 0x16E5A, 0x16E5B, 0x16E5C, 0x16E5D, 0x16E5E, - 0x16E5F, 0x1D400, 0x1D401, 0x1D402, 0x1D403, 0x1D404, 0x1D405, 0x1D406, - 0x1D407, 0x1D408, 0x1D409, 0x1D40A, 0x1D40B, 0x1D40C, 0x1D40D, 0x1D40E, - 0x1D40F, 0x1D410, 0x1D411, 0x1D412, 0x1D413, 0x1D414, 0x1D415, 0x1D416, - 0x1D417, 0x1D418, 0x1D419, 0x1D434, 0x1D435, 0x1D436, 0x1D437, 0x1D438, - 0x1D439, 0x1D43A, 0x1D43B, 0x1D43C, 0x1D43D, 0x1D43E, 0x1D43F, 0x1D440, - 0x1D441, 0x1D442, 0x1D443, 0x1D444, 0x1D445, 0x1D446, 0x1D447, 0x1D448, - 0x1D449, 0x1D44A, 0x1D44B, 0x1D44C, 0x1D44D, 0x1D468, 0x1D469, 0x1D46A, - 0x1D46B, 0x1D46C, 0x1D46D, 0x1D46E, 0x1D46F, 0x1D470, 0x1D471, 0x1D472, - 0x1D473, 0x1D474, 0x1D475, 0x1D476, 0x1D477, 0x1D478, 0x1D479, 0x1D47A, - 0x1D47B, 0x1D47C, 0x1D47D, 0x1D47E, 0x1D47F, 0x1D480, 0x1D481, 0x1D49C, - 0x1D49E, 0x1D49F, 0x1D4A2, 0x1D4A5, 0x1D4A6, 0x1D4A9, 0x1D4AA, 0x1D4AB, - 0x1D4AC, 0x1D4AE, 0x1D4AF, 0x1D4B0, 0x1D4B1, 0x1D4B2, 0x1D4B3, 0x1D4B4, - 0x1D4B5, 0x1D4D0, 0x1D4D1, 0x1D4D2, 0x1D4D3, 0x1D4D4, 0x1D4D5, 0x1D4D6, - 0x1D4D7, 0x1D4D8, 0x1D4D9, 0x1D4DA, 0x1D4DB, 0x1D4DC, 0x1D4DD, 0x1D4DE, - 0x1D4DF, 0x1D4E0, 0x1D4E1, 0x1D4E2, 0x1D4E3, 0x1D4E4, 0x1D4E5, 0x1D4E6, - 0x1D4E7, 0x1D4E8, 0x1D4E9, 0x1D504, 0x1D505, 0x1D507, 0x1D508, 0x1D509, - 0x1D50A, 0x1D50D, 0x1D50E, 0x1D50F, 0x1D510, 0x1D511, 0x1D512, 0x1D513, - 0x1D514, 0x1D516, 0x1D517, 0x1D518, 0x1D519, 0x1D51A, 0x1D51B, 0x1D51C, - 0x1D538, 0x1D539, 0x1D53B, 0x1D53C, 0x1D53D, 0x1D53E, 0x1D540, 0x1D541, - 0x1D542, 0x1D543, 0x1D544, 0x1D546, 0x1D54A, 0x1D54B, 0x1D54C, 0x1D54D, - 0x1D54E, 0x1D54F, 0x1D550, 0x1D56C, 0x1D56D, 0x1D56E, 0x1D56F, 0x1D570, - 0x1D571, 0x1D572, 0x1D573, 0x1D574, 0x1D575, 0x1D576, 0x1D577, 0x1D578, - 0x1D579, 0x1D57A, 0x1D57B, 0x1D57C, 0x1D57D, 0x1D57E, 0x1D57F, 0x1D580, - 0x1D581, 0x1D582, 0x1D583, 0x1D584, 0x1D585, 0x1D5A0, 0x1D5A1, 0x1D5A2, - 0x1D5A3, 0x1D5A4, 0x1D5A5, 0x1D5A6, 0x1D5A7, 0x1D5A8, 0x1D5A9, 0x1D5AA, - 0x1D5AB, 0x1D5AC, 0x1D5AD, 0x1D5AE, 0x1D5AF, 0x1D5B0, 0x1D5B1, 0x1D5B2, - 0x1D5B3, 0x1D5B4, 0x1D5B5, 0x1D5B6, 0x1D5B7, 0x1D5B8, 0x1D5B9, 0x1D5D4, - 0x1D5D5, 0x1D5D6, 0x1D5D7, 0x1D5D8, 0x1D5D9, 0x1D5DA, 0x1D5DB, 0x1D5DC, - 0x1D5DD, 0x1D5DE, 0x1D5DF, 0x1D5E0, 0x1D5E1, 0x1D5E2, 0x1D5E3, 0x1D5E4, - 0x1D5E5, 0x1D5E6, 0x1D5E7, 0x1D5E8, 0x1D5E9, 0x1D5EA, 0x1D5EB, 0x1D5EC, - 0x1D5ED, 0x1D608, 0x1D609, 0x1D60A, 0x1D60B, 0x1D60C, 0x1D60D, 0x1D60E, - 0x1D60F, 0x1D610, 0x1D611, 0x1D612, 0x1D613, 0x1D614, 0x1D615, 0x1D616, - 0x1D617, 0x1D618, 0x1D619, 0x1D61A, 0x1D61B, 0x1D61C, 0x1D61D, 0x1D61E, - 0x1D61F, 0x1D620, 0x1D621, 0x1D63C, 0x1D63D, 0x1D63E, 0x1D63F, 0x1D640, - 0x1D641, 0x1D642, 0x1D643, 0x1D644, 0x1D645, 0x1D646, 0x1D647, 0x1D648, - 0x1D649, 0x1D64A, 0x1D64B, 0x1D64C, 0x1D64D, 0x1D64E, 0x1D64F, 0x1D650, - 0x1D651, 0x1D652, 0x1D653, 0x1D654, 0x1D655, 0x1D670, 0x1D671, 0x1D672, - 0x1D673, 0x1D674, 0x1D675, 0x1D676, 0x1D677, 0x1D678, 0x1D679, 0x1D67A, - 0x1D67B, 0x1D67C, 0x1D67D, 0x1D67E, 0x1D67F, 0x1D680, 0x1D681, 0x1D682, - 0x1D683, 0x1D684, 0x1D685, 0x1D686, 0x1D687, 0x1D688, 0x1D689, 0x1D6A8, - 0x1D6A9, 0x1D6AA, 0x1D6AB, 0x1D6AC, 0x1D6AD, 0x1D6AE, 0x1D6AF, 0x1D6B0, - 0x1D6B1, 0x1D6B2, 0x1D6B3, 0x1D6B4, 0x1D6B5, 0x1D6B6, 0x1D6B7, 0x1D6B8, - 0x1D6B9, 0x1D6BA, 0x1D6BB, 0x1D6BC, 0x1D6BD, 0x1D6BE, 0x1D6BF, 0x1D6C0, - 0x1D6E2, 0x1D6E3, 0x1D6E4, 0x1D6E5, 0x1D6E6, 0x1D6E7, 0x1D6E8, 0x1D6E9, - 0x1D6EA, 0x1D6EB, 0x1D6EC, 0x1D6ED, 0x1D6EE, 0x1D6EF, 0x1D6F0, 0x1D6F1, - 0x1D6F2, 0x1D6F3, 0x1D6F4, 0x1D6F5, 0x1D6F6, 0x1D6F7, 0x1D6F8, 0x1D6F9, - 0x1D6FA, 0x1D71C, 0x1D71D, 0x1D71E, 0x1D71F, 0x1D720, 0x1D721, 0x1D722, - 0x1D723, 0x1D724, 0x1D725, 0x1D726, 0x1D727, 0x1D728, 0x1D729, 0x1D72A, - 0x1D72B, 0x1D72C, 0x1D72D, 0x1D72E, 0x1D72F, 0x1D730, 0x1D731, 0x1D732, - 0x1D733, 0x1D734, 0x1D756, 0x1D757, 0x1D758, 0x1D759, 0x1D75A, 0x1D75B, - 0x1D75C, 0x1D75D, 0x1D75E, 0x1D75F, 0x1D760, 0x1D761, 0x1D762, 0x1D763, - 0x1D764, 0x1D765, 0x1D766, 0x1D767, 0x1D768, 0x1D769, 0x1D76A, 0x1D76B, - 0x1D76C, 0x1D76D, 0x1D76E, 0x1D790, 0x1D791, 0x1D792, 0x1D793, 0x1D794, - 0x1D795, 0x1D796, 0x1D797, 0x1D798, 0x1D799, 0x1D79A, 0x1D79B, 0x1D79C, - 0x1D79D, 0x1D79E, 0x1D79F, 0x1D7A0, 0x1D7A1, 0x1D7A2, 0x1D7A3, 0x1D7A4, - 0x1D7A5, 0x1D7A6, 0x1D7A7, 0x1D7A8, 0x1D7CA, 0x1E900, 0x1E901, 0x1E902, - 0x1E903, 0x1E904, 0x1E905, 0x1E906, 0x1E907, 0x1E908, 0x1E909, 0x1E90A, - 0x1E90B, 0x1E90C, 0x1E90D, 0x1E90E, 0x1E90F, 0x1E910, 0x1E911, 0x1E912, - 0x1E913, 0x1E914, 0x1E915, 0x1E916, 0x1E917, 0x1E918, 0x1E919, 0x1E91A, - 0x1E91B, 0x1E91C, 0x1E91D, 0x1E91E, 0x1E91F, 0x1E920, 0x1E921}; + struct char_set + { + static constexpr uint32_t chars[] = { + 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, + 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5A, 0xC0, 0xC1, + 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, + 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, + 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, + 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, + 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, + 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, + 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, + 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, + 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, + 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, + 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, + 0x172, 0x174, 0x176, 0x178, 0x179, 0x17B, 0x17D, + 0x181, 0x182, 0x184, 0x186, 0x187, 0x189, 0x18A, + 0x18B, 0x18E, 0x18F, 0x190, 0x191, 0x193, 0x194, + 0x196, 0x197, 0x198, 0x19C, 0x19D, 0x19F, 0x1A0, + 0x1A2, 0x1A4, 0x1A6, 0x1A7, 0x1A9, 0x1AC, 0x1AE, + 0x1AF, 0x1B1, 0x1B2, 0x1B3, 0x1B5, 0x1B7, 0x1B8, + 0x1BC, 0x1C4, 0x1C7, 0x1CA, 0x1CD, 0x1CF, 0x1D1, + 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, + 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, + 0x1F1, 0x1F4, 0x1F6, 0x1F7, 0x1F8, 0x1FA, 0x1FC, + 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, + 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, + 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, + 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x23A, + 0x23B, 0x23D, 0x23E, 0x241, 0x243, 0x244, 0x245, + 0x246, 0x248, 0x24A, 0x24C, 0x24E, 0x370, 0x372, + 0x376, 0x37F, 0x386, 0x388, 0x389, 0x38A, 0x38C, + 0x38E, 0x38F, 0x391, 0x392, 0x393, 0x394, 0x395, + 0x396, 0x397, 0x398, 0x399, 0x39A, 0x39B, 0x39C, + 0x39D, 0x39E, 0x39F, 0x3A0, 0x3A1, 0x3A3, 0x3A4, + 0x3A5, 0x3A6, 0x3A7, 0x3A8, 0x3A9, 0x3AA, 0x3AB, + 0x3CF, 0x3D2, 0x3D3, 0x3D4, 0x3D8, 0x3DA, 0x3DC, + 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, + 0x3EC, 0x3EE, 0x3F4, 0x3F7, 0x3F9, 0x3FA, 0x3FD, + 0x3FE, 0x3FF, 0x400, 0x401, 0x402, 0x403, 0x404, + 0x405, 0x406, 0x407, 0x408, 0x409, 0x40A, 0x40B, + 0x40C, 0x40D, 0x40E, 0x40F, 0x410, 0x411, 0x412, + 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, + 0x41A, 0x41B, 0x41C, 0x41D, 0x41E, 0x41F, 0x420, + 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, + 0x428, 0x429, 0x42A, 0x42B, 0x42C, 0x42D, 0x42E, + 0x42F, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, + 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, + 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, + 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, + 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, + 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, + 0x4BA, 0x4BC, 0x4BE, 0x4C0, 0x4C1, 0x4C3, 0x4C5, + 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, + 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, + 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, + 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, + 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, + 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, + 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, + 0x52A, 0x52C, 0x52E, 0x531, 0x532, 0x533, 0x534, + 0x535, 0x536, 0x537, 0x538, 0x539, 0x53A, 0x53B, + 0x53C, 0x53D, 0x53E, 0x53F, 0x540, 0x541, 0x542, + 0x543, 0x544, 0x545, 0x546, 0x547, 0x548, 0x549, + 0x54A, 0x54B, 0x54C, 0x54D, 0x54E, 0x54F, 0x550, + 0x551, 0x552, 0x553, 0x554, 0x555, 0x556, 0x10A0, + 0x10A1, 0x10A2, 0x10A3, 0x10A4, 0x10A5, 0x10A6, 0x10A7, + 0x10A8, 0x10A9, 0x10AA, 0x10AB, 0x10AC, 0x10AD, 0x10AE, + 0x10AF, 0x10B0, 0x10B1, 0x10B2, 0x10B3, 0x10B4, 0x10B5, + 0x10B6, 0x10B7, 0x10B8, 0x10B9, 0x10BA, 0x10BB, 0x10BC, + 0x10BD, 0x10BE, 0x10BF, 0x10C0, 0x10C1, 0x10C2, 0x10C3, + 0x10C4, 0x10C5, 0x10C7, 0x10CD, 0x13A0, 0x13A1, 0x13A2, + 0x13A3, 0x13A4, 0x13A5, 0x13A6, 0x13A7, 0x13A8, 0x13A9, + 0x13AA, 0x13AB, 0x13AC, 0x13AD, 0x13AE, 0x13AF, 0x13B0, + 0x13B1, 0x13B2, 0x13B3, 0x13B4, 0x13B5, 0x13B6, 0x13B7, + 0x13B8, 0x13B9, 0x13BA, 0x13BB, 0x13BC, 0x13BD, 0x13BE, + 0x13BF, 0x13C0, 0x13C1, 0x13C2, 0x13C3, 0x13C4, 0x13C5, + 0x13C6, 0x13C7, 0x13C8, 0x13C9, 0x13CA, 0x13CB, 0x13CC, + 0x13CD, 0x13CE, 0x13CF, 0x13D0, 0x13D1, 0x13D2, 0x13D3, + 0x13D4, 0x13D5, 0x13D6, 0x13D7, 0x13D8, 0x13D9, 0x13DA, + 0x13DB, 0x13DC, 0x13DD, 0x13DE, 0x13DF, 0x13E0, 0x13E1, + 0x13E2, 0x13E3, 0x13E4, 0x13E5, 0x13E6, 0x13E7, 0x13E8, + 0x13E9, 0x13EA, 0x13EB, 0x13EC, 0x13ED, 0x13EE, 0x13EF, + 0x13F0, 0x13F1, 0x13F2, 0x13F3, 0x13F4, 0x13F5, 0x1C90, + 0x1C91, 0x1C92, 0x1C93, 0x1C94, 0x1C95, 0x1C96, 0x1C97, + 0x1C98, 0x1C99, 0x1C9A, 0x1C9B, 0x1C9C, 0x1C9D, 0x1C9E, + 0x1C9F, 0x1CA0, 0x1CA1, 0x1CA2, 0x1CA3, 0x1CA4, 0x1CA5, + 0x1CA6, 0x1CA7, 0x1CA8, 0x1CA9, 0x1CAA, 0x1CAB, 0x1CAC, + 0x1CAD, 0x1CAE, 0x1CAF, 0x1CB0, 0x1CB1, 0x1CB2, 0x1CB3, + 0x1CB4, 0x1CB5, 0x1CB6, 0x1CB7, 0x1CB8, 0x1CB9, 0x1CBA, + 0x1CBD, 0x1CBE, 0x1CBF, 0x1E00, 0x1E02, 0x1E04, 0x1E06, + 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, + 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, + 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, + 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, + 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, + 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, + 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, + 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, + 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, + 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, + 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, + 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, + 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, + 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, + 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, + 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, + 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, + 0x1EFE, 0x1F08, 0x1F09, 0x1F0A, 0x1F0B, 0x1F0C, 0x1F0D, + 0x1F0E, 0x1F0F, 0x1F18, 0x1F19, 0x1F1A, 0x1F1B, 0x1F1C, + 0x1F1D, 0x1F28, 0x1F29, 0x1F2A, 0x1F2B, 0x1F2C, 0x1F2D, + 0x1F2E, 0x1F2F, 0x1F38, 0x1F39, 0x1F3A, 0x1F3B, 0x1F3C, + 0x1F3D, 0x1F3E, 0x1F3F, 0x1F48, 0x1F49, 0x1F4A, 0x1F4B, + 0x1F4C, 0x1F4D, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x1F68, + 0x1F69, 0x1F6A, 0x1F6B, 0x1F6C, 0x1F6D, 0x1F6E, 0x1F6F, + 0x1FB8, 0x1FB9, 0x1FBA, 0x1FBB, 0x1FC8, 0x1FC9, 0x1FCA, + 0x1FCB, 0x1FD8, 0x1FD9, 0x1FDA, 0x1FDB, 0x1FE8, 0x1FE9, + 0x1FEA, 0x1FEB, 0x1FEC, 0x1FF8, 0x1FF9, 0x1FFA, 0x1FFB, + 0x2102, 0x2107, 0x210B, 0x210C, 0x210D, 0x2110, 0x2111, + 0x2112, 0x2115, 0x2119, 0x211A, 0x211B, 0x211C, 0x211D, + 0x2124, 0x2126, 0x2128, 0x212A, 0x212B, 0x212C, 0x212D, + 0x2130, 0x2131, 0x2132, 0x2133, 0x213E, 0x213F, 0x2145, + 0x2183, 0x2C00, 0x2C01, 0x2C02, 0x2C03, 0x2C04, 0x2C05, + 0x2C06, 0x2C07, 0x2C08, 0x2C09, 0x2C0A, 0x2C0B, 0x2C0C, + 0x2C0D, 0x2C0E, 0x2C0F, 0x2C10, 0x2C11, 0x2C12, 0x2C13, + 0x2C14, 0x2C15, 0x2C16, 0x2C17, 0x2C18, 0x2C19, 0x2C1A, + 0x2C1B, 0x2C1C, 0x2C1D, 0x2C1E, 0x2C1F, 0x2C20, 0x2C21, + 0x2C22, 0x2C23, 0x2C24, 0x2C25, 0x2C26, 0x2C27, 0x2C28, + 0x2C29, 0x2C2A, 0x2C2B, 0x2C2C, 0x2C2D, 0x2C2E, 0x2C2F, + 0x2C60, 0x2C62, 0x2C63, 0x2C64, 0x2C67, 0x2C69, 0x2C6B, + 0x2C6D, 0x2C6E, 0x2C6F, 0x2C70, 0x2C72, 0x2C75, 0x2C7E, + 0x2C7F, 0x2C80, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, + 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, + 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, + 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, + 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, + 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, + 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, + 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, + 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, + 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, + 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, + 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, + 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, + 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, + 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, + 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, + 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, + 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, + 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA77D, 0xA77E, + 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, + 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, + 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7AA, 0xA7AB, 0xA7AC, + 0xA7AD, 0xA7AE, 0xA7B0, 0xA7B1, 0xA7B2, 0xA7B3, 0xA7B4, + 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, + 0xA7C4, 0xA7C5, 0xA7C6, 0xA7C7, 0xA7C9, 0xA7D0, 0xA7D6, + 0xA7D8, 0xA7F5, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, + 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, + 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, + 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, + 0x10400, 0x10401, 0x10402, 0x10403, 0x10404, 0x10405, 0x10406, + 0x10407, 0x10408, 0x10409, 0x1040A, 0x1040B, 0x1040C, 0x1040D, + 0x1040E, 0x1040F, 0x10410, 0x10411, 0x10412, 0x10413, 0x10414, + 0x10415, 0x10416, 0x10417, 0x10418, 0x10419, 0x1041A, 0x1041B, + 0x1041C, 0x1041D, 0x1041E, 0x1041F, 0x10420, 0x10421, 0x10422, + 0x10423, 0x10424, 0x10425, 0x10426, 0x10427, 0x104B0, 0x104B1, + 0x104B2, 0x104B3, 0x104B4, 0x104B5, 0x104B6, 0x104B7, 0x104B8, + 0x104B9, 0x104BA, 0x104BB, 0x104BC, 0x104BD, 0x104BE, 0x104BF, + 0x104C0, 0x104C1, 0x104C2, 0x104C3, 0x104C4, 0x104C5, 0x104C6, + 0x104C7, 0x104C8, 0x104C9, 0x104CA, 0x104CB, 0x104CC, 0x104CD, + 0x104CE, 0x104CF, 0x104D0, 0x104D1, 0x104D2, 0x104D3, 0x10570, + 0x10571, 0x10572, 0x10573, 0x10574, 0x10575, 0x10576, 0x10577, + 0x10578, 0x10579, 0x1057A, 0x1057C, 0x1057D, 0x1057E, 0x1057F, + 0x10580, 0x10581, 0x10582, 0x10583, 0x10584, 0x10585, 0x10586, + 0x10587, 0x10588, 0x10589, 0x1058A, 0x1058C, 0x1058D, 0x1058E, + 0x1058F, 0x10590, 0x10591, 0x10592, 0x10594, 0x10595, 0x10C80, + 0x10C81, 0x10C82, 0x10C83, 0x10C84, 0x10C85, 0x10C86, 0x10C87, + 0x10C88, 0x10C89, 0x10C8A, 0x10C8B, 0x10C8C, 0x10C8D, 0x10C8E, + 0x10C8F, 0x10C90, 0x10C91, 0x10C92, 0x10C93, 0x10C94, 0x10C95, + 0x10C96, 0x10C97, 0x10C98, 0x10C99, 0x10C9A, 0x10C9B, 0x10C9C, + 0x10C9D, 0x10C9E, 0x10C9F, 0x10CA0, 0x10CA1, 0x10CA2, 0x10CA3, + 0x10CA4, 0x10CA5, 0x10CA6, 0x10CA7, 0x10CA8, 0x10CA9, 0x10CAA, + 0x10CAB, 0x10CAC, 0x10CAD, 0x10CAE, 0x10CAF, 0x10CB0, 0x10CB1, + 0x10CB2, 0x118A0, 0x118A1, 0x118A2, 0x118A3, 0x118A4, 0x118A5, + 0x118A6, 0x118A7, 0x118A8, 0x118A9, 0x118AA, 0x118AB, 0x118AC, + 0x118AD, 0x118AE, 0x118AF, 0x118B0, 0x118B1, 0x118B2, 0x118B3, + 0x118B4, 0x118B5, 0x118B6, 0x118B7, 0x118B8, 0x118B9, 0x118BA, + 0x118BB, 0x118BC, 0x118BD, 0x118BE, 0x118BF, 0x16E40, 0x16E41, + 0x16E42, 0x16E43, 0x16E44, 0x16E45, 0x16E46, 0x16E47, 0x16E48, + 0x16E49, 0x16E4A, 0x16E4B, 0x16E4C, 0x16E4D, 0x16E4E, 0x16E4F, + 0x16E50, 0x16E51, 0x16E52, 0x16E53, 0x16E54, 0x16E55, 0x16E56, + 0x16E57, 0x16E58, 0x16E59, 0x16E5A, 0x16E5B, 0x16E5C, 0x16E5D, + 0x16E5E, 0x16E5F, 0x1D400, 0x1D401, 0x1D402, 0x1D403, 0x1D404, + 0x1D405, 0x1D406, 0x1D407, 0x1D408, 0x1D409, 0x1D40A, 0x1D40B, + 0x1D40C, 0x1D40D, 0x1D40E, 0x1D40F, 0x1D410, 0x1D411, 0x1D412, + 0x1D413, 0x1D414, 0x1D415, 0x1D416, 0x1D417, 0x1D418, 0x1D419, + 0x1D434, 0x1D435, 0x1D436, 0x1D437, 0x1D438, 0x1D439, 0x1D43A, + 0x1D43B, 0x1D43C, 0x1D43D, 0x1D43E, 0x1D43F, 0x1D440, 0x1D441, + 0x1D442, 0x1D443, 0x1D444, 0x1D445, 0x1D446, 0x1D447, 0x1D448, + 0x1D449, 0x1D44A, 0x1D44B, 0x1D44C, 0x1D44D, 0x1D468, 0x1D469, + 0x1D46A, 0x1D46B, 0x1D46C, 0x1D46D, 0x1D46E, 0x1D46F, 0x1D470, + 0x1D471, 0x1D472, 0x1D473, 0x1D474, 0x1D475, 0x1D476, 0x1D477, + 0x1D478, 0x1D479, 0x1D47A, 0x1D47B, 0x1D47C, 0x1D47D, 0x1D47E, + 0x1D47F, 0x1D480, 0x1D481, 0x1D49C, 0x1D49E, 0x1D49F, 0x1D4A2, + 0x1D4A5, 0x1D4A6, 0x1D4A9, 0x1D4AA, 0x1D4AB, 0x1D4AC, 0x1D4AE, + 0x1D4AF, 0x1D4B0, 0x1D4B1, 0x1D4B2, 0x1D4B3, 0x1D4B4, 0x1D4B5, + 0x1D4D0, 0x1D4D1, 0x1D4D2, 0x1D4D3, 0x1D4D4, 0x1D4D5, 0x1D4D6, + 0x1D4D7, 0x1D4D8, 0x1D4D9, 0x1D4DA, 0x1D4DB, 0x1D4DC, 0x1D4DD, + 0x1D4DE, 0x1D4DF, 0x1D4E0, 0x1D4E1, 0x1D4E2, 0x1D4E3, 0x1D4E4, + 0x1D4E5, 0x1D4E6, 0x1D4E7, 0x1D4E8, 0x1D4E9, 0x1D504, 0x1D505, + 0x1D507, 0x1D508, 0x1D509, 0x1D50A, 0x1D50D, 0x1D50E, 0x1D50F, + 0x1D510, 0x1D511, 0x1D512, 0x1D513, 0x1D514, 0x1D516, 0x1D517, + 0x1D518, 0x1D519, 0x1D51A, 0x1D51B, 0x1D51C, 0x1D538, 0x1D539, + 0x1D53B, 0x1D53C, 0x1D53D, 0x1D53E, 0x1D540, 0x1D541, 0x1D542, + 0x1D543, 0x1D544, 0x1D546, 0x1D54A, 0x1D54B, 0x1D54C, 0x1D54D, + 0x1D54E, 0x1D54F, 0x1D550, 0x1D56C, 0x1D56D, 0x1D56E, 0x1D56F, + 0x1D570, 0x1D571, 0x1D572, 0x1D573, 0x1D574, 0x1D575, 0x1D576, + 0x1D577, 0x1D578, 0x1D579, 0x1D57A, 0x1D57B, 0x1D57C, 0x1D57D, + 0x1D57E, 0x1D57F, 0x1D580, 0x1D581, 0x1D582, 0x1D583, 0x1D584, + 0x1D585, 0x1D5A0, 0x1D5A1, 0x1D5A2, 0x1D5A3, 0x1D5A4, 0x1D5A5, + 0x1D5A6, 0x1D5A7, 0x1D5A8, 0x1D5A9, 0x1D5AA, 0x1D5AB, 0x1D5AC, + 0x1D5AD, 0x1D5AE, 0x1D5AF, 0x1D5B0, 0x1D5B1, 0x1D5B2, 0x1D5B3, + 0x1D5B4, 0x1D5B5, 0x1D5B6, 0x1D5B7, 0x1D5B8, 0x1D5B9, 0x1D5D4, + 0x1D5D5, 0x1D5D6, 0x1D5D7, 0x1D5D8, 0x1D5D9, 0x1D5DA, 0x1D5DB, + 0x1D5DC, 0x1D5DD, 0x1D5DE, 0x1D5DF, 0x1D5E0, 0x1D5E1, 0x1D5E2, + 0x1D5E3, 0x1D5E4, 0x1D5E5, 0x1D5E6, 0x1D5E7, 0x1D5E8, 0x1D5E9, + 0x1D5EA, 0x1D5EB, 0x1D5EC, 0x1D5ED, 0x1D608, 0x1D609, 0x1D60A, + 0x1D60B, 0x1D60C, 0x1D60D, 0x1D60E, 0x1D60F, 0x1D610, 0x1D611, + 0x1D612, 0x1D613, 0x1D614, 0x1D615, 0x1D616, 0x1D617, 0x1D618, + 0x1D619, 0x1D61A, 0x1D61B, 0x1D61C, 0x1D61D, 0x1D61E, 0x1D61F, + 0x1D620, 0x1D621, 0x1D63C, 0x1D63D, 0x1D63E, 0x1D63F, 0x1D640, + 0x1D641, 0x1D642, 0x1D643, 0x1D644, 0x1D645, 0x1D646, 0x1D647, + 0x1D648, 0x1D649, 0x1D64A, 0x1D64B, 0x1D64C, 0x1D64D, 0x1D64E, + 0x1D64F, 0x1D650, 0x1D651, 0x1D652, 0x1D653, 0x1D654, 0x1D655, + 0x1D670, 0x1D671, 0x1D672, 0x1D673, 0x1D674, 0x1D675, 0x1D676, + 0x1D677, 0x1D678, 0x1D679, 0x1D67A, 0x1D67B, 0x1D67C, 0x1D67D, + 0x1D67E, 0x1D67F, 0x1D680, 0x1D681, 0x1D682, 0x1D683, 0x1D684, + 0x1D685, 0x1D686, 0x1D687, 0x1D688, 0x1D689, 0x1D6A8, 0x1D6A9, + 0x1D6AA, 0x1D6AB, 0x1D6AC, 0x1D6AD, 0x1D6AE, 0x1D6AF, 0x1D6B0, + 0x1D6B1, 0x1D6B2, 0x1D6B3, 0x1D6B4, 0x1D6B5, 0x1D6B6, 0x1D6B7, + 0x1D6B8, 0x1D6B9, 0x1D6BA, 0x1D6BB, 0x1D6BC, 0x1D6BD, 0x1D6BE, + 0x1D6BF, 0x1D6C0, 0x1D6E2, 0x1D6E3, 0x1D6E4, 0x1D6E5, 0x1D6E6, + 0x1D6E7, 0x1D6E8, 0x1D6E9, 0x1D6EA, 0x1D6EB, 0x1D6EC, 0x1D6ED, + 0x1D6EE, 0x1D6EF, 0x1D6F0, 0x1D6F1, 0x1D6F2, 0x1D6F3, 0x1D6F4, + 0x1D6F5, 0x1D6F6, 0x1D6F7, 0x1D6F8, 0x1D6F9, 0x1D6FA, 0x1D71C, + 0x1D71D, 0x1D71E, 0x1D71F, 0x1D720, 0x1D721, 0x1D722, 0x1D723, + 0x1D724, 0x1D725, 0x1D726, 0x1D727, 0x1D728, 0x1D729, 0x1D72A, + 0x1D72B, 0x1D72C, 0x1D72D, 0x1D72E, 0x1D72F, 0x1D730, 0x1D731, + 0x1D732, 0x1D733, 0x1D734, 0x1D756, 0x1D757, 0x1D758, 0x1D759, + 0x1D75A, 0x1D75B, 0x1D75C, 0x1D75D, 0x1D75E, 0x1D75F, 0x1D760, + 0x1D761, 0x1D762, 0x1D763, 0x1D764, 0x1D765, 0x1D766, 0x1D767, + 0x1D768, 0x1D769, 0x1D76A, 0x1D76B, 0x1D76C, 0x1D76D, 0x1D76E, + 0x1D790, 0x1D791, 0x1D792, 0x1D793, 0x1D794, 0x1D795, 0x1D796, + 0x1D797, 0x1D798, 0x1D799, 0x1D79A, 0x1D79B, 0x1D79C, 0x1D79D, + 0x1D79E, 0x1D79F, 0x1D7A0, 0x1D7A1, 0x1D7A2, 0x1D7A3, 0x1D7A4, + 0x1D7A5, 0x1D7A6, 0x1D7A7, 0x1D7A8, 0x1D7CA, 0x1E900, 0x1E901, + 0x1E902, 0x1E903, 0x1E904, 0x1E905, 0x1E906, 0x1E907, 0x1E908, + 0x1E909, 0x1E90A, 0x1E90B, 0x1E90C, 0x1E90D, 0x1E90E, 0x1E90F, + 0x1E910, 0x1E911, 0x1E912, 0x1E913, 0x1E914, 0x1E915, 0x1E916, + 0x1E917, 0x1E918, 0x1E919, 0x1E91A, 0x1E91B, 0x1E91C, 0x1E91D, + 0x1E91E, 0x1E91F, 0x1E920, 0x1E921}; + }; } #endif diff --git a/include/boost/parser/parser.hpp b/include/boost/parser/parser.hpp index 1b7c0b92..afb39e13 100644 --- a/include/boost/parser/parser.hpp +++ b/include/boost/parser/parser.hpp @@ -1523,17 +1523,23 @@ namespace boost { namespace parser { }; template<> - inline constexpr char_subrange char_subranges[] = { - {U'0', U'9'}, - {U'A', U'F'}, - {U'a', U'f'}, - {U'\uff10', U'\uff19'}, - {U'\uff21', U'\uff26'}, - {U'\uff41', U'\uff46'}}; + struct char_subranges + { + static constexpr char_subrange ranges[] = { + {U'0', U'9'}, + {U'A', U'F'}, + {U'a', U'f'}, + {U'\uff10', U'\uff19'}, + {U'\uff21', U'\uff26'}, + {U'\uff41', U'\uff46'}}; + }; template<> - inline constexpr char_subrange char_subranges[] = { - {U'\u0000', U'\u001f'}, {U'\u007f', U'\u009f'}}; + struct char_subranges + { + static constexpr char_subrange ranges[] = { + {U'\u0000', U'\u001f'}, {U'\u007f', U'\u009f'}}; + }; template struct char_range @@ -6084,7 +6090,7 @@ namespace boost { namespace parser { { BOOST_PARSER_ALGO_CONSTEXPR char_set_parser() { - auto const & chars = detail::char_set; + auto const & chars = detail::char_set::chars; auto const first = std::begin(chars); auto const last = std::end(chars); auto it = std::upper_bound(first, last, 0x100); @@ -6140,7 +6146,7 @@ namespace boost { namespace parser { return; } - auto const & chars = detail::char_set; + auto const & chars = detail::char_set::chars; attribute_t const x = *first; uint32_t const x_cmp = x; if (x_cmp < U'\x0100') { @@ -6226,7 +6232,7 @@ namespace boost { namespace parser { attribute_t const x = *first; char32_t const x_cmp = x; success = false; - for (auto subrange : detail::char_subranges) { + for (auto subrange : detail::char_subranges::ranges) { if (subrange.lo_ <= x_cmp && x_cmp <= subrange.hi_) { success = true; detail::assign(retval, x); diff --git a/include/boost/parser/parser_fwd.hpp b/include/boost/parser/parser_fwd.hpp index e72b6dd5..00d463b0 100644 --- a/include/boost/parser/parser_fwd.hpp +++ b/include/boost/parser/parser_fwd.hpp @@ -132,7 +132,8 @@ namespace boost { namespace parser { }; template - constexpr char_subrange char_subranges[] = {{}}; + struct char_subranges + {}; struct hex_digit_subranges {}; @@ -140,7 +141,8 @@ namespace boost { namespace parser { {}; template - constexpr uint32_t char_set[] = {0}; + struct char_set + {}; struct punct_chars {}; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index cf284b58..9b7519cc 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -13,7 +13,7 @@ add_executable(parser_ parser.cpp) set_property(TARGET parser_ PROPERTY CXX_STANDARD ${CXX_STD}) target_link_libraries(parser_ parser gtest gtest_main ${link_flags}) if (MSVC) - target_compile_options(parser_ PRIVATE /source-charset:utf-8) + target_compile_options(parser_ PRIVATE /source-charset:utf-8 /bigobj) endif () add_test(NAME parser_ COMMAND parser_ ---gtest_catch_exceptions=1) @@ -21,7 +21,7 @@ add_executable(parser_api parser_api.cpp) set_property(TARGET parser_api PROPERTY CXX_STANDARD ${CXX_STD}) target_link_libraries(parser_api parser gtest gtest_main ${link_flags}) if (MSVC) - target_compile_options(parser_api PRIVATE /source-charset:utf-8) + target_compile_options(parser_api PRIVATE /source-charset:utf-8 /bigobj) endif () add_test(NAME parser_api COMMAND parser_api ---gtest_catch_exceptions=1) @@ -41,7 +41,7 @@ macro(add_test_executable name) set_property(TARGET ${name} PROPERTY CXX_STANDARD ${CXX_STD}) target_link_libraries(${name} parser gtest gtest_main ${link_flags}) if (MSVC) - target_compile_options(${name} PRIVATE /source-charset:utf-8) + target_compile_options(${name} PRIVATE /source-charset:utf-8 /bigobj) endif () add_test(NAME ${name} COMMAND ${name} --gtest_catch_exceptions=1) endmacro()