| // -*- C++ -*- |
| //===----------------------------------------------------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| // WARNING, this entire header is generated by |
| // utils/generate_extended_grapheme_cluster_table.py |
| // DO NOT MODIFY! |
| |
| // UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE |
| // |
| // See Terms of Use <https://www.unicode.org/copyright.html> |
| // for definitions of Unicode Inc.'s Data Files and Software. |
| // |
| // NOTICE TO USER: Carefully read the following legal agreement. |
| // BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S |
| // DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), |
| // YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE |
| // TERMS AND CONDITIONS OF THIS AGREEMENT. |
| // IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE |
| // THE DATA FILES OR SOFTWARE. |
| // |
| // COPYRIGHT AND PERMISSION NOTICE |
| // |
| // Copyright (c) 1991-2022 Unicode, Inc. All rights reserved. |
| // Distributed under the Terms of Use in https://www.unicode.org/copyright.html. |
| // |
| // Permission is hereby granted, free of charge, to any person obtaining |
| // a copy of the Unicode data files and any associated documentation |
| // (the "Data Files") or Unicode software and any associated documentation |
| // (the "Software") to deal in the Data Files or Software |
| // without restriction, including without limitation the rights to use, |
| // copy, modify, merge, publish, distribute, and/or sell copies of |
| // the Data Files or Software, and to permit persons to whom the Data Files |
| // or Software are furnished to do so, provided that either |
| // (a) this copyright and permission notice appear with all copies |
| // of the Data Files or Software, or |
| // (b) this copyright and permission notice appear in associated |
| // Documentation. |
| // |
| // THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF |
| // ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE |
| // WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| // NONINFRINGEMENT OF THIRD PARTY RIGHTS. |
| // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS |
| // NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL |
| // DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, |
| // DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
| // TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
| // PERFORMANCE OF THE DATA FILES OR SOFTWARE. |
| // |
| // Except as contained in this notice, the name of a copyright holder |
| // shall not be used in advertising or otherwise to promote the sale, |
| // use or other dealings in these Data Files or Software without prior |
| // written authorization of the copyright holder. |
| |
| #ifndef _LIBCPP___FORMAT_EXTENDED_GRAPHEME_CLUSTER_TABLE_H |
| #define _LIBCPP___FORMAT_EXTENDED_GRAPHEME_CLUSTER_TABLE_H |
| |
| #include <__algorithm/ranges_upper_bound.h> |
| #include <__config> |
| #include <__iterator/access.h> |
| #include <cstddef> |
| #include <cstdint> |
| |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) |
| # pragma GCC system_header |
| #endif |
| |
| _LIBCPP_BEGIN_NAMESPACE_STD |
| |
| #if _LIBCPP_STD_VER > 17 |
| |
| namespace __extended_grapheme_custer_property_boundary { |
| |
| enum class __property : uint8_t { |
| // Values generated from the data files. |
| __CR, |
| __Control, |
| __Extend, |
| __Extended_Pictographic, |
| __L, |
| __LF, |
| __LV, |
| __LVT, |
| __Prepend, |
| __Regional_Indicator, |
| __SpacingMark, |
| __T, |
| __V, |
| __ZWJ, |
| |
| // The properies below aren't stored in the "database". |
| |
| // Text position properties. |
| __sot, |
| __eot, |
| |
| // The code unit has none of above properties. |
| __none |
| }; |
| |
| /// The entries of the extended grapheme cluster bondary property table. |
| /// |
| /// The data is generated from |
| /// - https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt |
| /// - https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt |
| /// |
| /// The data has 3 values |
| /// - bits [0, 3] The property. One of the values generated from the datafiles |
| /// of \ref __property |
| /// - bits [4, 10] The size of the range. |
| /// - bits [11, 31] The lower bound code point of the range. The upper bound of |
| /// the range is lower bound + size. |
| /// |
| /// The 7 bits for the size allow a maximum range of 128 elements. Some ranges |
| /// in the Unicode tables are larger. They are stored in multiple consecutive |
| /// ranges in the data table. An alternative would be to store the sizes in a |
| /// separate 16-bit value. The original MSVC STL code had such an approach, but |
| /// this approach uses less space for the data and is about 4% faster in the |
| /// following benchmark. |
| /// libcxx/benchmarks/std_format_spec_string_unicode.bench.cpp |
| inline constexpr uint32_t __entries[1496] = { |
| 0x00000091, |
| 0x00005005, |
| 0x00005811, |
| 0x00006800, |
| 0x00007111, |
| 0x0003fa01, |
| 0x00054803, |
| 0x00056801, |
| 0x00057003, |
| 0x001806f2, |
| 0x00241862, |
| 0x002c8ac2, |
| 0x002df802, |
| 0x002e0812, |
| 0x002e2012, |
| 0x002e3802, |
| 0x00300058, |
| 0x003080a2, |
| 0x0030e001, |
| 0x00325942, |
| 0x00338002, |
| 0x0036b062, |
| 0x0036e808, |
| 0x0036f852, |
| 0x00373812, |
| 0x00375032, |
| 0x00387808, |
| 0x00388802, |
| 0x003981a2, |
| 0x003d30a2, |
| 0x003f5882, |
| 0x003fe802, |
| 0x0040b032, |
| 0x0040d882, |
| 0x00412822, |
| 0x00414842, |
| 0x0042c822, |
| 0x00448018, |
| 0x0044c072, |
| 0x00465172, |
| 0x00471008, |
| 0x004719f2, |
| 0x0048180a, |
| 0x0049d002, |
| 0x0049d80a, |
| 0x0049e002, |
| 0x0049f02a, |
| 0x004a0872, |
| 0x004a483a, |
| 0x004a6802, |
| 0x004a701a, |
| 0x004a8862, |
| 0x004b1012, |
| 0x004c0802, |
| 0x004c101a, |
| 0x004de002, |
| 0x004df002, |
| 0x004df81a, |
| 0x004e0832, |
| 0x004e381a, |
| 0x004e581a, |
| 0x004e6802, |
| 0x004eb802, |
| 0x004f1012, |
| 0x004ff002, |
| 0x00500812, |
| 0x0050180a, |
| 0x0051e002, |
| 0x0051f02a, |
| 0x00520812, |
| 0x00523812, |
| 0x00525822, |
| 0x00528802, |
| 0x00538012, |
| 0x0053a802, |
| 0x00540812, |
| 0x0054180a, |
| 0x0055e002, |
| 0x0055f02a, |
| 0x00560842, |
| 0x00563812, |
| 0x0056480a, |
| 0x0056581a, |
| 0x00566802, |
| 0x00571012, |
| 0x0057d052, |
| 0x00580802, |
| 0x0058101a, |
| 0x0059e002, |
| 0x0059f012, |
| 0x005a000a, |
| 0x005a0832, |
| 0x005a381a, |
| 0x005a581a, |
| 0x005a6802, |
| 0x005aa822, |
| 0x005b1012, |
| 0x005c1002, |
| 0x005df002, |
| 0x005df80a, |
| 0x005e0002, |
| 0x005e081a, |
| 0x005e302a, |
| 0x005e502a, |
| 0x005e6802, |
| 0x005eb802, |
| 0x00600002, |
| 0x0060082a, |
| 0x00602002, |
| 0x0061e002, |
| 0x0061f022, |
| 0x0062083a, |
| 0x00623022, |
| 0x00625032, |
| 0x0062a812, |
| 0x00631012, |
| 0x00640802, |
| 0x0064101a, |
| 0x0065e002, |
| 0x0065f00a, |
| 0x0065f802, |
| 0x0066001a, |
| 0x00661002, |
| 0x0066181a, |
| 0x00663002, |
| 0x0066381a, |
| 0x0066501a, |
| 0x00666012, |
| 0x0066a812, |
| 0x00671012, |
| 0x0067980a, |
| 0x00680012, |
| 0x0068101a, |
| 0x0069d812, |
| 0x0069f002, |
| 0x0069f81a, |
| 0x006a0832, |
| 0x006a302a, |
| 0x006a502a, |
| 0x006a6802, |
| 0x006a7008, |
| 0x006ab802, |
| 0x006b1012, |
| 0x006c0802, |
| 0x006c101a, |
| 0x006e5002, |
| 0x006e7802, |
| 0x006e801a, |
| 0x006e9022, |
| 0x006eb002, |
| 0x006ec06a, |
| 0x006ef802, |
| 0x006f901a, |
| 0x00718802, |
| 0x0071980a, |
| 0x0071a062, |
| 0x00723872, |
| 0x00758802, |
| 0x0075980a, |
| 0x0075a082, |
| 0x00764062, |
| 0x0078c012, |
| 0x0079a802, |
| 0x0079b802, |
| 0x0079c802, |
| 0x0079f01a, |
| 0x007b88d2, |
| 0x007bf80a, |
| 0x007c0042, |
| 0x007c3012, |
| 0x007c68a2, |
| 0x007cca32, |
| 0x007e3002, |
| 0x00816832, |
| 0x0081880a, |
| 0x00819052, |
| 0x0081c812, |
| 0x0081d81a, |
| 0x0081e812, |
| 0x0082b01a, |
| 0x0082c012, |
| 0x0082f022, |
| 0x00838832, |
| 0x00841002, |
| 0x0084200a, |
| 0x00842812, |
| 0x00846802, |
| 0x0084e802, |
| 0x008805f4, |
| 0x008b047c, |
| 0x008d457b, |
| 0x009ae822, |
| 0x00b89022, |
| 0x00b8a80a, |
| 0x00b99012, |
| 0x00b9a00a, |
| 0x00ba9012, |
| 0x00bb9012, |
| 0x00bda012, |
| 0x00bdb00a, |
| 0x00bdb862, |
| 0x00bdf07a, |
| 0x00be3002, |
| 0x00be381a, |
| 0x00be48a2, |
| 0x00bee802, |
| 0x00c05822, |
| 0x00c07001, |
| 0x00c07802, |
| 0x00c42812, |
| 0x00c54802, |
| 0x00c90022, |
| 0x00c9183a, |
| 0x00c93812, |
| 0x00c9482a, |
| 0x00c9801a, |
| 0x00c99002, |
| 0x00c9985a, |
| 0x00c9c822, |
| 0x00d0b812, |
| 0x00d0c81a, |
| 0x00d0d802, |
| 0x00d2a80a, |
| 0x00d2b002, |
| 0x00d2b80a, |
| 0x00d2c062, |
| 0x00d30002, |
| 0x00d31002, |
| 0x00d32872, |
| 0x00d3685a, |
| 0x00d39892, |
| 0x00d3f802, |
| 0x00d581e2, |
| 0x00d80032, |
| 0x00d8200a, |
| 0x00d9a062, |
| 0x00d9d80a, |
| 0x00d9e002, |
| 0x00d9e84a, |
| 0x00da1002, |
| 0x00da181a, |
| 0x00db5882, |
| 0x00dc0012, |
| 0x00dc100a, |
| 0x00dd080a, |
| 0x00dd1032, |
| 0x00dd301a, |
| 0x00dd4012, |
| 0x00dd500a, |
| 0x00dd5822, |
| 0x00df3002, |
| 0x00df380a, |
| 0x00df4012, |
| 0x00df502a, |
| 0x00df6802, |
| 0x00df700a, |
| 0x00df7822, |
| 0x00df901a, |
| 0x00e1207a, |
| 0x00e16072, |
| 0x00e1a01a, |
| 0x00e1b012, |
| 0x00e68022, |
| 0x00e6a0c2, |
| 0x00e7080a, |
| 0x00e71062, |
| 0x00e76802, |
| 0x00e7a002, |
| 0x00e7b80a, |
| 0x00e7c012, |
| 0x00ee03f2, |
| 0x01005801, |
| 0x01006002, |
| 0x0100680d, |
| 0x01007011, |
| 0x01014061, |
| 0x0101e003, |
| 0x01024803, |
| 0x010300f1, |
| 0x01068202, |
| 0x01091003, |
| 0x0109c803, |
| 0x010ca053, |
| 0x010d4813, |
| 0x0118d013, |
| 0x01194003, |
| 0x011c4003, |
| 0x011e7803, |
| 0x011f48a3, |
| 0x011fc023, |
| 0x01261003, |
| 0x012d5013, |
| 0x012db003, |
| 0x012e0003, |
| 0x012fd833, |
| 0x01300053, |
| 0x013038b3, |
| 0x0130a713, |
| 0x01348753, |
| 0x013840a3, |
| 0x0138a003, |
| 0x0138b003, |
| 0x0138e803, |
| 0x01390803, |
| 0x01394003, |
| 0x01399813, |
| 0x013a2003, |
| 0x013a3803, |
| 0x013a6003, |
| 0x013a7003, |
| 0x013a9823, |
| 0x013ab803, |
| 0x013b1843, |
| 0x013ca823, |
| 0x013d0803, |
| 0x013d8003, |
| 0x013df803, |
| 0x0149a013, |
| 0x01582823, |
| 0x0158d813, |
| 0x015a8003, |
| 0x015aa803, |
| 0x01677822, |
| 0x016bf802, |
| 0x016f01f2, |
| 0x01815052, |
| 0x01818003, |
| 0x0181e803, |
| 0x0184c812, |
| 0x0194b803, |
| 0x0194c803, |
| 0x05337832, |
| 0x0533a092, |
| 0x0534f012, |
| 0x05378012, |
| 0x05401002, |
| 0x05403002, |
| 0x05405802, |
| 0x0541181a, |
| 0x05412812, |
| 0x0541380a, |
| 0x05416002, |
| 0x0544001a, |
| 0x0545a0fa, |
| 0x05462012, |
| 0x05470112, |
| 0x0547f802, |
| 0x05493072, |
| 0x054a38a2, |
| 0x054a901a, |
| 0x054b01c4, |
| 0x054c0022, |
| 0x054c180a, |
| 0x054d9802, |
| 0x054da01a, |
| 0x054db032, |
| 0x054dd01a, |
| 0x054de012, |
| 0x054df02a, |
| 0x054f2802, |
| 0x05514852, |
| 0x0551781a, |
| 0x05518812, |
| 0x0551981a, |
| 0x0551a812, |
| 0x05521802, |
| 0x05526002, |
| 0x0552680a, |
| 0x0553e002, |
| 0x05558002, |
| 0x05559022, |
| 0x0555b812, |
| 0x0555f012, |
| 0x05560802, |
| 0x0557580a, |
| 0x05576012, |
| 0x0557701a, |
| 0x0557a80a, |
| 0x0557b002, |
| 0x055f181a, |
| 0x055f2802, |
| 0x055f301a, |
| 0x055f4002, |
| 0x055f481a, |
| 0x055f600a, |
| 0x055f6802, |
| 0x05600006, |
| 0x056009a7, |
| 0x0560e006, |
| 0x0560e9a7, |
| 0x0561c006, |
| 0x0561c9a7, |
| 0x0562a006, |
| 0x0562a9a7, |
| 0x05638006, |
| 0x056389a7, |
| 0x05646006, |
| 0x056469a7, |
| 0x05654006, |
| 0x056549a7, |
| 0x05662006, |
| 0x056629a7, |
| 0x05670006, |
| 0x056709a7, |
| 0x0567e006, |
| 0x0567e9a7, |
| 0x0568c006, |
| 0x0568c9a7, |
| 0x0569a006, |
| 0x0569a9a7, |
| 0x056a8006, |
| 0x056a89a7, |
| 0x056b6006, |
| 0x056b69a7, |
| 0x056c4006, |
| 0x056c49a7, |
| 0x056d2006, |
| 0x056d29a7, |
| 0x056e0006, |
| 0x056e09a7, |
| 0x056ee006, |
| 0x056ee9a7, |
| 0x056fc006, |
| 0x056fc9a7, |
| 0x0570a006, |
| 0x0570a9a7, |
| 0x05718006, |
| 0x057189a7, |
| 0x05726006, |
| 0x057269a7, |
| 0x05734006, |
| 0x057349a7, |
| 0x05742006, |
| 0x057429a7, |
| 0x05750006, |
| 0x057509a7, |
| 0x0575e006, |
| 0x0575e9a7, |
| 0x0576c006, |
| 0x0576c9a7, |
| 0x0577a006, |
| 0x0577a9a7, |
| 0x05788006, |
| 0x057889a7, |
| 0x05796006, |
| 0x057969a7, |
| 0x057a4006, |
| 0x057a49a7, |
| 0x057b2006, |
| 0x057b29a7, |
| 0x057c0006, |
| 0x057c09a7, |
| 0x057ce006, |
| 0x057ce9a7, |
| 0x057dc006, |
| 0x057dc9a7, |
| 0x057ea006, |
| 0x057ea9a7, |
| 0x057f8006, |
| 0x057f89a7, |
| 0x05806006, |
| 0x058069a7, |
| 0x05814006, |
| 0x058149a7, |
| 0x05822006, |
| 0x058229a7, |
| 0x05830006, |
| 0x058309a7, |
| 0x0583e006, |
| 0x0583e9a7, |
| 0x0584c006, |
| 0x0584c9a7, |
| 0x0585a006, |
| 0x0585a9a7, |
| 0x05868006, |
| 0x058689a7, |
| 0x05876006, |
| 0x058769a7, |
| 0x05884006, |
| 0x058849a7, |
| 0x05892006, |
| 0x058929a7, |
| 0x058a0006, |
| 0x058a09a7, |
| 0x058ae006, |
| 0x058ae9a7, |
| 0x058bc006, |
| 0x058bc9a7, |
| 0x058ca006, |
| 0x058ca9a7, |
| 0x058d8006, |
| 0x058d89a7, |
| 0x058e6006, |
| 0x058e69a7, |
| 0x058f4006, |
| 0x058f49a7, |
| 0x05902006, |
| 0x059029a7, |
| 0x05910006, |
| 0x059109a7, |
| 0x0591e006, |
| 0x0591e9a7, |
| 0x0592c006, |
| 0x0592c9a7, |
| 0x0593a006, |
| 0x0593a9a7, |
| 0x05948006, |
| 0x059489a7, |
| 0x05956006, |
| 0x059569a7, |
| 0x05964006, |
| 0x059649a7, |
| 0x05972006, |
| 0x059729a7, |
| 0x05980006, |
| 0x059809a7, |
| 0x0598e006, |
| 0x0598e9a7, |
| 0x0599c006, |
| 0x0599c9a7, |
| 0x059aa006, |
| 0x059aa9a7, |
| 0x059b8006, |
| 0x059b89a7, |
| 0x059c6006, |
| 0x059c69a7, |
| 0x059d4006, |
| 0x059d49a7, |
| 0x059e2006, |
| 0x059e29a7, |
| 0x059f0006, |
| 0x059f09a7, |
| 0x059fe006, |
| 0x059fe9a7, |
| 0x05a0c006, |
| 0x05a0c9a7, |
| 0x05a1a006, |
| 0x05a1a9a7, |
| 0x05a28006, |
| 0x05a289a7, |
| 0x05a36006, |
| 0x05a369a7, |
| 0x05a44006, |
| 0x05a449a7, |
| 0x05a52006, |
| 0x05a529a7, |
| 0x05a60006, |
| 0x05a609a7, |
| 0x05a6e006, |
| 0x05a6e9a7, |
| 0x05a7c006, |
| 0x05a7c9a7, |
| 0x05a8a006, |
| 0x05a8a9a7, |
| 0x05a98006, |
| 0x05a989a7, |
| 0x05aa6006, |
| 0x05aa69a7, |
| 0x05ab4006, |
| 0x05ab49a7, |
| 0x05ac2006, |
| 0x05ac29a7, |
| 0x05ad0006, |
| 0x05ad09a7, |
| 0x05ade006, |
| 0x05ade9a7, |
| 0x05aec006, |
| 0x05aec9a7, |
| 0x05afa006, |
| 0x05afa9a7, |
| 0x05b08006, |
| 0x05b089a7, |
| 0x05b16006, |
| 0x05b169a7, |
| 0x05b24006, |
| 0x05b249a7, |
| 0x05b32006, |
| 0x05b329a7, |
| 0x05b40006, |
| 0x05b409a7, |
| 0x05b4e006, |
| 0x05b4e9a7, |
| 0x05b5c006, |
| 0x05b5c9a7, |
| 0x05b6a006, |
| 0x05b6a9a7, |
| 0x05b78006, |
| 0x05b789a7, |
| 0x05b86006, |
| 0x05b869a7, |
| 0x05b94006, |
| 0x05b949a7, |
| 0x05ba2006, |
| 0x05ba29a7, |
| 0x05bb0006, |
| 0x05bb09a7, |
| 0x05bbe006, |
| 0x05bbe9a7, |
| 0x05bcc006, |
| 0x05bcc9a7, |
| 0x05bda006, |
| 0x05bda9a7, |
| 0x05be8006, |
| 0x05be89a7, |
| 0x05bf6006, |
| 0x05bf69a7, |
| 0x05c04006, |
| 0x05c049a7, |
| 0x05c12006, |
| 0x05c129a7, |
| 0x05c20006, |
| 0x05c209a7, |
| 0x05c2e006, |
| 0x05c2e9a7, |
| 0x05c3c006, |
| 0x05c3c9a7, |
| 0x05c4a006, |
| 0x05c4a9a7, |
| 0x05c58006, |
| 0x05c589a7, |
| 0x05c66006, |
| 0x05c669a7, |
| 0x05c74006, |
| 0x05c749a7, |
| 0x05c82006, |
| 0x05c829a7, |
| 0x05c90006, |
| 0x05c909a7, |
| 0x05c9e006, |
| 0x05c9e9a7, |
| 0x05cac006, |
| 0x05cac9a7, |
| 0x05cba006, |
| 0x05cba9a7, |
| 0x05cc8006, |
| 0x05cc89a7, |
| 0x05cd6006, |
| 0x05cd69a7, |
| 0x05ce4006, |
| 0x05ce49a7, |
| 0x05cf2006, |
| 0x05cf29a7, |
| 0x05d00006, |
| 0x05d009a7, |
| 0x05d0e006, |
| 0x05d0e9a7, |
| 0x05d1c006, |
| 0x05d1c9a7, |
| 0x05d2a006, |
| 0x05d2a9a7, |
| 0x05d38006, |
| 0x05d389a7, |
| 0x05d46006, |
| 0x05d469a7, |
| 0x05d54006, |
| 0x05d549a7, |
| 0x05d62006, |
| 0x05d629a7, |
| 0x05d70006, |
| 0x05d709a7, |
| 0x05d7e006, |
| 0x05d7e9a7, |
| 0x05d8c006, |
| 0x05d8c9a7, |
| 0x05d9a006, |
| 0x05d9a9a7, |
| 0x05da8006, |
| 0x05da89a7, |
| 0x05db6006, |
| 0x05db69a7, |
| 0x05dc4006, |
| 0x05dc49a7, |
| 0x05dd2006, |
| 0x05dd29a7, |
| 0x05de0006, |
| 0x05de09a7, |
| 0x05dee006, |
| 0x05dee9a7, |
| 0x05dfc006, |
| 0x05dfc9a7, |
| 0x05e0a006, |
| 0x05e0a9a7, |
| 0x05e18006, |
| 0x05e189a7, |
| 0x05e26006, |
| 0x05e269a7, |
| 0x05e34006, |
| 0x05e349a7, |
| 0x05e42006, |
| 0x05e429a7, |
| 0x05e50006, |
| 0x05e509a7, |
| 0x05e5e006, |
| 0x05e5e9a7, |
| 0x05e6c006, |
| 0x05e6c9a7, |
| 0x05e7a006, |
| 0x05e7a9a7, |
| 0x05e88006, |
| 0x05e889a7, |
| 0x05e96006, |
| 0x05e969a7, |
| 0x05ea4006, |
| 0x05ea49a7, |
| 0x05eb2006, |
| 0x05eb29a7, |
| 0x05ec0006, |
| 0x05ec09a7, |
| 0x05ece006, |
| 0x05ece9a7, |
| 0x05edc006, |
| 0x05edc9a7, |
| 0x05eea006, |
| 0x05eea9a7, |
| 0x05ef8006, |
| 0x05ef89a7, |
| 0x05f06006, |
| 0x05f069a7, |
| 0x05f14006, |
| 0x05f149a7, |
| 0x05f22006, |
| 0x05f229a7, |
| 0x05f30006, |
| 0x05f309a7, |
| 0x05f3e006, |
| 0x05f3e9a7, |
| 0x05f4c006, |
| 0x05f4c9a7, |
| 0x05f5a006, |
| 0x05f5a9a7, |
| 0x05f68006, |
| 0x05f689a7, |
| 0x05f76006, |
| 0x05f769a7, |
| 0x05f84006, |
| 0x05f849a7, |
| 0x05f92006, |
| 0x05f929a7, |
| 0x05fa0006, |
| 0x05fa09a7, |
| 0x05fae006, |
| 0x05fae9a7, |
| 0x05fbc006, |
| 0x05fbc9a7, |
| 0x05fca006, |
| 0x05fca9a7, |
| 0x05fd8006, |
| 0x05fd89a7, |
| 0x05fe6006, |
| 0x05fe69a7, |
| 0x05ff4006, |
| 0x05ff49a7, |
| 0x06002006, |
| 0x060029a7, |
| 0x06010006, |
| 0x060109a7, |
| 0x0601e006, |
| 0x0601e9a7, |
| 0x0602c006, |
| 0x0602c9a7, |
| 0x0603a006, |
| 0x0603a9a7, |
| 0x06048006, |
| 0x060489a7, |
| 0x06056006, |
| 0x060569a7, |
| 0x06064006, |
| 0x060649a7, |
| 0x06072006, |
| 0x060729a7, |
| 0x06080006, |
| 0x060809a7, |
| 0x0608e006, |
| 0x0608e9a7, |
| 0x0609c006, |
| 0x0609c9a7, |
| 0x060aa006, |
| 0x060aa9a7, |
| 0x060b8006, |
| 0x060b89a7, |
| 0x060c6006, |
| 0x060c69a7, |
| 0x060d4006, |
| 0x060d49a7, |
| 0x060e2006, |
| 0x060e29a7, |
| 0x060f0006, |
| 0x060f09a7, |
| 0x060fe006, |
| 0x060fe9a7, |
| 0x0610c006, |
| 0x0610c9a7, |
| 0x0611a006, |
| 0x0611a9a7, |
| 0x06128006, |
| 0x061289a7, |
| 0x06136006, |
| 0x061369a7, |
| 0x06144006, |
| 0x061449a7, |
| 0x06152006, |
| 0x061529a7, |
| 0x06160006, |
| 0x061609a7, |
| 0x0616e006, |
| 0x0616e9a7, |
| 0x0617c006, |
| 0x0617c9a7, |
| 0x0618a006, |
| 0x0618a9a7, |
| 0x06198006, |
| 0x061989a7, |
| 0x061a6006, |
| 0x061a69a7, |
| 0x061b4006, |
| 0x061b49a7, |
| 0x061c2006, |
| 0x061c29a7, |
| 0x061d0006, |
| 0x061d09a7, |
| 0x061de006, |
| 0x061de9a7, |
| 0x061ec006, |
| 0x061ec9a7, |
| 0x061fa006, |
| 0x061fa9a7, |
| 0x06208006, |
| 0x062089a7, |
| 0x06216006, |
| 0x062169a7, |
| 0x06224006, |
| 0x062249a7, |
| 0x06232006, |
| 0x062329a7, |
| 0x06240006, |
| 0x062409a7, |
| 0x0624e006, |
| 0x0624e9a7, |
| 0x0625c006, |
| 0x0625c9a7, |
| 0x0626a006, |
| 0x0626a9a7, |
| 0x06278006, |
| 0x062789a7, |
| 0x06286006, |
| 0x062869a7, |
| 0x06294006, |
| 0x062949a7, |
| 0x062a2006, |
| 0x062a29a7, |
| 0x062b0006, |
| 0x062b09a7, |
| 0x062be006, |
| 0x062be9a7, |
| 0x062cc006, |
| 0x062cc9a7, |
| 0x062da006, |
| 0x062da9a7, |
| 0x062e8006, |
| 0x062e89a7, |
| 0x062f6006, |
| 0x062f69a7, |
| 0x06304006, |
| 0x063049a7, |
| 0x06312006, |
| 0x063129a7, |
| 0x06320006, |
| 0x063209a7, |
| 0x0632e006, |
| 0x0632e9a7, |
| 0x0633c006, |
| 0x0633c9a7, |
| 0x0634a006, |
| 0x0634a9a7, |
| 0x06358006, |
| 0x063589a7, |
| 0x06366006, |
| 0x063669a7, |
| 0x06374006, |
| 0x063749a7, |
| 0x06382006, |
| 0x063829a7, |
| 0x06390006, |
| 0x063909a7, |
| 0x0639e006, |
| 0x0639e9a7, |
| 0x063ac006, |
| 0x063ac9a7, |
| 0x063ba006, |
| 0x063ba9a7, |
| 0x063c8006, |
| 0x063c89a7, |
| 0x063d6006, |
| 0x063d69a7, |
| 0x063e4006, |
| 0x063e49a7, |
| 0x063f2006, |
| 0x063f29a7, |
| 0x06400006, |
| 0x064009a7, |
| 0x0640e006, |
| 0x0640e9a7, |
| 0x0641c006, |
| 0x0641c9a7, |
| 0x0642a006, |
| 0x0642a9a7, |
| 0x06438006, |
| 0x064389a7, |
| 0x06446006, |
| 0x064469a7, |
| 0x06454006, |
| 0x064549a7, |
| 0x06462006, |
| 0x064629a7, |
| 0x06470006, |
| 0x064709a7, |
| 0x0647e006, |
| 0x0647e9a7, |
| 0x0648c006, |
| 0x0648c9a7, |
| 0x0649a006, |
| 0x0649a9a7, |
| 0x064a8006, |
| 0x064a89a7, |
| 0x064b6006, |
| 0x064b69a7, |
| 0x064c4006, |
| 0x064c49a7, |
| 0x064d2006, |
| 0x064d29a7, |
| 0x064e0006, |
| 0x064e09a7, |
| 0x064ee006, |
| 0x064ee9a7, |
| 0x064fc006, |
| 0x064fc9a7, |
| 0x0650a006, |
| 0x0650a9a7, |
| 0x06518006, |
| 0x065189a7, |
| 0x06526006, |
| 0x065269a7, |
| 0x06534006, |
| 0x065349a7, |
| 0x06542006, |
| 0x065429a7, |
| 0x06550006, |
| 0x065509a7, |
| 0x0655e006, |
| 0x0655e9a7, |
| 0x0656c006, |
| 0x0656c9a7, |
| 0x0657a006, |
| 0x0657a9a7, |
| 0x06588006, |
| 0x065889a7, |
| 0x06596006, |
| 0x065969a7, |
| 0x065a4006, |
| 0x065a49a7, |
| 0x065b2006, |
| 0x065b29a7, |
| 0x065c0006, |
| 0x065c09a7, |
| 0x065ce006, |
| 0x065ce9a7, |
| 0x065dc006, |
| 0x065dc9a7, |
| 0x065ea006, |
| 0x065ea9a7, |
| 0x065f8006, |
| 0x065f89a7, |
| 0x06606006, |
| 0x066069a7, |
| 0x06614006, |
| 0x066149a7, |
| 0x06622006, |
| 0x066229a7, |
| 0x06630006, |
| 0x066309a7, |
| 0x0663e006, |
| 0x0663e9a7, |
| 0x0664c006, |
| 0x0664c9a7, |
| 0x0665a006, |
| 0x0665a9a7, |
| 0x06668006, |
| 0x066689a7, |
| 0x06676006, |
| 0x066769a7, |
| 0x06684006, |
| 0x066849a7, |
| 0x06692006, |
| 0x066929a7, |
| 0x066a0006, |
| 0x066a09a7, |
| 0x066ae006, |
| 0x066ae9a7, |
| 0x066bc006, |
| 0x066bc9a7, |
| 0x066ca006, |
| 0x066ca9a7, |
| 0x066d8006, |
| 0x066d89a7, |
| 0x066e6006, |
| 0x066e69a7, |
| 0x066f4006, |
| 0x066f49a7, |
| 0x06702006, |
| 0x067029a7, |
| 0x06710006, |
| 0x067109a7, |
| 0x0671e006, |
| 0x0671e9a7, |
| 0x0672c006, |
| 0x0672c9a7, |
| 0x0673a006, |
| 0x0673a9a7, |
| 0x06748006, |
| 0x067489a7, |
| 0x06756006, |
| 0x067569a7, |
| 0x06764006, |
| 0x067649a7, |
| 0x06772006, |
| 0x067729a7, |
| 0x06780006, |
| 0x067809a7, |
| 0x0678e006, |
| 0x0678e9a7, |
| 0x0679c006, |
| 0x0679c9a7, |
| 0x067aa006, |
| 0x067aa9a7, |
| 0x067b8006, |
| 0x067b89a7, |
| 0x067c6006, |
| 0x067c69a7, |
| 0x067d4006, |
| 0x067d49a7, |
| 0x067e2006, |
| 0x067e29a7, |
| 0x067f0006, |
| 0x067f09a7, |
| 0x067fe006, |
| 0x067fe9a7, |
| 0x0680c006, |
| 0x0680c9a7, |
| 0x0681a006, |
| 0x0681a9a7, |
| 0x06828006, |
| 0x068289a7, |
| 0x06836006, |
| 0x068369a7, |
| 0x06844006, |
| 0x068449a7, |
| 0x06852006, |
| 0x068529a7, |
| 0x06860006, |
| 0x068609a7, |
| 0x0686e006, |
| 0x0686e9a7, |
| 0x0687c006, |
| 0x0687c9a7, |
| 0x0688a006, |
| 0x0688a9a7, |
| 0x06898006, |
| 0x068989a7, |
| 0x068a6006, |
| 0x068a69a7, |
| 0x068b4006, |
| 0x068b49a7, |
| 0x068c2006, |
| 0x068c29a7, |
| 0x068d0006, |
| 0x068d09a7, |
| 0x068de006, |
| 0x068de9a7, |
| 0x068ec006, |
| 0x068ec9a7, |
| 0x068fa006, |
| 0x068fa9a7, |
| 0x06908006, |
| 0x069089a7, |
| 0x06916006, |
| 0x069169a7, |
| 0x06924006, |
| 0x069249a7, |
| 0x06932006, |
| 0x069329a7, |
| 0x06940006, |
| 0x069409a7, |
| 0x0694e006, |
| 0x0694e9a7, |
| 0x0695c006, |
| 0x0695c9a7, |
| 0x0696a006, |
| 0x0696a9a7, |
| 0x06978006, |
| 0x069789a7, |
| 0x06986006, |
| 0x069869a7, |
| 0x06994006, |
| 0x069949a7, |
| 0x069a2006, |
| 0x069a29a7, |
| 0x069b0006, |
| 0x069b09a7, |
| 0x069be006, |
| 0x069be9a7, |
| 0x069cc006, |
| 0x069cc9a7, |
| 0x069da006, |
| 0x069da9a7, |
| 0x069e8006, |
| 0x069e89a7, |
| 0x069f6006, |
| 0x069f69a7, |
| 0x06a04006, |
| 0x06a049a7, |
| 0x06a12006, |
| 0x06a129a7, |
| 0x06a20006, |
| 0x06a209a7, |
| 0x06a2e006, |
| 0x06a2e9a7, |
| 0x06a3c006, |
| 0x06a3c9a7, |
| 0x06a4a006, |
| 0x06a4a9a7, |
| 0x06a58006, |
| 0x06a589a7, |
| 0x06a66006, |
| 0x06a669a7, |
| 0x06a74006, |
| 0x06a749a7, |
| 0x06a82006, |
| 0x06a829a7, |
| 0x06a90006, |
| 0x06a909a7, |
| 0x06a9e006, |
| 0x06a9e9a7, |
| 0x06aac006, |
| 0x06aac9a7, |
| 0x06aba006, |
| 0x06aba9a7, |
| 0x06ac8006, |
| 0x06ac89a7, |
| 0x06ad6006, |
| 0x06ad69a7, |
| 0x06ae4006, |
| 0x06ae49a7, |
| 0x06af2006, |
| 0x06af29a7, |
| 0x06b00006, |
| 0x06b009a7, |
| 0x06b0e006, |
| 0x06b0e9a7, |
| 0x06b1c006, |
| 0x06b1c9a7, |
| 0x06b2a006, |
| 0x06b2a9a7, |
| 0x06b38006, |
| 0x06b389a7, |
| 0x06b46006, |
| 0x06b469a7, |
| 0x06b54006, |
| 0x06b549a7, |
| 0x06b62006, |
| 0x06b629a7, |
| 0x06b70006, |
| 0x06b709a7, |
| 0x06b7e006, |
| 0x06b7e9a7, |
| 0x06b8c006, |
| 0x06b8c9a7, |
| 0x06b9a006, |
| 0x06b9a9a7, |
| 0x06ba8006, |
| 0x06ba89a7, |
| 0x06bb6006, |
| 0x06bb69a7, |
| 0x06bc4006, |
| 0x06bc49a7, |
| 0x06bd816c, |
| 0x06be5b0b, |
| 0x07d8f002, |
| 0x07f000f2, |
| 0x07f100f2, |
| 0x07f7f801, |
| 0x07fcf012, |
| 0x07ff80b1, |
| 0x080fe802, |
| 0x08170002, |
| 0x081bb042, |
| 0x08500822, |
| 0x08502812, |
| 0x08506032, |
| 0x0851c022, |
| 0x0851f802, |
| 0x08572812, |
| 0x08692032, |
| 0x08755812, |
| 0x0877e822, |
| 0x087a30a2, |
| 0x087c1032, |
| 0x0880000a, |
| 0x08800802, |
| 0x0880100a, |
| 0x0881c0e2, |
| 0x08838002, |
| 0x08839812, |
| 0x0883f822, |
| 0x0884100a, |
| 0x0885802a, |
| 0x08859832, |
| 0x0885b81a, |
| 0x0885c812, |
| 0x0885e808, |
| 0x08861002, |
| 0x08866808, |
| 0x08880022, |
| 0x08893842, |
| 0x0889600a, |
| 0x08896872, |
| 0x088a281a, |
| 0x088b9802, |
| 0x088c0012, |
| 0x088c100a, |
| 0x088d982a, |
| 0x088db082, |
| 0x088df81a, |
| 0x088e1018, |
| 0x088e4832, |
| 0x088e700a, |
| 0x088e7802, |
| 0x0891602a, |
| 0x08917822, |
| 0x0891901a, |
| 0x0891a002, |
| 0x0891a80a, |
| 0x0891b012, |
| 0x0891f002, |
| 0x08920802, |
| 0x0896f802, |
| 0x0897002a, |
| 0x08971872, |
| 0x08980012, |
| 0x0898101a, |
| 0x0899d812, |
| 0x0899f002, |
| 0x0899f80a, |
| 0x089a0002, |
| 0x089a083a, |
| 0x089a381a, |
| 0x089a582a, |
| 0x089ab802, |
| 0x089b101a, |
| 0x089b3062, |
| 0x089b8042, |
| 0x08a1a82a, |
| 0x08a1c072, |
| 0x08a2001a, |
| 0x08a21022, |
| 0x08a2280a, |
| 0x08a23002, |
| 0x08a2f002, |
| 0x08a58002, |
| 0x08a5881a, |
| 0x08a59852, |
| 0x08a5c80a, |
| 0x08a5d002, |
| 0x08a5d81a, |
| 0x08a5e802, |
| 0x08a5f00a, |
| 0x08a5f812, |
| 0x08a6080a, |
| 0x08a61012, |
| 0x08ad7802, |
| 0x08ad801a, |
| 0x08ad9032, |
| 0x08adc03a, |
| 0x08ade012, |
| 0x08adf00a, |
| 0x08adf812, |
| 0x08aee012, |
| 0x08b1802a, |
| 0x08b19872, |
| 0x08b1d81a, |
| 0x08b1e802, |
| 0x08b1f00a, |
| 0x08b1f812, |
| 0x08b55802, |
| 0x08b5600a, |
| 0x08b56802, |
| 0x08b5701a, |
| 0x08b58052, |
| 0x08b5b00a, |
| 0x08b5b802, |
| 0x08b8e822, |
| 0x08b91032, |
| 0x08b9300a, |
| 0x08b93842, |
| 0x08c1602a, |
| 0x08c17882, |
| 0x08c1c00a, |
| 0x08c1c812, |
| 0x08c98002, |
| 0x08c9884a, |
| 0x08c9b81a, |
| 0x08c9d812, |
| 0x08c9e80a, |
| 0x08c9f002, |
| 0x08c9f808, |
| 0x08ca000a, |
| 0x08ca0808, |
| 0x08ca100a, |
| 0x08ca1802, |
| 0x08ce882a, |
| 0x08cea032, |
| 0x08ced012, |
| 0x08cee03a, |
| 0x08cf0002, |
| 0x08cf200a, |
| 0x08d00892, |
| 0x08d19852, |
| 0x08d1c80a, |
| 0x08d1d008, |
| 0x08d1d832, |
| 0x08d23802, |
| 0x08d28852, |
| 0x08d2b81a, |
| 0x08d2c822, |
| 0x08d42058, |
| 0x08d450c2, |
| 0x08d4b80a, |
| 0x08d4c012, |
| 0x08e1780a, |
| 0x08e18062, |
| 0x08e1c052, |
| 0x08e1f00a, |
| 0x08e1f802, |
| 0x08e49152, |
| 0x08e5480a, |
| 0x08e55062, |
| 0x08e5880a, |
| 0x08e59012, |
| 0x08e5a00a, |
| 0x08e5a812, |
| 0x08e98852, |
| 0x08e9d002, |
| 0x08e9e012, |
| 0x08e9f862, |
| 0x08ea3008, |
| 0x08ea3802, |
| 0x08ec504a, |
| 0x08ec8012, |
| 0x08ec981a, |
| 0x08eca802, |
| 0x08ecb00a, |
| 0x08ecb802, |
| 0x08f79812, |
| 0x08f7a81a, |
| 0x08f80012, |
| 0x08f81008, |
| 0x08f8180a, |
| 0x08f9a01a, |
| 0x08f9b042, |
| 0x08f9f01a, |
| 0x08fa0002, |
| 0x08fa080a, |
| 0x08fa1002, |
| 0x09a180f1, |
| 0x09a20002, |
| 0x09a238e2, |
| 0x0b578042, |
| 0x0b598062, |
| 0x0b7a7802, |
| 0x0b7a8b6a, |
| 0x0b7c7832, |
| 0x0b7f2002, |
| 0x0b7f801a, |
| 0x0de4e812, |
| 0x0de50031, |
| 0x0e7802d2, |
| 0x0e798162, |
| 0x0e8b2802, |
| 0x0e8b300a, |
| 0x0e8b3822, |
| 0x0e8b680a, |
| 0x0e8b7042, |
| 0x0e8b9871, |
| 0x0e8bd872, |
| 0x0e8c2862, |
| 0x0e8d5032, |
| 0x0e921022, |
| 0x0ed00362, |
| 0x0ed1db12, |
| 0x0ed3a802, |
| 0x0ed42002, |
| 0x0ed4d842, |
| 0x0ed508e2, |
| 0x0f000062, |
| 0x0f004102, |
| 0x0f00d862, |
| 0x0f011812, |
| 0x0f013042, |
| 0x0f047802, |
| 0x0f098062, |
| 0x0f157002, |
| 0x0f176032, |
| 0x0f276032, |
| 0x0f468062, |
| 0x0f4a2062, |
| 0x0f8007f3, |
| 0x0f8407f3, |
| 0x0f886823, |
| 0x0f897803, |
| 0x0f8b6053, |
| 0x0f8bf013, |
| 0x0f8c7003, |
| 0x0f8c8893, |
| 0x0f8d6b83, |
| 0x0f8f3199, |
| 0x0f9008e3, |
| 0x0f90d003, |
| 0x0f917803, |
| 0x0f919083, |
| 0x0f91e033, |
| 0x0f924ff3, |
| 0x0f964ff3, |
| 0x0f9a4ff3, |
| 0x0f9e4b13, |
| 0x0f9fd842, |
| 0x0fa007f3, |
| 0x0fa407f3, |
| 0x0fa803d3, |
| 0x0faa37f3, |
| 0x0fae37f3, |
| 0x0fb23093, |
| 0x0fb407f3, |
| 0x0fbba0b3, |
| 0x0fbeaaa3, |
| 0x0fc06033, |
| 0x0fc24073, |
| 0x0fc2d053, |
| 0x0fc44073, |
| 0x0fc57513, |
| 0x0fc862e3, |
| 0x0fc9e093, |
| 0x0fca3ff3, |
| 0x0fce3ff3, |
| 0x0fd23ff3, |
| 0x0fd63b83, |
| 0x0fe007f3, |
| 0x0fe407f3, |
| 0x0fe807f3, |
| 0x0fec07f3, |
| 0x0ff007f3, |
| 0x0ff407f3, |
| 0x0ff807f3, |
| 0x0ffc07d3, |
| 0x700001f1, |
| 0x700105f2, |
| 0x700407f1, |
| 0x700807f2, |
| 0x700c06f2, |
| 0x700f87f1, |
| 0x701387f1, |
| 0x701787f1, |
| 0x701b87f1, |
| 0x701f87f1, |
| 0x702387f1, |
| 0x702787f1, |
| 0x702b87f1, |
| 0x702f87f1, |
| 0x703387f1, |
| 0x703787f1, |
| 0x703b87f1, |
| 0x703f87f1, |
| 0x704387f1, |
| 0x704787f1, |
| 0x704b87f1, |
| 0x704f87f1, |
| 0x705387f1, |
| 0x705787f1, |
| 0x705b87f1, |
| 0x705f87f1, |
| 0x706387f1, |
| 0x706787f1, |
| 0x706b87f1, |
| 0x706f87f1, |
| 0x707387f1, |
| 0x707787f1, |
| 0x707b87f1, |
| 0x707f80f1}; |
| |
| /// Returns the extended grapheme cluster bondary property of a code point. |
| [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __property __get_property(const char32_t __code_point) noexcept { |
| // The algorithm searches for the upper bound of the range and, when found, |
| // steps back one entry. This algorithm is used since the code point can be |
| // anywhere in the range. After a lower bound is found the next step is to |
| // compare whether the code unit is indeed in the range. |
| // |
| // Since the entry contains a code unit, size, and property the code point |
| // being sought needs to be adjusted. Just shifting the code point to the |
| // proper position doesn't work; suppose an entry has property 0, size 1, |
| // and lower bound 3. This results in the entry 0x1810. |
| // When searching for code point 3 it will search for 0x1800, find 0x1810 |
| // and moves to the previous entry. Thus the lower bound value will never |
| // be found. |
| // The simple solution is to set the bits belonging to the property and |
| // size. Then the upper bound for code point 3 will return the entry after |
| // 0x1810. After moving to the previous entry the algorithm arrives at the |
| // correct entry. |
| ptrdiff_t __i = std::ranges::upper_bound(__entries, (__code_point << 11) | 0x7ffu) - __entries; |
| if (__i == 0) |
| return __property::__none; |
| |
| --__i; |
| uint32_t __upper_bound = (__entries[__i] >> 11) + ((__entries[__i] >> 4) & 0x7f); |
| if (__code_point <= __upper_bound) |
| return static_cast<__property>(__entries[__i] & 0xf); |
| |
| return __property::__none; |
| } |
| |
| } // namespace __extended_grapheme_custer_property_boundary |
| |
| #endif //_LIBCPP_STD_VER > 17 |
| |
| _LIBCPP_END_NAMESPACE_STD |
| |
| #endif // _LIBCPP___FORMAT_EXTENDED_GRAPHEME_CLUSTER_TABLE_H |