moved the unicode function generator stuff to another repo

also:
- updated github templates
This commit is contained in:
Mark Gillard 2020-08-01 21:15:09 +03:00
parent 6b8fa1bef5
commit 6f7f6c6554
49 changed files with 1665 additions and 3611 deletions

View File

@ -7,32 +7,68 @@ assignees: marzer
---
Replace the _italic_ text below with the relevant information to help me understand your bug.
<!--
Please replace the HTML comments below with the requested information.
Or leave them there and put your answers above/below them; you do you!
Thanks for contributing!
-->
## Environment
**Compiler:**
_The compiler & version, e.g. "Clang 9, Visual Studio 2019 16.5"_
<!--
The compiler & version, e.g. "Clang 9"
-->
**C++ standard mode (e.g. 17, 20, 'latest'):**
_The C++ standard level you were targeting, e.g. C++17_
<!--
The C++ standard level you were targeting, e.g. C++17
-->
**Target arch (e.g. x64):**
_The architecture you were targeting, e.g. x86, x64, ARM_
<!--
The architecture you were targeting, e.g. x86, x64, ARM
-->
**Library configuration overrides:**
<!--
If you've explicitly set any of the library configuration macros,
list them here (e.g. TOML_EXCEPTIONS=0, TOML_UNRELEASED_FEATURES=1, etc.)
-->
**Exceptions enabled:**
_Did you have exceptions enabled, or had they been explicitly disabled with something like `-fno-exceptions`?_
**Relevant `toml++` configuration customizations:**
_Did you set any overrides for the toml++ configuration options detailed in README.md?_
**Relevant compilation flags:**
_Any relevant compilation flags that might help me reproduce your issue exactly._
<!--
Any relevant compilation flags that might help me reproduce your issue exactly (e.g. -fno-exceptions).
-->
## Describe the bug
_A clear and concise description of the bug goes here._
<!--
A clear and concise description of the bug goes here.
-->
## Steps to reproduce (or a small repro code sample)
_As above. If you feel that the information you've already given covers it sufficiently and you don't need this section, you can delete it._
<!--
As above. If you feel that the information you've already given covers it sufficiently and you don't
need this section, you can delete it.
-->
## Additional information
_Any post-scripts, addendums, or additional pieces of context, as necessary._
<!--
Any post-scripts, addendums, or additional pieces of context, as necessary.
-->

View File

@ -7,16 +7,32 @@ assignees: marzer
---
Replace the _italic_ text below with the relevant information to help me understand your request.
<!--
Please replace the HTML comments below with the requested information.
Or leave them there and put your answers above/below them; you do you!
Thanks for contributing!
-->
**Is your feature request related to a problem? Please describe.**
_A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]_
<!--
"I'd like a way to Fooify all Bars in one go. Currently I have to iterate through them and
do it individually myself, which is cumbersome.
-->
**Describe the solution you'd like**
_A clear and concise description of what you want to happen._
<!--
A helper function like fooify_all_bars() would be great.
-->
**Describe alternatives you've considered**
_A clear and concise description of any alternative solutions or features you've considered._
**Additional context**
_Add any other context or screenshots about the feature request here._
<!--
Add any other context or screenshots about the feature request here.
-->

View File

@ -5,16 +5,22 @@
Thanks for contributing!
-->
**What does this change do?**
<!--
Changes all Foos to Bars.
--->
**Is it related to an exisiting bug report or feature request?**
<!--
Fixes #69.
--->
**Pre-merge checklist**
<!--
Not all of these will necessarily apply, particularly if you're not making a code change (e.g. fixing documentation).
@ -30,6 +36,8 @@
- [ ] Visual Studio 2019
- [ ] I've forever enshrined myself in glory by adding myself to the list of contributors in [README.md](https://github.com/marzer/tomlplusplus/blob/master/README.md)
**Anything else?**
<!--
According to all known laws of aviation, there is no way a bee should be able to fly.

View File

@ -19,7 +19,6 @@
#include "toml_array.h"
#include "toml_table.h"
#include "toml_node_view.h"
#include "toml_utf8_generated.h"
#include "toml_utf8.h"
#include "toml_formatter.h"
#include "toml_default_formatter.h"

View File

@ -89,6 +89,8 @@ namespace toml // non-abi namespace; this is not an error
using ::std::uint16_t;
using ::std::uint32_t;
using ::std::uint64_t;
using ::std::uint_least32_t;
using ::std::uint_least64_t;
// legacy typedefs
using string_char = char;

View File

@ -5,7 +5,6 @@
// SPDX-License-Identifier: MIT
#pragma once
#include "toml_utf8_generated.h"
#ifndef DOXYGEN
TOML_IMPL_NAMESPACE_START
@ -115,6 +114,13 @@ TOML_IMPL_NAMESPACE_START
return (codepoint >= U'0' && codepoint <= U'9');
}
[[nodiscard]]
TOML_ATTR(const)
constexpr bool is_hexadecimal_digit(char32_t c) noexcept
{
return U'0' <= c && c <= U'f' && (1ull << (static_cast<uint_least64_t>(c) - 0x30u)) & 0x7E0000007E03FFull;
}
template <typename T>
[[nodiscard]]
TOML_ATTR(const)
@ -129,6 +135,725 @@ TOML_IMPL_NAMESPACE_START
return hex_to_dec(static_cast<std::uint_least32_t>(codepoint));
}
#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 c) noexcept
{
if (c < U'\xAA' || U'\U0003134A' < c)
return false;
const auto child_index_0 = (static_cast<uint_least64_t>(c) - 0xAAull) / 0xC4Bull;
if ((1ull << child_index_0) & 0x26180C0000ull)
return false;
if ((1ull << child_index_0) & 0x8A7FFC004001CFA0ull)
return true;
switch (child_index_0)
{
case 0x00: // [0] 00AA - 0CF4
{
if (U'\u0CF2' < c)
return false;
TOML_ASSUME(U'\xAA' <= c);
constexpr uint_least64_t bitmask_table_1[] =
{
0xFFFFDFFFFFC10801u, 0xFFFFFFFFFFFFDFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0x07C000FFF0FFFFFFu, 0x0000000000000014u, 0x0000000000000000u, 0xFEFFFFF5D02F37C0u,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFEFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFF00FFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFC09FFFFFFFFFBFu, 0x000000007FFFFFFFu,
0xFFFFFFC000000000u, 0xFFC00000000001E1u, 0x00000001FFFFFFFFu, 0xFFFFFFFFFFFFFFB0u,
0x18000BFFFFFFFFFFu, 0xFFFFFF4000270030u, 0xFFFFFFF80000003Fu, 0x0FFFFFFFFFFFFFFFu,
0xFFFFFFFF00000080u, 0x44010FFFFFC10C01u, 0xFFC07FFFFFC00000u, 0xFFC0000000000001u,
0x000000003FFFF7FFu, 0xFFFFFFFFFC000000u, 0x00FFC0400008FFFFu, 0x7FFFFE67F87FFF80u,
0x00EC00100008F17Fu, 0x7FFFFE61F80400C0u, 0x001780000000DB7Fu, 0x7FFFFEEFF8000700u,
0x00C000400008FB7Fu, 0x7FFFFE67F8008000u, 0x00EC00000008FB7Fu, 0xC6358F71FA000080u,
0x000000400000FFF1u, 0x7FFFFF77F8000000u, 0x00C1C0000008FFFFu, 0x7FFFFF77F8400000u,
0x00D000000008FBFFu, 0x0000000000000180u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0xAAull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0xAAull) % 0x40ull));
// 1922 codepoints from 124 ranges (spanning a search area of 3147)
}
case 0x01: // [1] 0CF5 - 193F
{
if (c < U'\u0D04' || U'\u191E' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x027FFFFFFFFFDDFFu, 0x0FC0000038070400u, 0xF2FFBFFFFFC7FFFEu, 0xE000000000000007u,
0xF000DFFFFFFFFFFFu, 0x6000000000000007u, 0xF200DFFAFFFFFF7Du, 0x100000000F000005u,
0xF000000000000000u, 0x000001FFFFFFFFEFu, 0x00000000000001F0u, 0xF000000000000000u,
0x0800007FFFFFFFFFu, 0x3FFE1C0623C3F000u, 0xFFFFFFFFF0000400u, 0xFF7FFFFFFFFFF20Bu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFF3D7F3DFu, 0xD7F3DFFFFFFFF3DFu, 0xFFFFFFFFFFF7FFF3u,
0xFFFFFFFFFFF3DFFFu, 0xF0000000007FFFFFu, 0xFFFFFFFFF0000FFFu, 0xE3F3FFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xEFFFF9FFFFFFFFFFu, 0xFFFFFFFFF07FFFFFu, 0xF01FE07FFFFFFFFFu,
0xF0003FFFF0003DFFu, 0xF0001DFFF0003FFFu, 0x0000FFFFFFFFFFFFu, 0x0000000001080000u,
0xFFFFFFFFF0000000u, 0xF01FFFFFFFFFFFFFu, 0xFFFFF05FFFFFFFF9u, 0xF003FFFFFFFFFFFFu,
0x0000000007FFFFFFu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0xD04ull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0xD04ull) % 0x40ull));
// 2239 codepoints from 83 ranges (spanning a search area of 3147)
}
case 0x02: // [2] 1940 - 258A
{
if (c < U'\u1950' || U'\u2184' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0xFFFF001F3FFFFFFFu, 0x03FFFFFF0FFFFFFFu, 0xFFFF000000000000u, 0xFFFFFFFFFFFF007Fu,
0x000000000000001Fu, 0x0000000000800000u, 0xFFE0000000000000u, 0x0FE0000FFFFFFFFFu,
0xFFF8000000000000u, 0xFFFFFC00C001FFFFu, 0xFFFF0000003FFFFFu, 0xE0000000000FFFFFu,
0x01FF3FFFFFFFFC00u, 0x0000E7FFFFFFFFFFu, 0xFFFF046FDE000000u, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0x0000FFFFFFFFFFFFu, 0xFFFF000000000000u, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0x3F3FFFFFFFFF3F3Fu,
0xFFFF3FFFFFFFAAFFu, 0x1FDC5FDFFFFFFFFFu, 0x00001FDC1FFF0FCFu, 0x0000000000000000u,
0x0000800200000000u, 0x0000000000001FFFu, 0xFC84000000000000u, 0x43E0F3FFBD503E2Fu,
0x0018000000000000u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x1950ull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0x1950ull) % 0x40ull));
// 1184 codepoints from 59 ranges (spanning a search area of 3147)
}
case 0x03: // [3] 258B - 31D5
{
if (c < U'\u2C00' || U'\u31BF' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0xFFFF7FFFFFFFFFFFu, 0xFFFFFFFF7FFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0x000C781FFFFFFFFFu,
0xFFFF20BFFFFFFFFFu, 0x000080FFFFFFFFFFu, 0x7F7F7F7F007FFFFFu, 0x000000007F7F7F7Fu,
0x0000800000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x183E000000000060u, 0xFFFFFFFFFFFFFFFEu, 0xFFFFFFFEE07FFFFFu, 0xF7FFFFFFFFFFFFFFu,
0xFFFEFFFFFFFFFFE0u, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFF00007FFFu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x2C00ull) / 0x40ull]
& (0x1ull << (static_cast<uint_least64_t>(c) % 0x40ull));
// 771 codepoints from 30 ranges (spanning a search area of 3147)
}
case 0x04: return ((U'\u31F0' <= c && c <= U'\u31FF')) || (U'\u3400' <= c);
case 0x06: return (c <= U'\u4DBF') || (U'\u4E00' <= c);
case 0x0C: return (c <= U'\u9FFC') || (U'\uA000' <= c);
case 0x0D: // [13] A079 - ACC3
{
TOML_ASSUME(U'\uA079' <= c && c <= U'\uACC3');
constexpr uint_least64_t bitmask_table_1[] =
{
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0x00000000000FFFFFu, 0xFFFFFFFFFF800000u, 0xFFFFFFFFFFFFFF9Fu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0x0006007FFF8FFFFFu, 0x003FFFFFFFFFFF80u,
0xFFFFFF9FFFFFFFC0u, 0x00001FFFFFFFFFFFu, 0xFFFFFE7FC0000000u, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFCFFFFu, 0xF00000000003FE7Fu, 0x000003FFFFFBDDFFu, 0x07FFFFFFFFFFFF80u,
0x07FFFFFFFFFFFE00u, 0x7E00000000000000u, 0xFF801FFFFFFE0034u, 0xFFFFFF8000003FFFu,
0x03FFFFFFFFFFF80Fu, 0x007FEF8000400000u, 0x0000FFFFFFFFFFBEu, 0x3FFFFF800007FB80u,
0x317FFFFFFFFFFFE2u, 0x0E03FF9C0000029Fu, 0xFFBFBF803F3F3F00u, 0xFF81FFFBFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0x000003FFFFFFFFFFu, 0xFFFFFFFFFFFFFF80u, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0x00000000000007FFu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0xA079ull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0xA079ull) % 0x40ull));
// 2554 codepoints from 52 ranges (spanning a search area of 3147)
}
case 0x11: return (c <= U'\uD7A3') || ((U'\uD7B0' <= c && c <= U'\uD7C6')) || ((U'\uD7CB' <= c && c <= U'\uD7FB'));
case 0x14: // [20] F686 - 102D0
{
if (c < U'\uF900')
return false;
TOML_ASSUME(c <= U'\U000102D0');
constexpr uint_least64_t bitmask_table_1[] =
{
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFF3FFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0x0000000003FFFFFFu,
0x5F7FFDFFA0F8007Fu, 0xFFFFFFFFFFFFFFDBu, 0x0003FFFFFFFFFFFFu, 0xFFFFFFFFFFF80000u,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0x3FFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFF0000u, 0xFFFFFFFFFFFCFFFFu, 0x0FFF0000000000FFu,
0x0000000000000000u, 0xFFDF000000000000u, 0xFFFFFFFFFFFFFFFFu, 0x1FFFFFFFFFFFFFFFu,
0x07FFFFFE00000000u, 0xFFFFFFC007FFFFFEu, 0x7FFFFFFFFFFFFFFFu, 0x000000001CFCFCFCu,
0xB7FFFF7FFFFFEFFFu, 0x000000003FFF3FFFu, 0xFFFFFFFFFFFFFFFFu, 0x07FFFFFFFFFFFFFFu,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0xFFFFFFFF1FFFFFFFu, 0x000000000001FFFFu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0xF900ull) / 0x40ull]
& (0x1ull << (static_cast<uint_least64_t>(c) % 0x40ull));
// 1710 codepoints from 34 ranges (spanning a search area of 3147)
}
case 0x15: // [21] 102D1 - 10F1B
{
if (c < U'\U00010300')
return false;
TOML_ASSUME(c <= U'\U00010F1B');
constexpr uint_least64_t bitmask_table_1[] =
{
0xFFFFE000FFFFFFFFu, 0x003FFFFFFFFF03FDu, 0xFFFFFFFF3FFFFFFFu, 0x000000000000FF0Fu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFF00003FFFFFFFu, 0x0FFFFFFFFF0FFFFFu,
0xFFFF00FFFFFFFFFFu, 0x0000000FFFFFFFFFu, 0x0000000000000000u, 0x0000000000000000u,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0x007FFFFFFFFFFFFFu, 0x000000FF003FFFFFu, 0x0000000000000000u, 0x0000000000000000u,
0x91BFFFFFFFFFFD3Fu, 0x007FFFFF003FFFFFu, 0x000000007FFFFFFFu, 0x0037FFFF00000000u,
0x03FFFFFF003FFFFFu, 0x0000000000000000u, 0xC0FFFFFFFFFFFFFFu, 0x0000000000000000u,
0x003FFFFFFEEF0001u, 0x1FFFFFFF00000000u, 0x000000001FFFFFFFu, 0x0000001FFFFFFEFFu,
0x003FFFFFFFFFFFFFu, 0x0007FFFF003FFFFFu, 0x000000000003FFFFu, 0x0000000000000000u,
0xFFFFFFFFFFFFFFFFu, 0x00000000000001FFu, 0x0007FFFFFFFFFFFFu, 0x0007FFFFFFFFFFFFu,
0x0000000FFFFFFFFFu, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x000303FFFFFFFFFFu, 0x0000000000000000u,
0x000000000FFFFFFFu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x10300ull) / 0x40ull]
& (0x1ull << (static_cast<uint_least64_t>(c) % 0x40ull));
// 1620 codepoints from 48 ranges (spanning a search area of 3147)
}
case 0x16: // [22] 10F1C - 11B66
{
if (U'\U00011AF8' < c)
return false;
TOML_ASSUME(U'\U00010F1C' <= c);
constexpr uint_least64_t bitmask_table_1[] =
{
0x000003FFFFF00801u, 0x0000000000000000u, 0x000001FFFFF00000u, 0xFFFFFF8007FFFFF0u,
0x000000000FFFFFFFu, 0xFFFFFF8000000000u, 0xFFF00000000FFFFFu, 0xFFFFFF8000001FFFu,
0xFFF00900000007FFu, 0xFFFFFF80047FFFFFu, 0x400001E0007FFFFFu, 0xFFBFFFF000000001u,
0x000000000000FFFFu, 0xFFFBD7F000000000u, 0xFFFFFFFFFFF01FFBu, 0xFF99FE0000000007u,
0x001000023EDFDFFFu, 0x000000000000003Eu, 0x0000000000000000u, 0xFFFFFFF000000000u,
0x0000780001FFFFFFu, 0xFFFFFFF000000038u, 0x00000B00000FFFFFu, 0x0000000000000000u,
0x0000000000000000u, 0xFFFFFFF000000000u, 0xF00000000007FFFFu, 0xFFFFFFF000000000u,
0x00000100000FFFFFu, 0xFFFFFFF000000000u, 0x0000000010007FFFu, 0x7FFFFFF000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0xFFFFFFF000000000u,
0x000000000000FFFFu, 0x0000000000000000u, 0xFFFFFFFFFFFFFFF0u, 0xF6FF27F80000000Fu,
0x00000028000FFFFFu, 0x0000000000000000u, 0x001FFFFFFFFFCFF0u, 0xFFFF8010000000A0u,
0x00100000407FFFFFu, 0x00003FFFFFFFFFFFu, 0xFFFFFFF000000002u, 0x000000001FFFFFFFu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x10F1Cull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0x10F1Cull) % 0x40ull));
// 1130 codepoints from 67 ranges (spanning a search area of 3147)
}
case 0x17: // [23] 11B67 - 127B1
{
if (c < U'\U00011C00' || U'\U00012543' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x00007FFFFFFFFDFFu, 0xFFFC000000000001u, 0x000000000000FFFFu, 0x0000000000000000u,
0x0001FFFFFFFFFB7Fu, 0xFFFFFDBF00000040u, 0x00000000010003FFu, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0007FFFF00000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0001000000000000u, 0x0000000000000000u,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0x0000000003FFFFFFu, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0x000000000000000Fu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x11C00ull) / 0x40ull]
& (0x1ull << (static_cast<uint_least64_t>(c) % 0x40ull));
// 1304 codepoints from 16 ranges (spanning a search area of 3147)
}
case 0x18: return U'\U00013000' <= c;
case 0x19: return c <= U'\U0001342E';
case 0x1A: return U'\U00014400' <= c && c <= U'\U00014646';
case 0x1D: // [29] 16529 - 17173
{
if (c < U'\U00016800')
return false;
TOML_ASSUME(c <= U'\U00017173');
constexpr uint_least64_t bitmask_table_1[] =
{
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0x01FFFFFFFFFFFFFFu, 0x000000007FFFFFFFu, 0x0000000000000000u, 0x00003FFFFFFF0000u,
0x0000FFFFFFFFFFFFu, 0xE0FFFFF80000000Fu, 0x000000000000FFFFu, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0xFFFFFFFFFFFFFFFFu, 0x0000000000000000u, 0x0000000000000000u,
0xFFFFFFFFFFFFFFFFu, 0x00000000000107FFu, 0x00000000FFF80000u, 0x0000000B00000000u,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0x000FFFFFFFFFFFFFu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x16800ull) / 0x40ull]
& (0x1ull << (static_cast<uint_least64_t>(c) % 0x40ull));
// 1250 codepoints from 14 ranges (spanning a search area of 3147)
}
case 0x1F: return (c <= U'\U000187F7') || (U'\U00018800' <= c);
case 0x20: return (c <= U'\U00018CD5') || ((U'\U00018D00' <= c && c <= U'\U00018D08'));
case 0x23: // [35] 1AEEB - 1BB35
{
if (c < U'\U0001B000' || U'\U0001B2FB' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0x000000007FFFFFFFu, 0xFFFF00F000070000u, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0x0FFFFFFFFFFFFFFFu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x1B000ull) / 0x40ull]
& (0x1ull << (static_cast<uint_least64_t>(c) % 0x40ull));
// 690 codepoints from 4 ranges (spanning a search area of 3147)
}
case 0x24: // [36] 1BB36 - 1C780
{
if (c < U'\U0001BC00' || U'\U0001BC99' < c)
return false;
switch ((static_cast<uint_least64_t>(c) - 0x1BC00ull) / 0x40ull)
{
case 0x01: return c <= U'\U0001BC7C' && (1ull << (static_cast<uint_least64_t>(c) - 0x1BC40u)) & 0x1FFF07FFFFFFFFFFull;
case 0x02: return (c <= U'\U0001BC88') || (U'\U0001BC90' <= c);
default: return true;
}
// 139 codepoints from 4 ranges (spanning a search area of 3147)
}
case 0x26: // [38] 1D3CC - 1E016
{
if (c < U'\U0001D400' || U'\U0001D7CB' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFDFFFFFu, 0xEBFFDE64DFFFFFFFu, 0xFFFFFFFFFFFFFFEFu,
0x7BFFFFFFDFDFE7BFu, 0xFFFFFFFFFFFDFC5Fu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFF3FFFFFFFFFu, 0xF7FFFFFFF7FFFFFDu,
0xFFDFFFFFFFDFFFFFu, 0xFFFF7FFFFFFF7FFFu, 0xFFFFFDFFFFFFFDFFu, 0x0000000000000FF7u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x1D400ull) / 0x40ull]
& (0x1ull << (static_cast<uint_least64_t>(c) % 0x40ull));
// 936 codepoints from 30 ranges (spanning a search area of 3147)
}
case 0x27: // [39] 1E017 - 1EC61
{
if (c < U'\U0001E100' || U'\U0001E94B' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x3F801FFFFFFFFFFFu, 0x0000000000004000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x00000FFFFFFFFFFFu,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0xFFFFFFFFFFFFFFFFu, 0x000000000000001Fu,
0xFFFFFFFFFFFFFFFFu, 0x000000000000080Fu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x1E100ull) / 0x40ull]
& (0x1ull << (static_cast<uint_least64_t>(c) % 0x40ull));
// 363 codepoints from 7 ranges (spanning a search area of 3147)
}
case 0x28: // [40] 1EC62 - 1F8AC
{
if (c < U'\U0001EE00' || U'\U0001EEBB' < c)
return false;
switch ((static_cast<uint_least64_t>(c) - 0x1EE00ull) / 0x40ull)
{
case 0x00: return c <= U'\U0001EE3B' && (1ull << (static_cast<uint_least64_t>(c) - 0x1EE00u)) & 0xAF7FE96FFFFFFEFull;
case 0x01: return U'\U0001EE42' <= c && c <= U'\U0001EE7E'
&& (1ull << (static_cast<uint_least64_t>(c) - 0x1EE42u)) & 0x17BDFDE5AAA5BAA1ull;
case 0x02: return (1ull << (static_cast<uint_least64_t>(c) - 0x1EE80u)) & 0xFFFFBEE0FFFFBFFull;
TOML_NO_DEFAULT_CASE;
}
// 141 codepoints from 33 ranges (spanning a search area of 3147)
}
case 0x29: return U'\U00020000' <= c;
case 0x37: return (c <= U'\U0002A6DD') || (U'\U0002A700' <= c);
case 0x38: return (c <= U'\U0002B734') || ((U'\U0002B740' <= c && c <= U'\U0002B81D')) || (U'\U0002B820' <= c);
case 0x3A: return (c <= U'\U0002CEA1') || (U'\U0002CEB0' <= c);
case 0x3C: return c <= U'\U0002EBE0';
case 0x3D: return U'\U0002F800' <= c && c <= U'\U0002FA1D';
case 0x3E: return U'\U00030000' <= c;
TOML_NO_DEFAULT_CASE;
}
// 131189 codepoints from 620 ranges (spanning a search area of 1114112)
}
//# Returns true if a codepoint belongs to any of these categories:
//# Nd, Nl
[[nodiscard]]
TOML_ATTR(const)
constexpr bool is_unicode_number(char32_t c) noexcept
{
if (c < U'\u0660' || U'\U0001FBF9' < c)
return false;
const auto child_index_0 = (static_cast<uint_least64_t>(c) - 0x660ull) / 0x7D7ull;
if ((1ull << child_index_0) & 0x47FFDFE07FCFFFD0ull)
return false;
switch (child_index_0)
{
case 0x00: // [0] 0660 - 0E36
{
if (U'\u0DEF' < c)
return false;
TOML_ASSUME(U'\u0660' <= c);
constexpr uint_least64_t bitmask_table_1[] =
{
0x00000000000003FFu, 0x0000000000000000u, 0x0000000003FF0000u, 0x0000000000000000u,
0x0000000000000000u, 0x000003FF00000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x000000000000FFC0u, 0x0000000000000000u, 0x000000000000FFC0u, 0x0000000000000000u,
0x000000000000FFC0u, 0x0000000000000000u, 0x000000000000FFC0u, 0x0000000000000000u,
0x000000000000FFC0u, 0x0000000000000000u, 0x000000000000FFC0u, 0x0000000000000000u,
0x000000000000FFC0u, 0x0000000000000000u, 0x000000000000FFC0u, 0x0000000000000000u,
0x000000000000FFC0u, 0x0000000000000000u, 0x000000000000FFC0u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x660ull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0x660ull) % 0x40ull));
// 130 codepoints from 13 ranges (spanning a search area of 2007)
}
case 0x01: // [1] 0E37 - 160D
{
if (c < U'\u0E50' || U'\u1099' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x00000000000003FFu, 0x0000000000000000u, 0x00000000000003FFu, 0x0000000003FF0000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x03FF000000000000u,
0x0000000000000000u, 0x00000000000003FFu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0xE50ull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0xE50ull) % 0x40ull));
// 50 codepoints from 5 ranges (spanning a search area of 2007)
}
case 0x02: // [2] 160E - 1DE4
{
if (c < U'\u16EE' || U'\u1C59' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x0000000000000007u, 0x0000000000000000u, 0x0000000000000000u, 0x0FFC000000000000u,
0x00000FFC00000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x00000003FF000000u, 0x0000000000000000u, 0x00000FFC00000000u,
0x0000000000000000u, 0x0000000000000000u, 0x00000FFC0FFC0000u, 0x0000000000000000u,
0x0000000000000000u, 0x00000FFC00000000u, 0x0000000000000000u, 0x0000000000000FFCu,
0x0000000000000000u, 0x00000FFC0FFC0000u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x16EEull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0x16EEull) % 0x40ull));
// 103 codepoints from 11 ranges (spanning a search area of 2007)
}
case 0x03: return U'\u2160' <= c && c <= U'\u2188' && (1ull << (static_cast<uint_least64_t>(c) - 0x2160u)) & 0x1E7FFFFFFFFull;
case 0x05: return U'\u3007' <= c && c <= U'\u303A' && (1ull << (static_cast<uint_least64_t>(c) - 0x3007u)) & 0xE0007FC000001ull;
case 0x14: // [20] A32C - AB02
{
if (c < U'\uA620' || U'\uAA59' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x00000000000003FFu, 0x0000000000000000u, 0x0000000000000000u, 0x000000000000FFC0u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x03FF000000000000u, 0x000003FF00000000u,
0x0000000000000000u, 0x0000000000000000u, 0x03FF000000000000u, 0x0000000003FF0000u,
0x03FF000000000000u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0xA620ull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0xA620ull) % 0x40ull));
// 70 codepoints from 7 ranges (spanning a search area of 2007)
}
case 0x15: return U'\uABF0' <= c && c <= U'\uABF9';
case 0x1F: return U'\uFF10' <= c && c <= U'\uFF19';
case 0x20: // [32] 10140 - 10916
{
if (U'\U000104A9' < c)
return false;
TOML_ASSUME(U'\U00010140' <= c);
constexpr uint_least64_t bitmask_table_1[] =
{
0x001FFFFFFFFFFFFFu, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000402u, 0x0000000000000000u, 0x00000000003E0000u, 0x0000000000000000u,
0x0000000000000000u, 0x000003FF00000000u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x10140ull) / 0x40ull]
& (0x1ull << (static_cast<uint_least64_t>(c) % 0x40ull));
// 70 codepoints from 5 ranges (spanning a search area of 2007)
}
case 0x21: return ((U'\U00010D30' <= c && c <= U'\U00010D39')) || ((U'\U00011066' <= c && c <= U'\U0001106F'));
case 0x22: // [34] 110EE - 118C4
{
if (c < U'\U000110F0' || U'\U00011739' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x00000000000003FFu, 0x000000000000FFC0u, 0x0000000000000000u, 0x000003FF00000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x00000000000003FFu, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x000003FF00000000u, 0x0000000000000000u, 0x000003FF00000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x000003FF00000000u, 0x0000000000000000u, 0x0000000003FF0000u,
0x0000000000000000u, 0x00000000000003FFu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x110F0ull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0x110F0ull) % 0x40ull));
// 90 codepoints from 9 ranges (spanning a search area of 2007)
}
case 0x23: // [35] 118C5 - 1209B
{
if (c < U'\U000118E0' || U'\U00011DA9' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x00000000000003FFu, 0x03FF000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x03FF000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x03FF000000000000u, 0x0000000000000000u, 0x00000000000003FFu,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x118E0ull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0x118E0ull) % 0x40ull));
// 50 codepoints from 5 ranges (spanning a search area of 2007)
}
case 0x24: return U'\U00012400' <= c && c <= U'\U0001246E';
case 0x2D: return ((U'\U00016A60' <= c && c <= U'\U00016A69')) || ((U'\U00016B50' <= c && c <= U'\U00016B59'));
case 0x3B: return U'\U0001D7CE' <= c && c <= U'\U0001D7FF';
case 0x3C: return ((U'\U0001E140' <= c && c <= U'\U0001E149')) || ((U'\U0001E2F0' <= c && c <= U'\U0001E2F9'));
case 0x3D: return U'\U0001E950' <= c && c <= U'\U0001E959';
case 0x3F: return U'\U0001FBF0' <= c;
TOML_NO_DEFAULT_CASE;
}
// 876 codepoints from 72 ranges (spanning a search area of 1114112)
}
//# 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 c) noexcept
{
if (c < U'\u0300' || U'\U000E01EF' < c)
return false;
const auto child_index_0 = (static_cast<uint_least64_t>(c) - 0x300ull) / 0x37FCull;
if ((1ull << child_index_0) & 0x7FFFFFFFFFFFFE02ull)
return false;
switch (child_index_0)
{
case 0x00: // [0] 0300 - 3AFB
{
if (U'\u309A' < c)
return false;
TOML_ASSUME(U'\u0300' <= c);
constexpr uint_least64_t bitmask_table_1[] =
{
0xFFFFFFFFFFFFFFFFu, 0x0000FFFFFFFFFFFFu, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x00000000000000F8u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0xBFFFFFFFFFFE0000u, 0x00000000000000B6u,
0x0000000007FF0000u, 0x00010000FFFFF800u, 0x0000000000000000u, 0x00003D9F9FC00000u,
0xFFFF000000020000u, 0x00000000000007FFu, 0x0001FFC000000000u, 0x200FF80000000000u,
0x00003EEFFBC00000u, 0x000000000E000000u, 0x0000000000000000u, 0xFFFFFFFBFFF80000u,
0xDC0000000000000Fu, 0x0000000C00FEFFFFu, 0xD00000000000000Eu, 0x4000000C0080399Fu,
0xD00000000000000Eu, 0x0023000000023987u, 0xD00000000000000Eu, 0xFC00000C00003BBFu,
0xD00000000000000Eu, 0x0000000C00E0399Fu, 0xC000000000000004u, 0x0000000000803DC7u,
0xC00000000000001Fu, 0x0000000C00603DDFu, 0xD00000000000000Eu, 0x0000000C00603DDFu,
0xD80000000000000Fu, 0x0000000C00803DDFu, 0x000000000000000Eu, 0x000C0000FF5F8400u,
0x07F2000000000000u, 0x0000000000007F80u, 0x1FF2000000000000u, 0x0000000000003F00u,
0xC2A0000003000000u, 0xFFFE000000000000u, 0x1FFFFFFFFEFFE0DFu, 0x0000000000000040u,
0x7FFFF80000000000u, 0x001E3F9DC3C00000u, 0x000000003C00BFFCu, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x00000000E0000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x001C0000001C0000u, 0x000C0000000C0000u, 0xFFF0000000000000u, 0x00000000200FFFFFu,
0x0000000000003800u, 0x0000000000000000u, 0x0000020000000060u, 0x0000000000000000u,
0x0FFF0FFF00000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x000000000F800000u, 0x9FFFFFFF7FE00000u, 0xBFFF000000000000u, 0x0000000000000001u,
0xFFF000000000001Fu, 0x000FF8000000001Fu, 0x00003FFE00000007u, 0x000FFFC000000000u,
0x00FFFFF000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x039021FFFFF70000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0xFBFFFFFFFFFFFFFFu,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0001FFE21FFF0000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0003800000000000u,
0x0000000000000000u, 0x8000000000000000u, 0x0000000000000000u, 0xFFFFFFFF00000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000FC0000000000u, 0x0000000000000000u, 0x0000000006000000u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x300ull) / 0x40ull]
& (0x1ull << (static_cast<uint_least64_t>(c) % 0x40ull));
// 1106 codepoints from 156 ranges (spanning a search area of 14332)
}
case 0x02: // [2] 72F8 - AAF3
{
if (c < U'\uA66F' || U'\uAAEF' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x0001800000007FE1u, 0x0000000000000000u, 0x0000000000000006u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x21F0000010880000u, 0x0000000000000000u,
0x0000000000060000u, 0xFFFE0000007FFFE0u, 0x7F80000000010007u, 0x0000001FFF000000u,
0x00000000001E0000u, 0x004000000003FFF0u, 0xFC00000000000000u, 0x00000000601000FFu,
0x0000000000007000u, 0xF00000000005833Au, 0x0000000000000001u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0xA66Full) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0xA66Full) % 0x40ull));
// 137 codepoints from 28 ranges (spanning a search area of 14332)
}
case 0x03: return ((U'\uAAF5' <= c && c <= U'\uAAF6')) || ((U'\uABE3' <= c && c <= U'\uABEA')) || ((U'\uABEC' <= c && c <= U'\uABED'));
case 0x04: // [4] E2F0 - 11AEB
{
if (c < U'\uFB1E' || U'\U00011A99' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x0000000000000001u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0003FFFC00000000u,
0x000000000003FFFCu, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000080000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000004u,
0x0000000000000000u, 0x000000001F000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0003C1B800000000u,
0x000000021C000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000180u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x00000000000003C0u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000006000u, 0x0000000000000000u,
0x0007FF0000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000001C00000000u,
0x000001FFFC000000u, 0x0000001E00000000u, 0x000000001FFC0000u, 0x0000001C00000000u,
0x00000180007FFE00u, 0x0000001C00200000u, 0x00037807FFE00000u, 0x0000000000000000u,
0x0000000103FFC000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000003C00001FFEu,
0x0200E67F60000000u, 0x00000000007C7F30u, 0x0000000000000000u, 0x0000000000000000u,
0x000001FFFF800000u, 0x0000000000000001u, 0x0000003FFFFC0000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0xC0000007FCFE0000u, 0x0000000000000000u,
0x00000007FFFC0000u, 0x0000000000000000u, 0x0000000003FFE000u, 0x8000000000000000u,
0x0000000000003FFFu, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x000000001FFFC000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x00000035E6FC0000u, 0x0000000000000000u, 0xF3F8000000000000u, 0x00001FF800000047u,
0x3FF80201EFE00000u, 0x0FFFF00000000000u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0xFB1Eull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0xFB1Eull) % 0x40ull));
// 402 codepoints from 63 ranges (spanning a search area of 14332)
}
case 0x05: // [5] 11AEC - 152E7
{
if (c < U'\U00011C2F' || U'\U00011EF6' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x000000000001FEFFu, 0xFDFFFFF800000000u, 0x00000000000000FFu, 0x0000000000000000u,
0x00000000017F68FCu, 0x000001F6F8000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x00000000000000F0u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x11C2Full) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0x11C2Full) % 0x40ull));
// 85 codepoints from 13 ranges (spanning a search area of 14332)
}
case 0x06: // [6] 152E8 - 18AE3
{
if (c < U'\U00016AF0' || U'\U00016FF1' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x000000000000001Fu, 0x000000000000007Fu, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0xFFFFFFFE80000000u, 0x0000000780FFFFFFu, 0x0010000000000000u,
0x0000000000000003u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x16AF0ull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0x16AF0ull) % 0x40ull));
// 75 codepoints from 7 ranges (spanning a search area of 14332)
}
case 0x07: return U'\U0001BC9D' <= c && c <= U'\U0001BC9E';
case 0x08: // [8] 1C2E0 - 1FADB
{
if (c < U'\U0001D165' || U'\U0001E94A' < c)
return false;
constexpr uint_least64_t bitmask_table_1[] =
{
0x0000007F3FC03F1Fu, 0x00000000000001E0u, 0x0000000000000000u, 0x00000000E0000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0xFFFFFFFFF8000000u, 0xFFFFFFFFFFC3FFFFu,
0xF7C00000800100FFu, 0x00000000000007FFu, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0xDFCFFFFBF8000000u, 0x000000000000003Eu,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x000000000003F800u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000780u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u, 0x0000000000000000u,
0x0000000000000000u, 0x0003F80000000000u, 0x0000000000000000u, 0x0000003F80000000u,
};
return bitmask_table_1[(static_cast<uint_least64_t>(c) - 0x1D165ull) / 0x40ull]
& (0x1ull << ((static_cast<uint_least64_t>(c) - 0x1D165ull) % 0x40ull));
// 223 codepoints from 21 ranges (spanning a search area of 14332)
}
case 0x3F: return U'\U000E0100' <= c;
TOML_NO_DEFAULT_CASE;
}
// 2282 codepoints from 293 ranges (spanning a search area of 1114112)
}
#endif // TOML_LANG_UNRELEASED
[[nodiscard]]
TOML_ATTR(const)
constexpr bool is_bare_key_character(char32_t codepoint) noexcept

View File

@ -1,762 +0,0 @@
//# This file is a part of toml++ and is subject to the the terms of the MIT license.
//# Copyright (c) 2019-2020 Mark Gillard <mark.gillard@outlook.com.au>
//# 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<ui64>(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<ui64>(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<ui64>(cp) - 0xAAull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0xD04ull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0x1950ull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0x2C00ull) / 0x40ull]
& (0x1ull << (static_cast<ui64>(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<ui64>(cp) - 0xA079ull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0xF900ull) / 0x40ull]
& (0x1ull << (static_cast<ui64>(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<ui64>(cp) - 0x10300ull) / 0x40ull]
& (0x1ull << (static_cast<ui64>(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<ui64>(cp) - 0x10F1Cull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0x11C00ull) / 0x40ull]
& (0x1ull << (static_cast<ui64>(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<ui64>(cp) - 0x16800ull) / 0x40ull]
& (0x1ull << (static_cast<ui64>(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<ui64>(cp) - 0x1B000ull) / 0x40ull]
& (0x1ull << (static_cast<ui64>(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<ui64>(cp) - 0x1BC00ull) / 0x40ull)
{
case 0x01: return cp <= U'\U0001BC7C'
&& (1ull << (static_cast<ui64>(cp) - 0x1BC40ull)) & 0x1FFF07FFFFFFFFFFull;
case 0x02: return (1u << (static_cast<ui32>(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<ui64>(cp) - 0x1D400ull) / 0x40ull]
& (0x1ull << (static_cast<ui64>(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<ui64>(cp) - 0x1E100ull) / 0x40ull]
& (0x1ull << (static_cast<ui64>(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<ui64>(cp) - 0x1EE00ull) / 0x40ull)
{
case 0x00: return cp <= U'\U0001EE3B'
&& (1ull << (static_cast<ui64>(cp) - 0x1EE00ull)) & 0xAF7FE96FFFFFFEFull;
case 0x01: return cp >= U'\U0001EE42' && cp <= U'\U0001EE7E'
&& (1ull << (static_cast<ui64>(cp) - 0x1EE42ull)) & 0x17BDFDE5AAA5BAA1ull;
case 0x02: return (1ull << (static_cast<ui64>(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<ui64>(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<ui64>(cp) - 0x660ull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0xE50ull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0x16EEull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0x2160ull)) & 0x1E7FFFFFFFFull;
case 0x05: return cp >= U'\u3007' && cp <= U'\u303A'
&& (1ull << (static_cast<ui64>(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<ui64>(cp) - 0xA620ull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0x10140ull) / 0x40ull]
& (0x1ull << (static_cast<ui64>(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<ui64>(cp) - 0x110F0ull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0x118E0ull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(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<ui64>(cp) - 0x300ull) / 0x40ull]
& (0x1ull << (static_cast<ui64>(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<ui64>(cp) - 0xA66Full) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0xFB1Eull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0x11C2Full) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0x16AF0ull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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<ui64>(cp) - 0x1D165ull) / 0x40ull]
& (0x1ull << ((static_cast<ui64>(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

File diff suppressed because it is too large Load Diff

View File

@ -119,7 +119,6 @@ def main():
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -132,7 +131,6 @@ def main():
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -12,6 +12,7 @@ import traceback
import shutil
import fnmatch
import requests
import hashlib
@ -19,9 +20,12 @@ def is_tool(name):
return shutil.which(name) is not None
__script_folder = None
def get_script_folder():
return path.dirname(path.realpath(sys.argv[0]))
global __script_folder
if __script_folder is None:
__script_folder = path.dirname(path.realpath(sys.argv[0]))
return __script_folder
@ -158,14 +162,26 @@ def hash_combine(current_hash, next_hash, *nexts):
def multi_hash(obj, *objs):
assert obj is not None
h = hash(obj)
if objs:
for o in objs:
assert o is not None
h = hash_combine(h, hash(o))
return h
def multi_sha256(*objs):
assert objs
h = hashlib.sha256()
for o in objs:
assert o is not None
h.update(str(o).encode('utf-8'))
return h.hexdigest()
def run(main_func):
try:
result = main_func()

View File

@ -20,7 +20,6 @@ test_sources = [
'manipulating_tables.cpp',
'manipulating_values.cpp',
'unicode.cpp',
'unicode_generated.cpp',
'user_feedback.cpp',
'windows_compat.cpp'
]
@ -333,6 +332,10 @@ locales = [
foreach executable : executables
foreach locale : locales
test(executable[0] + ' (' + locale + ')', executable[1], env : ['LC_ALL=' + locale])
test(
executable[0] + ' (' + locale + ')', executable[1],
env : ['LC_ALL=' + locale],
workdir : meson.source_root() / 'tests'
)
endforeach
endforeach

View File

@ -4,9 +4,92 @@
// SPDX-License-Identifier: MIT
#include "tests.h"
#include "unicode.h"
using namespace toml::impl;
using func_type = bool(char32_t)noexcept;
inline constexpr func_type* funcs[] =
{
// these must be mutually-exclusive
impl::is_ascii_letter,
impl::is_ascii_whitespace,
impl::is_ascii_line_break<true>,
impl::is_decimal_digit,
impl::is_string_delimiter,
impl::is_unicode_whitespace,
impl::is_unicode_line_break,
impl::is_unicode_surrogate,
#if TOML_LANG_UNRELEASED
impl::is_unicode_letter,
impl::is_unicode_number,
impl::is_unicode_combining_mark,
#endif
};
template <typename T>
inline bool in_only(func_type* fptr, T cp) noexcept
{
if (!fptr(static_cast<char32_t>(cp)))
return false;
for (auto fn : funcs)
{
if (fn == fptr)
continue;
if (fn(static_cast<char32_t>(cp)))
return false;
}
return true;
}
inline constexpr uint32_t unimax = 0x10FFFFu;
struct codepoint_range
{
char32_t first;
char32_t last;
template <typename T, typename U>
TOML_NODISCARD_CTOR
constexpr codepoint_range(T first_, U last_) noexcept
: first{ static_cast<char32_t>(first_) },
last{ static_cast<char32_t>(last_) }
{
if (last < first)
std::swap(first, last);
}
template <typename T>
TOML_NODISCARD_CTOR
constexpr codepoint_range(T first_) noexcept
: first{ static_cast<char32_t>(first_) },
last{ first }
{}
};
inline bool in(func_type* fptr, codepoint_range range) noexcept
{
for (auto cp = range.first; cp <= range.last; cp++)
if (!fptr(cp))
return false;
return true;
}
inline bool in_only(func_type* fptr, codepoint_range range) noexcept
{
for (auto cp = range.first; cp <= range.last; cp++)
if (!in_only(fptr, cp))
return false;
return true;
}
inline bool not_in(func_type* fptr, codepoint_range range) noexcept
{
for (auto cp = range.first; cp <= range.last; cp++)
if (fptr(cp))
return false;
return true;
}
TEST_CASE("unicode - is_ascii_letter")
{
static constexpr auto fn = is_ascii_letter;
@ -113,7 +196,6 @@ TEST_CASE("unicode - is_unicode_whitespace")
REQUIRE(not_in(fn, { U'\u3001', unimax }));
}
TEST_CASE("unicode - is_unicode_line_break")
{
static constexpr auto fn = is_unicode_line_break;

View File

@ -1,91 +0,0 @@
// This file is a part of toml++ and is subject to the the terms of the MIT license.
// Copyright (c) 2019-2020 Mark Gillard <mark.gillard@outlook.com.au>
// See https://github.com/marzer/tomlplusplus/blob/master/LICENSE for the full license text.
// SPDX-License-Identifier: MIT
#pragma once
#include "tests.h"
using func_type = bool(char32_t)noexcept;
inline constexpr func_type* funcs[] =
{
// these must be mutually-exclusive
impl::is_ascii_letter,
impl::is_ascii_whitespace,
impl::is_ascii_line_break<true>,
impl::is_decimal_digit,
impl::is_string_delimiter,
impl::is_unicode_whitespace,
impl::is_unicode_line_break,
impl::is_unicode_surrogate,
#if TOML_LANG_UNRELEASED
impl::is_unicode_letter,
impl::is_unicode_number,
impl::is_unicode_combining_mark,
#endif
};
template <typename T>
inline bool in_only(func_type* fptr, T cp) noexcept
{
if (!fptr(static_cast<char32_t>(cp)))
return false;
for (auto fn : funcs)
{
if (fn == fptr)
continue;
if (fn(static_cast<char32_t>(cp)))
return false;
}
return true;
}
inline constexpr uint32_t unimax = 0x10FFFFu;
struct codepoint_range
{
char32_t first;
char32_t last;
template <typename T, typename U>
TOML_NODISCARD_CTOR
constexpr codepoint_range(T first_, U last_) noexcept
: first{ static_cast<char32_t>(first_) },
last{ static_cast<char32_t>(last_) }
{
if (last < first)
std::swap(first, last);
}
template <typename T>
TOML_NODISCARD_CTOR
constexpr codepoint_range(T first_) noexcept
: first{ static_cast<char32_t>(first_) },
last{ first }
{}
};
inline bool in(func_type* fptr, codepoint_range range) noexcept
{
for (auto cp = range.first; cp <= range.last; cp++)
if (!fptr(cp))
return false;
return true;
}
inline bool in_only(func_type* fptr, codepoint_range range) noexcept
{
for (auto cp = range.first; cp <= range.last; cp++)
if (!in_only(fptr, cp))
return false;
return true;
}
inline bool not_in(func_type* fptr, codepoint_range range) noexcept
{
for (auto cp = range.first; cp <= range.last; cp++)
if (fptr(cp))
return false;
return true;
}

View File

@ -1,714 +0,0 @@
//# This file is a part of toml++ and is subject to the the terms of the MIT license.
//# Copyright (c) 2019-2020 Mark Gillard <mark.gillard@outlook.com.au>
//# 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
#include "tests.h"
#include "unicode.h"
using namespace toml::impl;
TEST_CASE("unicode - is_hexadecimal_digit")
{
static constexpr auto fn = is_hexadecimal_digit;
// contiguous ranges of values which should return true
static constexpr codepoint_range inclusive_ranges[] =
{
{ U'0', U'9' }, { U'A', U'F' }, { U'a', U'f' },
};
for (const auto& r : inclusive_ranges)
REQUIRE(in(fn, r));
// contiguous ranges of values which should return false
static constexpr codepoint_range exclusive_ranges[] =
{
{ U'\u0000', U'/' }, { U':', U'@' }, { U'G', U'`' },
{ U'g', U'\U0010FFFF' },
};
for (const auto& r : exclusive_ranges)
REQUIRE(not_in(fn, r));
}
#if TOML_LANG_UNRELEASED // toml/issues/687 (unicode bare keys)
TEST_CASE("unicode - is_unicode_letter")
{
static constexpr auto fn = is_unicode_letter;
// contiguous ranges of values which should return true
static constexpr codepoint_range inclusive_ranges[] =
{
{ U'\u00C0', U'\u00D6' }, { U'\u00D8', U'\u00F6' }, { U'\u00F8', U'\u02C1' },
{ U'\u02C6', U'\u02D1' }, { U'\u02E0', U'\u02E4' }, { U'\u0370', U'\u0374' },
{ U'\u0376', U'\u0377' }, { U'\u037A', U'\u037D' }, { U'\u0388', U'\u038A' },
{ U'\u038E', U'\u03A1' }, { U'\u03A3', U'\u03F5' }, { U'\u03F7', U'\u0481' },
{ U'\u048A', U'\u052F' }, { U'\u0531', U'\u0556' }, { U'\u0560', U'\u0588' },
{ U'\u05D0', U'\u05EA' }, { U'\u05EF', U'\u05F2' }, { U'\u0620', U'\u064A' },
{ U'\u066E', U'\u066F' }, { U'\u0671', U'\u06D3' }, { U'\u06E5', U'\u06E6' },
{ U'\u06EE', U'\u06EF' }, { U'\u06FA', U'\u06FC' }, { U'\u0712', U'\u072F' },
{ U'\u074D', U'\u07A5' }, { U'\u07CA', U'\u07EA' }, { U'\u07F4', U'\u07F5' },
{ U'\u0800', U'\u0815' }, { U'\u0840', U'\u0858' }, { U'\u0860', U'\u086A' },
{ U'\u08A0', U'\u08B4' }, { U'\u08B6', U'\u08C7' }, { U'\u0904', U'\u0939' },
{ U'\u0958', U'\u0961' }, { U'\u0971', U'\u0980' }, { U'\u0985', U'\u098C' },
{ U'\u098F', U'\u0990' }, { U'\u0993', U'\u09A8' }, { U'\u09AA', U'\u09B0' },
{ U'\u09B6', U'\u09B9' }, { U'\u09DC', U'\u09DD' }, { U'\u09DF', U'\u09E1' },
{ U'\u09F0', U'\u09F1' }, { U'\u0A05', U'\u0A0A' }, { U'\u0A0F', U'\u0A10' },
{ U'\u0A13', U'\u0A28' }, { U'\u0A2A', U'\u0A30' }, { U'\u0A32', U'\u0A33' },
{ U'\u0A35', U'\u0A36' }, { U'\u0A38', U'\u0A39' }, { U'\u0A59', U'\u0A5C' },
{ U'\u0A72', U'\u0A74' }, { U'\u0A85', U'\u0A8D' }, { U'\u0A8F', U'\u0A91' },
{ U'\u0A93', U'\u0AA8' }, { U'\u0AAA', U'\u0AB0' }, { U'\u0AB2', U'\u0AB3' },
{ U'\u0AB5', U'\u0AB9' }, { U'\u0AE0', U'\u0AE1' }, { U'\u0B05', U'\u0B0C' },
{ U'\u0B0F', U'\u0B10' }, { U'\u0B13', U'\u0B28' }, { U'\u0B2A', U'\u0B30' },
{ U'\u0B32', U'\u0B33' }, { U'\u0B35', U'\u0B39' }, { U'\u0B5C', U'\u0B5D' },
{ U'\u0B5F', U'\u0B61' }, { U'\u0B85', U'\u0B8A' }, { U'\u0B8E', U'\u0B90' },
{ U'\u0B92', U'\u0B95' }, { U'\u0B99', U'\u0B9A' }, { U'\u0B9E', U'\u0B9F' },
{ U'\u0BA3', U'\u0BA4' }, { U'\u0BA8', U'\u0BAA' }, { U'\u0BAE', U'\u0BB9' },
{ U'\u0C05', U'\u0C0C' }, { U'\u0C0E', U'\u0C10' }, { U'\u0C12', U'\u0C28' },
{ U'\u0C2A', U'\u0C39' }, { U'\u0C58', U'\u0C5A' }, { U'\u0C60', U'\u0C61' },
{ U'\u0C85', U'\u0C8C' }, { U'\u0C8E', U'\u0C90' }, { U'\u0C92', U'\u0CA8' },
{ U'\u0CAA', U'\u0CB3' }, { U'\u0CB5', U'\u0CB9' }, { U'\u0CE0', U'\u0CE1' },
{ U'\u0CF1', U'\u0CF2' }, { U'\u0D04', U'\u0D0C' }, { U'\u0D0E', U'\u0D10' },
{ U'\u0D12', U'\u0D3A' }, { U'\u0D54', U'\u0D56' }, { U'\u0D5F', U'\u0D61' },
{ U'\u0D7A', U'\u0D7F' }, { U'\u0D85', U'\u0D96' }, { U'\u0D9A', U'\u0DB1' },
{ U'\u0DB3', U'\u0DBB' }, { U'\u0DC0', U'\u0DC6' }, { U'\u0E01', U'\u0E30' },
{ U'\u0E32', U'\u0E33' }, { U'\u0E40', U'\u0E46' }, { U'\u0E81', U'\u0E82' },
{ U'\u0E86', U'\u0E8A' }, { U'\u0E8C', U'\u0EA3' }, { U'\u0EA7', U'\u0EB0' },
{ U'\u0EB2', U'\u0EB3' }, { U'\u0EC0', U'\u0EC4' }, { U'\u0EDC', U'\u0EDF' },
{ U'\u0F40', U'\u0F47' }, { U'\u0F49', U'\u0F6C' }, { U'\u0F88', U'\u0F8C' },
{ U'\u1000', U'\u102A' }, { U'\u1050', U'\u1055' }, { U'\u105A', U'\u105D' },
{ U'\u1065', U'\u1066' }, { U'\u106E', U'\u1070' }, { U'\u1075', U'\u1081' },
{ U'\u10A0', U'\u10C5' }, { U'\u10D0', U'\u10FA' }, { U'\u10FC', U'\u1248' },
{ U'\u124A', U'\u124D' }, { U'\u1250', U'\u1256' }, { U'\u125A', U'\u125D' },
{ U'\u1260', U'\u1288' }, { U'\u128A', U'\u128D' }, { U'\u1290', U'\u12B0' },
{ U'\u12B2', U'\u12B5' }, { U'\u12B8', U'\u12BE' }, { U'\u12C2', U'\u12C5' },
{ U'\u12C8', U'\u12D6' }, { U'\u12D8', U'\u1310' }, { U'\u1312', U'\u1315' },
{ U'\u1318', U'\u135A' }, { U'\u1380', U'\u138F' }, { U'\u13A0', U'\u13F5' },
{ U'\u13F8', U'\u13FD' }, { U'\u1401', U'\u166C' }, { U'\u166F', U'\u167F' },
{ U'\u1681', U'\u169A' }, { U'\u16A0', U'\u16EA' }, { U'\u16F1', U'\u16F8' },
{ U'\u1700', U'\u170C' }, { U'\u170E', U'\u1711' }, { U'\u1720', U'\u1731' },
{ U'\u1740', U'\u1751' }, { U'\u1760', U'\u176C' }, { U'\u176E', U'\u1770' },
{ U'\u1780', U'\u17B3' }, { U'\u1820', U'\u1878' }, { U'\u1880', U'\u1884' },
{ U'\u1887', U'\u18A8' }, { U'\u18B0', U'\u18F5' }, { U'\u1900', U'\u191E' },
{ U'\u1950', U'\u196D' }, { U'\u1970', U'\u1974' }, { U'\u1980', U'\u19AB' },
{ U'\u19B0', U'\u19C9' }, { U'\u1A00', U'\u1A16' }, { U'\u1A20', U'\u1A54' },
{ U'\u1B05', U'\u1B33' }, { U'\u1B45', U'\u1B4B' }, { U'\u1B83', U'\u1BA0' },
{ U'\u1BAE', U'\u1BAF' }, { U'\u1BBA', U'\u1BE5' }, { U'\u1C00', U'\u1C23' },
{ U'\u1C4D', U'\u1C4F' }, { U'\u1C5A', U'\u1C7D' }, { U'\u1C80', U'\u1C88' },
{ U'\u1C90', U'\u1CBA' }, { U'\u1CBD', U'\u1CBF' }, { U'\u1CE9', U'\u1CEC' },
{ U'\u1CEE', U'\u1CF3' }, { U'\u1CF5', U'\u1CF6' }, { U'\u1D00', U'\u1DBF' },
{ U'\u1E00', U'\u1F15' }, { U'\u1F18', U'\u1F1D' }, { U'\u1F20', U'\u1F45' },
{ U'\u1F48', U'\u1F4D' }, { U'\u1F50', U'\u1F57' }, { U'\u1F5F', U'\u1F7D' },
{ U'\u1F80', U'\u1FB4' }, { U'\u1FB6', U'\u1FBC' }, { U'\u1FC2', U'\u1FC4' },
{ U'\u1FC6', U'\u1FCC' }, { U'\u1FD0', U'\u1FD3' }, { U'\u1FD6', U'\u1FDB' },
{ U'\u1FE0', U'\u1FEC' }, { U'\u1FF2', U'\u1FF4' }, { U'\u1FF6', U'\u1FFC' },
{ U'\u2090', U'\u209C' }, { U'\u210A', U'\u2113' }, { U'\u2119', U'\u211D' },
{ U'\u212A', U'\u212D' }, { U'\u212F', U'\u2139' }, { U'\u213C', U'\u213F' },
{ U'\u2145', U'\u2149' }, { U'\u2183', U'\u2184' }, { U'\u2C00', U'\u2C2E' },
{ U'\u2C30', U'\u2C5E' }, { U'\u2C60', U'\u2CE4' }, { U'\u2CEB', U'\u2CEE' },
{ U'\u2CF2', U'\u2CF3' }, { U'\u2D00', U'\u2D25' }, { U'\u2D30', U'\u2D67' },
{ U'\u2D80', U'\u2D96' }, { U'\u2DA0', U'\u2DA6' }, { U'\u2DA8', U'\u2DAE' },
{ U'\u2DB0', U'\u2DB6' }, { U'\u2DB8', U'\u2DBE' }, { U'\u2DC0', U'\u2DC6' },
{ U'\u2DC8', U'\u2DCE' }, { U'\u2DD0', U'\u2DD6' }, { U'\u2DD8', U'\u2DDE' },
{ U'\u3005', U'\u3006' }, { U'\u3031', U'\u3035' }, { U'\u303B', U'\u303C' },
{ U'\u3041', U'\u3096' }, { U'\u309D', U'\u309F' }, { U'\u30A1', U'\u30FA' },
{ U'\u30FC', U'\u30FF' }, { U'\u3105', U'\u312F' }, { U'\u3131', U'\u318E' },
{ U'\u31A0', U'\u31BF' }, { U'\u31F0', U'\u31FF' }, { U'\u3400', U'\u4DBE' },
{ U'\u4E00', U'\u9FFB' }, { U'\uA000', U'\uA48C' }, { U'\uA4D0', U'\uA4FD' },
{ U'\uA500', U'\uA60C' }, { U'\uA610', U'\uA61F' }, { U'\uA62A', U'\uA62B' },
{ U'\uA640', U'\uA66E' }, { U'\uA67F', U'\uA69D' }, { U'\uA6A0', U'\uA6E5' },
{ U'\uA717', U'\uA71F' }, { U'\uA722', U'\uA788' }, { U'\uA78B', U'\uA7BF' },
{ U'\uA7C2', U'\uA7CA' }, { U'\uA7F5', U'\uA801' }, { U'\uA803', U'\uA805' },
{ U'\uA807', U'\uA80A' }, { U'\uA80C', U'\uA822' }, { U'\uA840', U'\uA873' },
{ U'\uA882', U'\uA8B3' }, { U'\uA8F2', U'\uA8F7' }, { U'\uA8FD', U'\uA8FE' },
{ U'\uA90A', U'\uA925' }, { U'\uA930', U'\uA946' }, { U'\uA960', U'\uA97C' },
{ U'\uA984', U'\uA9B2' }, { U'\uA9E0', U'\uA9E4' }, { U'\uA9E6', U'\uA9EF' },
{ U'\uA9FA', U'\uA9FE' }, { U'\uAA00', U'\uAA28' }, { U'\uAA40', U'\uAA42' },
{ U'\uAA44', U'\uAA4B' }, { U'\uAA60', U'\uAA76' }, { U'\uAA7E', U'\uAAAF' },
{ U'\uAAB5', U'\uAAB6' }, { U'\uAAB9', U'\uAABD' }, { U'\uAADB', U'\uAADD' },
{ U'\uAAE0', U'\uAAEA' }, { U'\uAAF2', U'\uAAF4' }, { U'\uAB01', U'\uAB06' },
{ U'\uAB09', U'\uAB0E' }, { U'\uAB11', U'\uAB16' }, { U'\uAB20', U'\uAB26' },
{ U'\uAB28', U'\uAB2E' }, { U'\uAB30', U'\uAB5A' }, { U'\uAB5C', U'\uAB69' },
{ U'\uAB70', U'\uABE2' }, { U'\uAC00', U'\uD7A2' }, { U'\uD7B0', U'\uD7C6' },
{ U'\uD7CB', U'\uD7FB' }, { U'\uF900', U'\uFA6D' }, { U'\uFA70', U'\uFAD9' },
{ U'\uFB00', U'\uFB06' }, { U'\uFB13', U'\uFB17' }, { U'\uFB1F', U'\uFB28' },
{ U'\uFB2A', U'\uFB36' }, { U'\uFB38', U'\uFB3C' }, { U'\uFB40', U'\uFB41' },
{ U'\uFB43', U'\uFB44' }, { U'\uFB46', U'\uFBB1' }, { U'\uFBD3', U'\uFD3D' },
{ U'\uFD50', U'\uFD8F' }, { U'\uFD92', U'\uFDC7' }, { U'\uFDF0', U'\uFDFB' },
{ U'\uFE70', U'\uFE74' }, { U'\uFE76', U'\uFEFC' }, { U'\uFF21', U'\uFF3A' },
{ U'\uFF41', U'\uFF5A' }, { U'\uFF66', U'\uFFBE' }, { U'\uFFC2', U'\uFFC7' },
{ U'\uFFCA', U'\uFFCF' }, { U'\uFFD2', U'\uFFD7' }, { U'\uFFDA', U'\uFFDC' },
{ U'\U00010000', U'\U0001000B' }, { U'\U0001000D', U'\U00010026' }, { U'\U00010028', U'\U0001003A' },
{ U'\U0001003C', U'\U0001003D' }, { U'\U0001003F', U'\U0001004D' }, { U'\U00010050', U'\U0001005D' },
{ U'\U00010080', U'\U000100FA' }, { U'\U00010280', U'\U0001029C' }, { U'\U000102A0', U'\U000102D0' },
{ U'\U00010300', U'\U0001031F' }, { U'\U0001032D', U'\U00010340' }, { U'\U00010342', U'\U00010349' },
{ U'\U00010350', U'\U00010375' }, { U'\U00010380', U'\U0001039D' }, { U'\U000103A0', U'\U000103C3' },
{ U'\U000103C8', U'\U000103CF' }, { U'\U00010400', U'\U0001049D' }, { U'\U000104B0', U'\U000104D3' },
{ U'\U000104D8', U'\U000104FB' }, { U'\U00010500', U'\U00010527' }, { U'\U00010530', U'\U00010563' },
{ U'\U00010600', U'\U00010736' }, { U'\U00010740', U'\U00010755' }, { U'\U00010760', U'\U00010767' },
{ U'\U00010800', U'\U00010805' }, { U'\U0001080A', U'\U00010835' }, { U'\U00010837', U'\U00010838' },
{ U'\U0001083F', U'\U00010855' }, { U'\U00010860', U'\U00010876' }, { U'\U00010880', U'\U0001089E' },
{ U'\U000108E0', U'\U000108F2' }, { U'\U000108F4', U'\U000108F5' }, { U'\U00010900', U'\U00010915' },
{ U'\U00010920', U'\U00010939' }, { U'\U00010980', U'\U000109B7' }, { U'\U000109BE', U'\U000109BF' },
{ U'\U00010A10', U'\U00010A13' }, { U'\U00010A15', U'\U00010A17' }, { U'\U00010A19', U'\U00010A35' },
{ U'\U00010A60', U'\U00010A7C' }, { U'\U00010A80', U'\U00010A9C' }, { U'\U00010AC0', U'\U00010AC7' },
{ U'\U00010AC9', U'\U00010AE4' }, { U'\U00010B00', U'\U00010B35' }, { U'\U00010B40', U'\U00010B55' },
{ U'\U00010B60', U'\U00010B72' }, { U'\U00010B80', U'\U00010B91' }, { U'\U00010C00', U'\U00010C48' },
{ U'\U00010C80', U'\U00010CB2' }, { U'\U00010CC0', U'\U00010CF2' }, { U'\U00010D00', U'\U00010D23' },
{ U'\U00010E80', U'\U00010EA9' }, { U'\U00010EB0', U'\U00010EB1' }, { U'\U00010F00', U'\U00010F1C' },
{ U'\U00010F30', U'\U00010F45' }, { U'\U00010FB0', U'\U00010FC4' }, { U'\U00010FE0', U'\U00010FF6' },
{ U'\U00011003', U'\U00011037' }, { U'\U00011083', U'\U000110AF' }, { U'\U000110D0', U'\U000110E8' },
{ U'\U00011103', U'\U00011126' }, { U'\U00011150', U'\U00011172' }, { U'\U00011183', U'\U000111B2' },
{ U'\U000111C1', U'\U000111C4' }, { U'\U00011200', U'\U00011211' }, { U'\U00011213', U'\U0001122B' },
{ U'\U00011280', U'\U00011286' }, { U'\U0001128A', U'\U0001128D' }, { U'\U0001128F', U'\U0001129D' },
{ U'\U0001129F', U'\U000112A8' }, { U'\U000112B0', U'\U000112DE' }, { U'\U00011305', U'\U0001130C' },
{ U'\U0001130F', U'\U00011310' }, { U'\U00011313', U'\U00011328' }, { U'\U0001132A', U'\U00011330' },
{ U'\U00011332', U'\U00011333' }, { U'\U00011335', U'\U00011339' }, { U'\U0001135D', U'\U00011361' },
{ U'\U00011400', U'\U00011434' }, { U'\U00011447', U'\U0001144A' }, { U'\U0001145F', U'\U00011461' },
{ U'\U00011480', U'\U000114AF' }, { U'\U000114C4', U'\U000114C5' }, { U'\U00011580', U'\U000115AE' },
{ U'\U000115D8', U'\U000115DB' }, { U'\U00011600', U'\U0001162F' }, { U'\U00011680', U'\U000116AA' },
{ U'\U00011700', U'\U0001171A' }, { U'\U00011800', U'\U0001182B' }, { U'\U000118A0', U'\U000118DF' },
{ U'\U000118FF', U'\U00011906' }, { U'\U0001190C', U'\U00011913' }, { U'\U00011915', U'\U00011916' },
{ U'\U00011918', U'\U0001192F' }, { U'\U000119A0', U'\U000119A7' }, { U'\U000119AA', U'\U000119D0' },
{ U'\U00011A0B', U'\U00011A32' }, { U'\U00011A5C', U'\U00011A89' }, { U'\U00011AC0', U'\U00011AF8' },
{ U'\U00011C00', U'\U00011C08' }, { U'\U00011C0A', U'\U00011C2E' }, { U'\U00011C72', U'\U00011C8F' },
{ U'\U00011D00', U'\U00011D06' }, { U'\U00011D08', U'\U00011D09' }, { U'\U00011D0B', U'\U00011D30' },
{ U'\U00011D60', U'\U00011D65' }, { U'\U00011D67', U'\U00011D68' }, { U'\U00011D6A', U'\U00011D89' },
{ U'\U00011EE0', U'\U00011EF2' }, { U'\U00012000', U'\U00012399' }, { U'\U00012480', U'\U00012543' },
{ U'\U00013000', U'\U0001342E' }, { U'\U00014400', U'\U00014646' }, { U'\U00016800', U'\U00016A38' },
{ U'\U00016A40', U'\U00016A5E' }, { U'\U00016AD0', U'\U00016AED' }, { U'\U00016B00', U'\U00016B2F' },
{ U'\U00016B40', U'\U00016B43' }, { U'\U00016B63', U'\U00016B77' }, { U'\U00016B7D', U'\U00016B8F' },
{ U'\U00016E40', U'\U00016E7F' }, { U'\U00016F00', U'\U00016F4A' }, { U'\U00016F93', U'\U00016F9F' },
{ U'\U00016FE0', U'\U00016FE1' }, { U'\U00017000', U'\U000187F6' }, { U'\U00018800', U'\U00018CD5' },
{ U'\U00018D00', U'\U00018D07' }, { U'\U0001B000', U'\U0001B11E' }, { U'\U0001B150', U'\U0001B152' },
{ U'\U0001B164', U'\U0001B167' }, { U'\U0001B170', U'\U0001B2FB' }, { U'\U0001BC00', U'\U0001BC6A' },
{ U'\U0001BC70', U'\U0001BC7C' }, { U'\U0001BC80', U'\U0001BC88' }, { U'\U0001BC90', U'\U0001BC99' },
{ U'\U0001D400', U'\U0001D454' }, { U'\U0001D456', U'\U0001D49C' }, { U'\U0001D49E', U'\U0001D49F' },
{ U'\U0001D4A5', U'\U0001D4A6' }, { U'\U0001D4A9', U'\U0001D4AC' }, { U'\U0001D4AE', U'\U0001D4B9' },
{ U'\U0001D4BD', U'\U0001D4C3' }, { U'\U0001D4C5', U'\U0001D505' }, { U'\U0001D507', U'\U0001D50A' },
{ U'\U0001D50D', U'\U0001D514' }, { U'\U0001D516', U'\U0001D51C' }, { U'\U0001D51E', U'\U0001D539' },
{ U'\U0001D53B', U'\U0001D53E' }, { U'\U0001D540', U'\U0001D544' }, { U'\U0001D54A', U'\U0001D550' },
{ U'\U0001D552', U'\U0001D6A5' }, { U'\U0001D6A8', U'\U0001D6C0' }, { U'\U0001D6C2', U'\U0001D6DA' },
{ U'\U0001D6DC', U'\U0001D6FA' }, { U'\U0001D6FC', U'\U0001D714' }, { U'\U0001D716', U'\U0001D734' },
{ U'\U0001D736', U'\U0001D74E' }, { U'\U0001D750', U'\U0001D76E' }, { U'\U0001D770', U'\U0001D788' },
{ U'\U0001D78A', U'\U0001D7A8' }, { U'\U0001D7AA', U'\U0001D7C2' }, { U'\U0001D7C4', U'\U0001D7CB' },
{ U'\U0001E100', U'\U0001E12C' }, { U'\U0001E137', U'\U0001E13D' }, { U'\U0001E2C0', U'\U0001E2EB' },
{ U'\U0001E800', U'\U0001E8C4' }, { U'\U0001E900', U'\U0001E943' }, { U'\U0001EE00', U'\U0001EE03' },
{ U'\U0001EE05', U'\U0001EE1F' }, { U'\U0001EE21', U'\U0001EE22' }, { U'\U0001EE29', U'\U0001EE32' },
{ U'\U0001EE34', U'\U0001EE37' }, { U'\U0001EE4D', U'\U0001EE4F' }, { U'\U0001EE51', U'\U0001EE52' },
{ U'\U0001EE61', U'\U0001EE62' }, { U'\U0001EE67', U'\U0001EE6A' }, { U'\U0001EE6C', U'\U0001EE72' },
{ U'\U0001EE74', U'\U0001EE77' }, { U'\U0001EE79', U'\U0001EE7C' }, { U'\U0001EE80', U'\U0001EE89' },
{ U'\U0001EE8B', U'\U0001EE9B' }, { U'\U0001EEA1', U'\U0001EEA3' }, { U'\U0001EEA5', U'\U0001EEA9' },
{ U'\U0001EEAB', U'\U0001EEBB' }, { U'\U00020000', U'\U0002A6DC' }, { U'\U0002A700', U'\U0002B733' },
{ U'\U0002B740', U'\U0002B81C' }, { U'\U0002B820', U'\U0002CEA0' }, { U'\U0002CEB0', U'\U0002EBDF' },
{ U'\U0002F800', U'\U0002FA1D' }, { U'\U00030000', U'\U00031349' },
};
for (const auto& r : inclusive_ranges)
REQUIRE(in(fn, r));
// individual values which should return true
static constexpr char32_t inclusive_values[] =
{
U'\u00AA', U'\u00B5', U'\u00BA', U'\u02EC', U'\u02EE', U'\u037F',
U'\u0386', U'\u038C', U'\u0559', U'\u06D5', U'\u06FF', U'\u0710',
U'\u07B1', U'\u07FA', U'\u081A', U'\u0824', U'\u0828', U'\u093D',
U'\u0950', U'\u09B2', U'\u09BD', U'\u09CE', U'\u09FC', U'\u0A5E',
U'\u0ABD', U'\u0AD0', U'\u0AF9', U'\u0B3D', U'\u0B71', U'\u0B83',
U'\u0B9C', U'\u0BD0', U'\u0C3D', U'\u0C80', U'\u0CBD', U'\u0CDE',
U'\u0D3D', U'\u0D4E', U'\u0DBD', U'\u0E84', U'\u0EA5', U'\u0EBD',
U'\u0EC6', U'\u0F00', U'\u103F', U'\u1061', U'\u108E', U'\u10C7',
U'\u10CD', U'\u1258', U'\u12C0', U'\u17D7', U'\u17DC', U'\u18AA',
U'\u1AA7', U'\u1CFA', U'\u1F59', U'\u1F5B', U'\u1F5D', U'\u1FBE',
U'\u2071', U'\u207F', U'\u2102', U'\u2107', U'\u2115', U'\u2124',
U'\u2126', U'\u2128', U'\u214E', U'\u2D27', U'\u2D2D', U'\u2D6F',
U'\u2E2F', U'\uA8FB', U'\uA9CF', U'\uAA7A', U'\uAAB1', U'\uAAC0',
U'\uAAC2', U'\uFB1D', U'\uFB3E', U'\U00010808', U'\U0001083C', U'\U00010A00',
U'\U00010F27', U'\U00011144', U'\U00011147', U'\U00011176', U'\U000111DA', U'\U000111DC',
U'\U00011288', U'\U0001133D', U'\U00011350', U'\U000114C7', U'\U00011644', U'\U000116B8',
U'\U00011909', U'\U0001193F', U'\U00011941', U'\U000119E1', U'\U000119E3', U'\U00011A00',
U'\U00011A3A', U'\U00011A50', U'\U00011A9D', U'\U00011C40', U'\U00011D46', U'\U00011D98',
U'\U00011FB0', U'\U00016F50', U'\U00016FE3', U'\U0001D4A2', U'\U0001D4BB', U'\U0001D546',
U'\U0001E14E', U'\U0001E94B', U'\U0001EE24', U'\U0001EE27', U'\U0001EE39', U'\U0001EE3B',
U'\U0001EE42', U'\U0001EE47', U'\U0001EE49', U'\U0001EE4B', U'\U0001EE54', U'\U0001EE57',
U'\U0001EE59', U'\U0001EE5B', U'\U0001EE5D', U'\U0001EE5F', U'\U0001EE64', U'\U0001EE7E',
};
for (auto v : inclusive_values)
REQUIRE(fn(v));
// contiguous ranges of values which should return false
static constexpr codepoint_range exclusive_ranges[] =
{
{ U'\u0000', U'\u00A9' }, { U'\u00AB', U'\u00B4' }, { U'\u00B6', U'\u00B9' },
{ U'\u00BB', U'\u00BF' }, { U'\u02C2', U'\u02C5' }, { U'\u02D2', U'\u02DF' },
{ U'\u02E5', U'\u02EB' }, { U'\u02EF', U'\u036F' }, { U'\u0378', U'\u0379' },
{ U'\u0380', U'\u0385' }, { U'\u0482', U'\u0489' }, { U'\u0557', U'\u0558' },
{ U'\u055A', U'\u055F' }, { U'\u0589', U'\u05CF' }, { U'\u05EB', U'\u05EE' },
{ U'\u05F3', U'\u061F' }, { U'\u064B', U'\u066D' }, { U'\u06D6', U'\u06E4' },
{ U'\u06E7', U'\u06ED' }, { U'\u06F0', U'\u06F9' }, { U'\u06FD', U'\u06FE' },
{ U'\u0700', U'\u070F' }, { U'\u0730', U'\u074C' }, { U'\u07A6', U'\u07B0' },
{ U'\u07B2', U'\u07C9' }, { U'\u07EB', U'\u07F3' }, { U'\u07F6', U'\u07F9' },
{ U'\u07FB', U'\u07FF' }, { U'\u0816', U'\u0819' }, { U'\u081B', U'\u0823' },
{ U'\u0825', U'\u0827' }, { U'\u0829', U'\u083F' }, { U'\u0859', U'\u085F' },
{ U'\u086B', U'\u089F' }, { U'\u08C8', U'\u0903' }, { U'\u093A', U'\u093C' },
{ U'\u093E', U'\u094F' }, { U'\u0951', U'\u0957' }, { U'\u0962', U'\u0970' },
{ U'\u0981', U'\u0984' }, { U'\u098D', U'\u098E' }, { U'\u0991', U'\u0992' },
{ U'\u09B3', U'\u09B5' }, { U'\u09BA', U'\u09BC' }, { U'\u09BE', U'\u09CD' },
{ U'\u09CF', U'\u09DB' }, { U'\u09E2', U'\u09EF' }, { U'\u09F2', U'\u09FB' },
{ U'\u09FD', U'\u0A04' }, { U'\u0A0B', U'\u0A0E' }, { U'\u0A11', U'\u0A12' },
{ U'\u0A3A', U'\u0A58' }, { U'\u0A5F', U'\u0A71' }, { U'\u0A75', U'\u0A84' },
{ U'\u0ABA', U'\u0ABC' }, { U'\u0ABE', U'\u0ACF' }, { U'\u0AD1', U'\u0ADF' },
{ U'\u0AE2', U'\u0AF8' }, { U'\u0AFA', U'\u0B04' }, { U'\u0B0D', U'\u0B0E' },
{ U'\u0B11', U'\u0B12' }, { U'\u0B3A', U'\u0B3C' }, { U'\u0B3E', U'\u0B5B' },
{ U'\u0B62', U'\u0B70' }, { U'\u0B72', U'\u0B82' }, { U'\u0B8B', U'\u0B8D' },
{ U'\u0B96', U'\u0B98' }, { U'\u0BA0', U'\u0BA2' }, { U'\u0BA5', U'\u0BA7' },
{ U'\u0BAB', U'\u0BAD' }, { U'\u0BBA', U'\u0BCF' }, { U'\u0BD1', U'\u0C04' },
{ U'\u0C3A', U'\u0C3C' }, { U'\u0C3E', U'\u0C57' }, { U'\u0C5B', U'\u0C5F' },
{ U'\u0C62', U'\u0C7F' }, { U'\u0C81', U'\u0C84' }, { U'\u0CBA', U'\u0CBC' },
{ U'\u0CBE', U'\u0CDD' }, { U'\u0CE2', U'\u0CF0' }, { U'\u0CF3', U'\u0D03' },
{ U'\u0D3B', U'\u0D3C' }, { U'\u0D3E', U'\u0D4D' }, { U'\u0D4F', U'\u0D53' },
{ U'\u0D57', U'\u0D5E' }, { U'\u0D62', U'\u0D79' }, { U'\u0D80', U'\u0D84' },
{ U'\u0D97', U'\u0D99' }, { U'\u0DBE', U'\u0DBF' }, { U'\u0DC7', U'\u0E00' },
{ U'\u0E34', U'\u0E3F' }, { U'\u0E47', U'\u0E80' }, { U'\u0EB4', U'\u0EBC' },
{ U'\u0EBE', U'\u0EBF' }, { U'\u0EC7', U'\u0EDB' }, { U'\u0EE0', U'\u0EFF' },
{ U'\u0F01', U'\u0F3F' }, { U'\u0F6D', U'\u0F87' }, { U'\u0F8D', U'\u0FFF' },
{ U'\u102B', U'\u103E' }, { U'\u1040', U'\u104F' }, { U'\u1056', U'\u1059' },
{ U'\u105E', U'\u1060' }, { U'\u1062', U'\u1064' }, { U'\u1067', U'\u106D' },
{ U'\u1071', U'\u1074' }, { U'\u1082', U'\u108D' }, { U'\u108F', U'\u109F' },
{ U'\u10C8', U'\u10CC' }, { U'\u10CE', U'\u10CF' }, { U'\u124E', U'\u124F' },
{ U'\u125E', U'\u125F' }, { U'\u128E', U'\u128F' }, { U'\u12B6', U'\u12B7' },
{ U'\u12C6', U'\u12C7' }, { U'\u1316', U'\u1317' }, { U'\u135B', U'\u137F' },
{ U'\u1390', U'\u139F' }, { U'\u13F6', U'\u13F7' }, { U'\u13FE', U'\u1400' },
{ U'\u166D', U'\u166E' }, { U'\u169B', U'\u169F' }, { U'\u16EB', U'\u16F0' },
{ U'\u16F9', U'\u16FF' }, { U'\u1712', U'\u171F' }, { U'\u1732', U'\u173F' },
{ U'\u1752', U'\u175F' }, { U'\u1771', U'\u177F' }, { U'\u17B4', U'\u17D6' },
{ U'\u17D8', U'\u17DB' }, { U'\u17DD', U'\u181F' }, { U'\u1879', U'\u187F' },
{ U'\u1885', U'\u1886' }, { U'\u18AB', U'\u18AF' }, { U'\u18F6', U'\u18FF' },
{ U'\u191F', U'\u194F' }, { U'\u196E', U'\u196F' }, { U'\u1975', U'\u197F' },
{ U'\u19AC', U'\u19AF' }, { U'\u19CA', U'\u19FF' }, { U'\u1A17', U'\u1A1F' },
{ U'\u1A55', U'\u1AA6' }, { U'\u1AA8', U'\u1B04' }, { U'\u1B34', U'\u1B44' },
{ U'\u1B4C', U'\u1B82' }, { U'\u1BA1', U'\u1BAD' }, { U'\u1BB0', U'\u1BB9' },
{ U'\u1BE6', U'\u1BFF' }, { U'\u1C24', U'\u1C4C' }, { U'\u1C50', U'\u1C59' },
{ U'\u1C7E', U'\u1C7F' }, { U'\u1C89', U'\u1C8F' }, { U'\u1CBB', U'\u1CBC' },
{ U'\u1CC0', U'\u1CE8' }, { U'\u1CF7', U'\u1CF9' }, { U'\u1CFB', U'\u1CFF' },
{ U'\u1DC0', U'\u1DFF' }, { U'\u1F16', U'\u1F17' }, { U'\u1F1E', U'\u1F1F' },
{ U'\u1F46', U'\u1F47' }, { U'\u1F4E', U'\u1F4F' }, { U'\u1F7E', U'\u1F7F' },
{ U'\u1FBF', U'\u1FC1' }, { U'\u1FCD', U'\u1FCF' }, { U'\u1FD4', U'\u1FD5' },
{ U'\u1FDC', U'\u1FDF' }, { U'\u1FED', U'\u1FF1' }, { U'\u1FFD', U'\u2070' },
{ U'\u2072', U'\u207E' }, { U'\u2080', U'\u208F' }, { U'\u209D', U'\u2101' },
{ U'\u2103', U'\u2106' }, { U'\u2108', U'\u2109' }, { U'\u2116', U'\u2118' },
{ U'\u211E', U'\u2123' }, { U'\u213A', U'\u213B' }, { U'\u2140', U'\u2144' },
{ U'\u214A', U'\u214D' }, { U'\u214F', U'\u2182' }, { U'\u2185', U'\u2BFF' },
{ U'\u2CE5', U'\u2CEA' }, { U'\u2CEF', U'\u2CF1' }, { U'\u2CF4', U'\u2CFF' },
{ U'\u2D28', U'\u2D2C' }, { U'\u2D2E', U'\u2D2F' }, { U'\u2D68', U'\u2D6E' },
{ U'\u2D70', U'\u2D7F' }, { U'\u2D97', U'\u2D9F' }, { U'\u2DDF', U'\u2E2E' },
{ U'\u2E30', U'\u3004' }, { U'\u3007', U'\u3030' }, { U'\u3036', U'\u303A' },
{ U'\u303D', U'\u3040' }, { U'\u3097', U'\u309C' }, { U'\u3100', U'\u3104' },
{ U'\u318F', U'\u319F' }, { U'\u31C0', U'\u31EF' }, { U'\u3200', U'\u33FF' },
{ U'\u4DBF', U'\u4DFF' }, { U'\u9FFC', U'\u9FFF' }, { U'\uA48D', U'\uA4CF' },
{ U'\uA4FE', U'\uA4FF' }, { U'\uA60D', U'\uA60F' }, { U'\uA620', U'\uA629' },
{ U'\uA62C', U'\uA63F' }, { U'\uA66F', U'\uA67E' }, { U'\uA69E', U'\uA69F' },
{ U'\uA6E6', U'\uA716' }, { U'\uA720', U'\uA721' }, { U'\uA789', U'\uA78A' },
{ U'\uA7C0', U'\uA7C1' }, { U'\uA7CB', U'\uA7F4' }, { U'\uA823', U'\uA83F' },
{ U'\uA874', U'\uA881' }, { U'\uA8B4', U'\uA8F1' }, { U'\uA8F8', U'\uA8FA' },
{ U'\uA8FF', U'\uA909' }, { U'\uA926', U'\uA92F' }, { U'\uA947', U'\uA95F' },
{ U'\uA97D', U'\uA983' }, { U'\uA9B3', U'\uA9CE' }, { U'\uA9D0', U'\uA9DF' },
{ U'\uA9F0', U'\uA9F9' }, { U'\uAA29', U'\uAA3F' }, { U'\uAA4C', U'\uAA5F' },
{ U'\uAA77', U'\uAA79' }, { U'\uAA7B', U'\uAA7D' }, { U'\uAAB2', U'\uAAB4' },
{ U'\uAAB7', U'\uAAB8' }, { U'\uAABE', U'\uAABF' }, { U'\uAAC3', U'\uAADA' },
{ U'\uAADE', U'\uAADF' }, { U'\uAAEB', U'\uAAF1' }, { U'\uAAF5', U'\uAB00' },
{ U'\uAB07', U'\uAB08' }, { U'\uAB0F', U'\uAB10' }, { U'\uAB17', U'\uAB1F' },
{ U'\uAB6A', U'\uAB6F' }, { U'\uABE3', U'\uABFF' }, { U'\uD7A3', U'\uD7AF' },
{ U'\uD7C7', U'\uD7CA' }, { U'\uD7FC', U'\uF8FF' }, { U'\uFA6E', U'\uFA6F' },
{ U'\uFADA', U'\uFAFF' }, { U'\uFB07', U'\uFB12' }, { U'\uFB18', U'\uFB1C' },
{ U'\uFBB2', U'\uFBD2' }, { U'\uFD3E', U'\uFD4F' }, { U'\uFD90', U'\uFD91' },
{ U'\uFDC8', U'\uFDEF' }, { U'\uFDFC', U'\uFE6F' }, { U'\uFEFD', U'\uFF20' },
{ U'\uFF3B', U'\uFF40' }, { U'\uFF5B', U'\uFF65' }, { U'\uFFBF', U'\uFFC1' },
{ U'\uFFC8', U'\uFFC9' }, { U'\uFFD0', U'\uFFD1' }, { U'\uFFD8', U'\uFFD9' },
{ U'\uFFDD', U'\uFFFF' }, { U'\U0001004E', U'\U0001004F' }, { U'\U0001005E', U'\U0001007F' },
{ U'\U000100FB', U'\U0001027F' }, { U'\U0001029D', U'\U0001029F' }, { U'\U000102D1', U'\U000102FF' },
{ U'\U00010320', U'\U0001032C' }, { U'\U0001034A', U'\U0001034F' }, { U'\U00010376', U'\U0001037F' },
{ U'\U0001039E', U'\U0001039F' }, { U'\U000103C4', U'\U000103C7' }, { U'\U000103D0', U'\U000103FF' },
{ U'\U0001049E', U'\U000104AF' }, { U'\U000104D4', U'\U000104D7' }, { U'\U000104FC', U'\U000104FF' },
{ U'\U00010528', U'\U0001052F' }, { U'\U00010564', U'\U000105FF' }, { U'\U00010737', U'\U0001073F' },
{ U'\U00010756', U'\U0001075F' }, { U'\U00010768', U'\U000107FF' }, { U'\U00010806', U'\U00010807' },
{ U'\U00010839', U'\U0001083B' }, { U'\U0001083D', U'\U0001083E' }, { U'\U00010856', U'\U0001085F' },
{ U'\U00010877', U'\U0001087F' }, { U'\U0001089F', U'\U000108DF' }, { U'\U000108F6', U'\U000108FF' },
{ U'\U00010916', U'\U0001091F' }, { U'\U0001093A', U'\U0001097F' }, { U'\U000109B8', U'\U000109BD' },
{ U'\U000109C0', U'\U000109FF' }, { U'\U00010A01', U'\U00010A0F' }, { U'\U00010A36', U'\U00010A5F' },
{ U'\U00010A7D', U'\U00010A7F' }, { U'\U00010A9D', U'\U00010ABF' }, { U'\U00010AE5', U'\U00010AFF' },
{ U'\U00010B36', U'\U00010B3F' }, { U'\U00010B56', U'\U00010B5F' }, { U'\U00010B73', U'\U00010B7F' },
{ U'\U00010B92', U'\U00010BFF' }, { U'\U00010C49', U'\U00010C7F' }, { U'\U00010CB3', U'\U00010CBF' },
{ U'\U00010CF3', U'\U00010CFF' }, { U'\U00010D24', U'\U00010E7F' }, { U'\U00010EAA', U'\U00010EAF' },
{ U'\U00010EB2', U'\U00010EFF' }, { U'\U00010F1D', U'\U00010F26' }, { U'\U00010F28', U'\U00010F2F' },
{ U'\U00010F46', U'\U00010FAF' }, { U'\U00010FC5', U'\U00010FDF' }, { U'\U00010FF7', U'\U00011002' },
{ U'\U00011038', U'\U00011082' }, { U'\U000110B0', U'\U000110CF' }, { U'\U000110E9', U'\U00011102' },
{ U'\U00011127', U'\U00011143' }, { U'\U00011145', U'\U00011146' }, { U'\U00011148', U'\U0001114F' },
{ U'\U00011173', U'\U00011175' }, { U'\U00011177', U'\U00011182' }, { U'\U000111B3', U'\U000111C0' },
{ U'\U000111C5', U'\U000111D9' }, { U'\U000111DD', U'\U000111FF' }, { U'\U0001122C', U'\U0001127F' },
{ U'\U000112A9', U'\U000112AF' }, { U'\U000112DF', U'\U00011304' }, { U'\U0001130D', U'\U0001130E' },
{ U'\U00011311', U'\U00011312' }, { U'\U0001133A', U'\U0001133C' }, { U'\U0001133E', U'\U0001134F' },
{ U'\U00011351', U'\U0001135C' }, { U'\U00011362', U'\U000113FF' }, { U'\U00011435', U'\U00011446' },
{ U'\U0001144B', U'\U0001145E' }, { U'\U00011462', U'\U0001147F' }, { U'\U000114B0', U'\U000114C3' },
{ U'\U000114C8', U'\U0001157F' }, { U'\U000115AF', U'\U000115D7' }, { U'\U000115DC', U'\U000115FF' },
{ U'\U00011630', U'\U00011643' }, { U'\U00011645', U'\U0001167F' }, { U'\U000116AB', U'\U000116B7' },
{ U'\U000116B9', U'\U000116FF' }, { U'\U0001171B', U'\U000117FF' }, { U'\U0001182C', U'\U0001189F' },
{ U'\U000118E0', U'\U000118FE' }, { U'\U00011907', U'\U00011908' }, { U'\U0001190A', U'\U0001190B' },
{ U'\U00011930', U'\U0001193E' }, { U'\U00011942', U'\U0001199F' }, { U'\U000119A8', U'\U000119A9' },
{ U'\U000119D1', U'\U000119E0' }, { U'\U000119E4', U'\U000119FF' }, { U'\U00011A01', U'\U00011A0A' },
{ U'\U00011A33', U'\U00011A39' }, { U'\U00011A3B', U'\U00011A4F' }, { U'\U00011A51', U'\U00011A5B' },
{ U'\U00011A8A', U'\U00011A9C' }, { U'\U00011A9E', U'\U00011ABF' }, { U'\U00011AF9', U'\U00011BFF' },
{ U'\U00011C2F', U'\U00011C3F' }, { U'\U00011C41', U'\U00011C71' }, { U'\U00011C90', U'\U00011CFF' },
{ U'\U00011D31', U'\U00011D45' }, { U'\U00011D47', U'\U00011D5F' }, { U'\U00011D8A', U'\U00011D97' },
{ U'\U00011D99', U'\U00011EDF' }, { U'\U00011EF3', U'\U00011FAF' }, { U'\U00011FB1', U'\U00011FFF' },
{ U'\U0001239A', U'\U0001247F' }, { U'\U00012544', U'\U00012FFF' }, { U'\U0001342F', U'\U000143FF' },
{ U'\U00014647', U'\U000167FF' }, { U'\U00016A39', U'\U00016A3F' }, { U'\U00016A5F', U'\U00016ACF' },
{ U'\U00016AEE', U'\U00016AFF' }, { U'\U00016B30', U'\U00016B3F' }, { U'\U00016B44', U'\U00016B62' },
{ U'\U00016B78', U'\U00016B7C' }, { U'\U00016B90', U'\U00016E3F' }, { U'\U00016E80', U'\U00016EFF' },
{ U'\U00016F4B', U'\U00016F4F' }, { U'\U00016F51', U'\U00016F92' }, { U'\U00016FA0', U'\U00016FDF' },
{ U'\U00016FE4', U'\U00016FFF' }, { U'\U000187F7', U'\U000187FF' }, { U'\U00018CD6', U'\U00018CFF' },
{ U'\U00018D08', U'\U0001AFFF' }, { U'\U0001B11F', U'\U0001B14F' }, { U'\U0001B153', U'\U0001B163' },
{ U'\U0001B168', U'\U0001B16F' }, { U'\U0001B2FC', U'\U0001BBFF' }, { U'\U0001BC6B', U'\U0001BC6F' },
{ U'\U0001BC7D', U'\U0001BC7F' }, { U'\U0001BC89', U'\U0001BC8F' }, { U'\U0001BC9A', U'\U0001D3FF' },
{ U'\U0001D4A0', U'\U0001D4A1' }, { U'\U0001D4A3', U'\U0001D4A4' }, { U'\U0001D4A7', U'\U0001D4A8' },
{ U'\U0001D50B', U'\U0001D50C' }, { U'\U0001D547', U'\U0001D549' }, { U'\U0001D6A6', U'\U0001D6A7' },
{ U'\U0001D7CC', U'\U0001E0FF' }, { U'\U0001E12D', U'\U0001E136' }, { U'\U0001E13E', U'\U0001E14D' },
{ U'\U0001E14F', U'\U0001E2BF' }, { U'\U0001E2EC', U'\U0001E7FF' }, { U'\U0001E8C5', U'\U0001E8FF' },
{ U'\U0001E944', U'\U0001E94A' }, { U'\U0001E94C', U'\U0001EDFF' }, { U'\U0001EE25', U'\U0001EE26' },
{ U'\U0001EE3C', U'\U0001EE41' }, { U'\U0001EE43', U'\U0001EE46' }, { U'\U0001EE55', U'\U0001EE56' },
{ U'\U0001EE65', U'\U0001EE66' }, { U'\U0001EE9C', U'\U0001EEA0' }, { U'\U0001EEBC', U'\U0001FFFF' },
{ U'\U0002A6DD', U'\U0002A6FF' }, { U'\U0002B734', U'\U0002B73F' }, { U'\U0002B81D', U'\U0002B81F' },
{ U'\U0002CEA1', U'\U0002CEAF' }, { U'\U0002EBE0', U'\U0002F7FF' }, { U'\U0002FA1E', U'\U0002FFFF' },
{ U'\U0003134A', U'\U0010FFFF' },
};
for (const auto& r : exclusive_ranges)
REQUIRE(not_in(fn, r));
// individual values which should return false
static constexpr char32_t exclusive_values[] =
{
U'\u00D7', U'\u00F7', U'\u02ED', U'\u0375', U'\u037E', U'\u0387',
U'\u038B', U'\u038D', U'\u03A2', U'\u03F6', U'\u0530', U'\u0670',
U'\u06D4', U'\u0711', U'\u08B5', U'\u09A9', U'\u09B1', U'\u09DE',
U'\u0A29', U'\u0A31', U'\u0A34', U'\u0A37', U'\u0A5D', U'\u0A8E',
U'\u0A92', U'\u0AA9', U'\u0AB1', U'\u0AB4', U'\u0B29', U'\u0B31',
U'\u0B34', U'\u0B5E', U'\u0B84', U'\u0B91', U'\u0B9B', U'\u0B9D',
U'\u0C0D', U'\u0C11', U'\u0C29', U'\u0C8D', U'\u0C91', U'\u0CA9',
U'\u0CB4', U'\u0CDF', U'\u0D0D', U'\u0D11', U'\u0DB2', U'\u0DBC',
U'\u0E31', U'\u0E83', U'\u0E85', U'\u0E8B', U'\u0EA4', U'\u0EA6',
U'\u0EB1', U'\u0EC5', U'\u0F48', U'\u10C6', U'\u10FB', U'\u1249',
U'\u1257', U'\u1259', U'\u1289', U'\u12B1', U'\u12BF', U'\u12C1',
U'\u12D7', U'\u1311', U'\u1680', U'\u170D', U'\u176D', U'\u18A9',
U'\u1CED', U'\u1CF4', U'\u1F58', U'\u1F5A', U'\u1F5C', U'\u1F5E',
U'\u1FB5', U'\u1FBD', U'\u1FC5', U'\u1FF5', U'\u2114', U'\u2125',
U'\u2127', U'\u2129', U'\u212E', U'\u2C2F', U'\u2C5F', U'\u2D26',
U'\u2DA7', U'\u2DAF', U'\u2DB7', U'\u2DBF', U'\u2DC7', U'\u2DCF',
U'\u2DD7', U'\u30A0', U'\u30FB', U'\u3130', U'\uA802', U'\uA806',
U'\uA80B', U'\uA8FC', U'\uA9E5', U'\uA9FF', U'\uAA43', U'\uAAB0',
U'\uAAC1', U'\uAB27', U'\uAB2F', U'\uAB5B', U'\uFB1E', U'\uFB29',
U'\uFB37', U'\uFB3D', U'\uFB3F', U'\uFB42', U'\uFB45', U'\uFE75',
U'\U0001000C', U'\U00010027', U'\U0001003B', U'\U0001003E', U'\U00010341', U'\U00010809',
U'\U00010836', U'\U000108F3', U'\U00010A14', U'\U00010A18', U'\U00010AC8', U'\U000111DB',
U'\U00011212', U'\U00011287', U'\U00011289', U'\U0001128E', U'\U0001129E', U'\U00011329',
U'\U00011331', U'\U00011334', U'\U000114C6', U'\U00011914', U'\U00011917', U'\U00011940',
U'\U000119E2', U'\U00011C09', U'\U00011D07', U'\U00011D0A', U'\U00011D66', U'\U00011D69',
U'\U00016FE2', U'\U0001D455', U'\U0001D49D', U'\U0001D4AD', U'\U0001D4BA', U'\U0001D4BC',
U'\U0001D4C4', U'\U0001D506', U'\U0001D515', U'\U0001D51D', U'\U0001D53A', U'\U0001D53F',
U'\U0001D545', U'\U0001D551', U'\U0001D6C1', U'\U0001D6DB', U'\U0001D6FB', U'\U0001D715',
U'\U0001D735', U'\U0001D74F', U'\U0001D76F', U'\U0001D789', U'\U0001D7A9', U'\U0001D7C3',
U'\U0001EE04', U'\U0001EE20', U'\U0001EE23', U'\U0001EE28', U'\U0001EE33', U'\U0001EE38',
U'\U0001EE3A', U'\U0001EE48', U'\U0001EE4A', U'\U0001EE4C', U'\U0001EE50', U'\U0001EE53',
U'\U0001EE58', U'\U0001EE5A', U'\U0001EE5C', U'\U0001EE5E', U'\U0001EE60', U'\U0001EE63',
U'\U0001EE6B', U'\U0001EE73', U'\U0001EE78', U'\U0001EE7D', U'\U0001EE7F', U'\U0001EE8A',
U'\U0001EEA4', U'\U0001EEAA',
};
for (auto v : exclusive_values)
REQUIRE(!fn(v));
}
TEST_CASE("unicode - is_unicode_number")
{
static constexpr auto fn = is_unicode_number;
// contiguous ranges of values which should return true
static constexpr codepoint_range inclusive_ranges[] =
{
{ U'\u0660', U'\u0669' }, { U'\u06F0', U'\u06F9' }, { U'\u07C0', U'\u07C9' },
{ U'\u0966', U'\u096F' }, { U'\u09E6', U'\u09EF' }, { U'\u0A66', U'\u0A6F' },
{ U'\u0AE6', U'\u0AEF' }, { U'\u0B66', U'\u0B6F' }, { U'\u0BE6', U'\u0BEF' },
{ U'\u0C66', U'\u0C6F' }, { U'\u0CE6', U'\u0CEF' }, { U'\u0D66', U'\u0D6F' },
{ U'\u0DE6', U'\u0DEF' }, { U'\u0E50', U'\u0E59' }, { U'\u0ED0', U'\u0ED9' },
{ U'\u0F20', U'\u0F29' }, { U'\u1040', U'\u1049' }, { U'\u1090', U'\u1099' },
{ U'\u16EE', U'\u16F0' }, { U'\u17E0', U'\u17E9' }, { U'\u1810', U'\u1819' },
{ U'\u1946', U'\u194F' }, { U'\u19D0', U'\u19D9' }, { U'\u1A80', U'\u1A89' },
{ U'\u1A90', U'\u1A99' }, { U'\u1B50', U'\u1B59' }, { U'\u1BB0', U'\u1BB9' },
{ U'\u1C40', U'\u1C49' }, { U'\u1C50', U'\u1C59' }, { U'\u2160', U'\u2182' },
{ U'\u2185', U'\u2188' }, { U'\u3021', U'\u3029' }, { U'\u3038', U'\u303A' },
{ U'\uA620', U'\uA629' }, { U'\uA6E6', U'\uA6EF' }, { U'\uA8D0', U'\uA8D9' },
{ U'\uA900', U'\uA909' }, { U'\uA9D0', U'\uA9D9' }, { U'\uA9F0', U'\uA9F9' },
{ U'\uAA50', U'\uAA59' }, { U'\uABF0', U'\uABF9' }, { U'\uFF10', U'\uFF19' },
{ U'\U00010140', U'\U00010174' }, { U'\U000103D1', U'\U000103D5' }, { U'\U000104A0', U'\U000104A9' },
{ U'\U00010D30', U'\U00010D39' }, { U'\U00011066', U'\U0001106F' }, { U'\U000110F0', U'\U000110F9' },
{ U'\U00011136', U'\U0001113F' }, { U'\U000111D0', U'\U000111D9' }, { U'\U000112F0', U'\U000112F9' },
{ U'\U00011450', U'\U00011459' }, { U'\U000114D0', U'\U000114D9' }, { U'\U00011650', U'\U00011659' },
{ U'\U000116C0', U'\U000116C9' }, { U'\U00011730', U'\U00011739' }, { U'\U000118E0', U'\U000118E9' },
{ U'\U00011950', U'\U00011959' }, { U'\U00011C50', U'\U00011C59' }, { U'\U00011D50', U'\U00011D59' },
{ U'\U00011DA0', U'\U00011DA9' }, { U'\U00012400', U'\U0001246E' }, { U'\U00016A60', U'\U00016A69' },
{ U'\U00016B50', U'\U00016B59' }, { U'\U0001D7CE', U'\U0001D7FF' }, { U'\U0001E140', U'\U0001E149' },
{ U'\U0001E2F0', U'\U0001E2F9' }, { U'\U0001E950', U'\U0001E959' }, { U'\U0001FBF0', U'\U0001FBF9' },
};
for (const auto& r : inclusive_ranges)
REQUIRE(in(fn, r));
// individual values which should return true
static constexpr char32_t inclusive_values[] =
{
U'\u3007', U'\U00010341', U'\U0001034A',
};
for (auto v : inclusive_values)
REQUIRE(fn(v));
// contiguous ranges of values which should return false
static constexpr codepoint_range exclusive_ranges[] =
{
{ U'\u0000', U'\u065F' }, { U'\u066A', U'\u06EF' }, { U'\u06FA', U'\u07BF' },
{ U'\u07CA', U'\u0965' }, { U'\u0970', U'\u09E5' }, { U'\u09F0', U'\u0A65' },
{ U'\u0A70', U'\u0AE5' }, { U'\u0AF0', U'\u0B65' }, { U'\u0B70', U'\u0BE5' },
{ U'\u0BF0', U'\u0C65' }, { U'\u0C70', U'\u0CE5' }, { U'\u0CF0', U'\u0D65' },
{ U'\u0D70', U'\u0DE5' }, { U'\u0DF0', U'\u0E4F' }, { U'\u0E5A', U'\u0ECF' },
{ U'\u0EDA', U'\u0F1F' }, { U'\u0F2A', U'\u103F' }, { U'\u104A', U'\u108F' },
{ U'\u109A', U'\u16ED' }, { U'\u16F1', U'\u17DF' }, { U'\u17EA', U'\u180F' },
{ U'\u181A', U'\u1945' }, { U'\u1950', U'\u19CF' }, { U'\u19DA', U'\u1A7F' },
{ U'\u1A8A', U'\u1A8F' }, { U'\u1A9A', U'\u1B4F' }, { U'\u1B5A', U'\u1BAF' },
{ U'\u1BBA', U'\u1C3F' }, { U'\u1C4A', U'\u1C4F' }, { U'\u1C5A', U'\u215F' },
{ U'\u2183', U'\u2184' }, { U'\u2189', U'\u3006' }, { U'\u3008', U'\u3020' },
{ U'\u302A', U'\u3037' }, { U'\u303B', U'\uA61F' }, { U'\uA62A', U'\uA6E5' },
{ U'\uA6F0', U'\uA8CF' }, { U'\uA8DA', U'\uA8FF' }, { U'\uA90A', U'\uA9CF' },
{ U'\uA9DA', U'\uA9EF' }, { U'\uA9FA', U'\uAA4F' }, { U'\uAA5A', U'\uABEF' },
{ U'\uABFA', U'\uFF0F' }, { U'\uFF1A', U'\U0001013F' }, { U'\U00010175', U'\U00010340' },
{ U'\U00010342', U'\U00010349' }, { U'\U0001034B', U'\U000103D0' }, { U'\U000103D6', U'\U0001049F' },
{ U'\U000104AA', U'\U00010D2F' }, { U'\U00010D3A', U'\U00011065' }, { U'\U00011070', U'\U000110EF' },
{ U'\U000110FA', U'\U00011135' }, { U'\U00011140', U'\U000111CF' }, { U'\U000111DA', U'\U000112EF' },
{ U'\U000112FA', U'\U0001144F' }, { U'\U0001145A', U'\U000114CF' }, { U'\U000114DA', U'\U0001164F' },
{ U'\U0001165A', U'\U000116BF' }, { U'\U000116CA', U'\U0001172F' }, { U'\U0001173A', U'\U000118DF' },
{ U'\U000118EA', U'\U0001194F' }, { U'\U0001195A', U'\U00011C4F' }, { U'\U00011C5A', U'\U00011D4F' },
{ U'\U00011D5A', U'\U00011D9F' }, { U'\U00011DAA', U'\U000123FF' }, { U'\U0001246F', U'\U00016A5F' },
{ U'\U00016A6A', U'\U00016B4F' }, { U'\U00016B5A', U'\U0001D7CD' }, { U'\U0001D800', U'\U0001E13F' },
{ U'\U0001E14A', U'\U0001E2EF' }, { U'\U0001E2FA', U'\U0001E94F' }, { U'\U0001E95A', U'\U0001FBEF' },
{ U'\U0001FBFA', U'\U0010FFFF' },
};
for (const auto& r : exclusive_ranges)
REQUIRE(not_in(fn, r));
}
TEST_CASE("unicode - is_unicode_combining_mark")
{
static constexpr auto fn = is_unicode_combining_mark;
// contiguous ranges of values which should return true
static constexpr codepoint_range inclusive_ranges[] =
{
{ U'\u0300', U'\u036F' }, { U'\u0483', U'\u0487' }, { U'\u0591', U'\u05BD' },
{ U'\u05C1', U'\u05C2' }, { U'\u05C4', U'\u05C5' }, { U'\u0610', U'\u061A' },
{ U'\u064B', U'\u065F' }, { U'\u06D6', U'\u06DC' }, { U'\u06DF', U'\u06E4' },
{ U'\u06E7', U'\u06E8' }, { U'\u06EA', U'\u06ED' }, { U'\u0730', U'\u074A' },
{ U'\u07A6', U'\u07B0' }, { U'\u07EB', U'\u07F3' }, { U'\u0816', U'\u0819' },
{ U'\u081B', U'\u0823' }, { U'\u0825', U'\u0827' }, { U'\u0829', U'\u082D' },
{ U'\u0859', U'\u085B' }, { U'\u08D3', U'\u08E1' }, { U'\u08E3', U'\u0903' },
{ U'\u093A', U'\u093C' }, { U'\u093E', U'\u094F' }, { U'\u0951', U'\u0957' },
{ U'\u0962', U'\u0963' }, { U'\u0981', U'\u0983' }, { U'\u09BE', U'\u09C4' },
{ U'\u09C7', U'\u09C8' }, { U'\u09CB', U'\u09CD' }, { U'\u09E2', U'\u09E3' },
{ U'\u0A01', U'\u0A03' }, { U'\u0A3E', U'\u0A42' }, { U'\u0A47', U'\u0A48' },
{ U'\u0A4B', U'\u0A4D' }, { U'\u0A70', U'\u0A71' }, { U'\u0A81', U'\u0A83' },
{ U'\u0ABE', U'\u0AC5' }, { U'\u0AC7', U'\u0AC9' }, { U'\u0ACB', U'\u0ACD' },
{ U'\u0AE2', U'\u0AE3' }, { U'\u0AFA', U'\u0AFF' }, { U'\u0B01', U'\u0B03' },
{ U'\u0B3E', U'\u0B44' }, { U'\u0B47', U'\u0B48' }, { U'\u0B4B', U'\u0B4D' },
{ U'\u0B55', U'\u0B57' }, { U'\u0B62', U'\u0B63' }, { U'\u0BBE', U'\u0BC2' },
{ U'\u0BC6', U'\u0BC8' }, { U'\u0BCA', U'\u0BCD' }, { U'\u0C00', U'\u0C04' },
{ U'\u0C3E', U'\u0C44' }, { U'\u0C46', U'\u0C48' }, { U'\u0C4A', U'\u0C4D' },
{ U'\u0C55', U'\u0C56' }, { U'\u0C62', U'\u0C63' }, { U'\u0C81', U'\u0C83' },
{ U'\u0CBE', U'\u0CC4' }, { U'\u0CC6', U'\u0CC8' }, { U'\u0CCA', U'\u0CCD' },
{ U'\u0CD5', U'\u0CD6' }, { U'\u0CE2', U'\u0CE3' }, { U'\u0D00', U'\u0D03' },
{ U'\u0D3B', U'\u0D3C' }, { U'\u0D3E', U'\u0D44' }, { U'\u0D46', U'\u0D48' },
{ U'\u0D4A', U'\u0D4D' }, { U'\u0D62', U'\u0D63' }, { U'\u0D81', U'\u0D83' },
{ U'\u0DCF', U'\u0DD4' }, { U'\u0DD8', U'\u0DDF' }, { U'\u0DF2', U'\u0DF3' },
{ U'\u0E34', U'\u0E3A' }, { U'\u0E47', U'\u0E4E' }, { U'\u0EB4', U'\u0EBC' },
{ U'\u0EC8', U'\u0ECD' }, { U'\u0F18', U'\u0F19' }, { U'\u0F3E', U'\u0F3F' },
{ U'\u0F71', U'\u0F84' }, { U'\u0F86', U'\u0F87' }, { U'\u0F8D', U'\u0F97' },
{ U'\u0F99', U'\u0FBC' }, { U'\u102B', U'\u103E' }, { U'\u1056', U'\u1059' },
{ U'\u105E', U'\u1060' }, { U'\u1062', U'\u1064' }, { U'\u1067', U'\u106D' },
{ U'\u1071', U'\u1074' }, { U'\u1082', U'\u108D' }, { U'\u109A', U'\u109D' },
{ U'\u135D', U'\u135F' }, { U'\u1712', U'\u1714' }, { U'\u1732', U'\u1734' },
{ U'\u1752', U'\u1753' }, { U'\u1772', U'\u1773' }, { U'\u17B4', U'\u17D3' },
{ U'\u180B', U'\u180D' }, { U'\u1885', U'\u1886' }, { U'\u1920', U'\u192B' },
{ U'\u1930', U'\u193B' }, { U'\u1A17', U'\u1A1B' }, { U'\u1A55', U'\u1A5E' },
{ U'\u1A60', U'\u1A7C' }, { U'\u1AB0', U'\u1ABD' }, { U'\u1ABF', U'\u1AC0' },
{ U'\u1B00', U'\u1B04' }, { U'\u1B34', U'\u1B44' }, { U'\u1B6B', U'\u1B73' },
{ U'\u1B80', U'\u1B82' }, { U'\u1BA1', U'\u1BAD' }, { U'\u1BE6', U'\u1BF3' },
{ U'\u1C24', U'\u1C37' }, { U'\u1CD0', U'\u1CD2' }, { U'\u1CD4', U'\u1CE8' },
{ U'\u1CF7', U'\u1CF9' }, { U'\u1DC0', U'\u1DF9' }, { U'\u1DFB', U'\u1DFF' },
{ U'\u20D0', U'\u20DC' }, { U'\u20E5', U'\u20F0' }, { U'\u2CEF', U'\u2CF1' },
{ U'\u2DE0', U'\u2DFF' }, { U'\u302A', U'\u302F' }, { U'\u3099', U'\u309A' },
{ U'\uA674', U'\uA67D' }, { U'\uA69E', U'\uA69F' }, { U'\uA6F0', U'\uA6F1' },
{ U'\uA823', U'\uA827' }, { U'\uA880', U'\uA881' }, { U'\uA8B4', U'\uA8C5' },
{ U'\uA8E0', U'\uA8F1' }, { U'\uA926', U'\uA92D' }, { U'\uA947', U'\uA953' },
{ U'\uA980', U'\uA983' }, { U'\uA9B3', U'\uA9C0' }, { U'\uAA29', U'\uAA36' },
{ U'\uAA4C', U'\uAA4D' }, { U'\uAA7B', U'\uAA7D' }, { U'\uAAB2', U'\uAAB4' },
{ U'\uAAB7', U'\uAAB8' }, { U'\uAABE', U'\uAABF' }, { U'\uAAEB', U'\uAAEF' },
{ U'\uAAF5', U'\uAAF6' }, { U'\uABE3', U'\uABEA' }, { U'\uABEC', U'\uABED' },
{ U'\uFE00', U'\uFE0F' }, { U'\uFE20', U'\uFE2F' }, { U'\U00010376', U'\U0001037A' },
{ U'\U00010A01', U'\U00010A03' }, { U'\U00010A05', U'\U00010A06' }, { U'\U00010A0C', U'\U00010A0F' },
{ U'\U00010A38', U'\U00010A3A' }, { U'\U00010AE5', U'\U00010AE6' }, { U'\U00010D24', U'\U00010D27' },
{ U'\U00010EAB', U'\U00010EAC' }, { U'\U00010F46', U'\U00010F50' }, { U'\U00011000', U'\U00011002' },
{ U'\U00011038', U'\U00011046' }, { U'\U0001107F', U'\U00011082' }, { U'\U000110B0', U'\U000110BA' },
{ U'\U00011100', U'\U00011102' }, { U'\U00011127', U'\U00011134' }, { U'\U00011145', U'\U00011146' },
{ U'\U00011180', U'\U00011182' }, { U'\U000111B3', U'\U000111C0' }, { U'\U000111C9', U'\U000111CC' },
{ U'\U000111CE', U'\U000111CF' }, { U'\U0001122C', U'\U00011237' }, { U'\U000112DF', U'\U000112EA' },
{ U'\U00011300', U'\U00011303' }, { U'\U0001133B', U'\U0001133C' }, { U'\U0001133E', U'\U00011344' },
{ U'\U00011347', U'\U00011348' }, { U'\U0001134B', U'\U0001134D' }, { U'\U00011362', U'\U00011363' },
{ U'\U00011366', U'\U0001136C' }, { U'\U00011370', U'\U00011374' }, { U'\U00011435', U'\U00011446' },
{ U'\U000114B0', U'\U000114C3' }, { U'\U000115AF', U'\U000115B5' }, { U'\U000115B8', U'\U000115C0' },
{ U'\U000115DC', U'\U000115DD' }, { U'\U00011630', U'\U00011640' }, { U'\U000116AB', U'\U000116B7' },
{ U'\U0001171D', U'\U0001172B' }, { U'\U0001182C', U'\U0001183A' }, { U'\U00011930', U'\U00011935' },
{ U'\U00011937', U'\U00011938' }, { U'\U0001193B', U'\U0001193E' }, { U'\U00011942', U'\U00011943' },
{ U'\U000119D1', U'\U000119D7' }, { U'\U000119DA', U'\U000119E0' }, { U'\U00011A01', U'\U00011A0A' },
{ U'\U00011A33', U'\U00011A39' }, { U'\U00011A3B', U'\U00011A3E' }, { U'\U00011A51', U'\U00011A5B' },
{ U'\U00011A8A', U'\U00011A99' }, { U'\U00011C2F', U'\U00011C36' }, { U'\U00011C38', U'\U00011C3F' },
{ U'\U00011C92', U'\U00011CA7' }, { U'\U00011CA9', U'\U00011CB6' }, { U'\U00011D31', U'\U00011D36' },
{ U'\U00011D3C', U'\U00011D3D' }, { U'\U00011D3F', U'\U00011D45' }, { U'\U00011D8A', U'\U00011D8E' },
{ U'\U00011D90', U'\U00011D91' }, { U'\U00011D93', U'\U00011D97' }, { U'\U00011EF3', U'\U00011EF6' },
{ U'\U00016AF0', U'\U00016AF4' }, { U'\U00016B30', U'\U00016B36' }, { U'\U00016F51', U'\U00016F87' },
{ U'\U00016F8F', U'\U00016F92' }, { U'\U00016FF0', U'\U00016FF1' }, { U'\U0001BC9D', U'\U0001BC9E' },
{ U'\U0001D165', U'\U0001D169' }, { U'\U0001D16D', U'\U0001D172' }, { U'\U0001D17B', U'\U0001D182' },
{ U'\U0001D185', U'\U0001D18B' }, { U'\U0001D1AA', U'\U0001D1AD' }, { U'\U0001D242', U'\U0001D244' },
{ U'\U0001DA00', U'\U0001DA36' }, { U'\U0001DA3B', U'\U0001DA6C' }, { U'\U0001DA9B', U'\U0001DA9F' },
{ U'\U0001DAA1', U'\U0001DAAF' }, { U'\U0001E000', U'\U0001E006' }, { U'\U0001E008', U'\U0001E018' },
{ U'\U0001E01B', U'\U0001E021' }, { U'\U0001E023', U'\U0001E024' }, { U'\U0001E026', U'\U0001E02A' },
{ U'\U0001E130', U'\U0001E136' }, { U'\U0001E2EC', U'\U0001E2EF' }, { U'\U0001E8D0', U'\U0001E8D6' },
{ U'\U0001E944', U'\U0001E94A' }, { U'\U000E0100', U'\U000E01EF' },
};
for (const auto& r : inclusive_ranges)
REQUIRE(in(fn, r));
// individual values which should return true
static constexpr char32_t inclusive_values[] =
{
U'\u05BF', U'\u05C7', U'\u0670', U'\u0711', U'\u07FD', U'\u09BC',
U'\u09D7', U'\u09FE', U'\u0A3C', U'\u0A51', U'\u0A75', U'\u0ABC',
U'\u0B3C', U'\u0B82', U'\u0BD7', U'\u0CBC', U'\u0D57', U'\u0DCA',
U'\u0DD6', U'\u0E31', U'\u0EB1', U'\u0F35', U'\u0F37', U'\u0F39',
U'\u0FC6', U'\u108F', U'\u17DD', U'\u18A9', U'\u1A7F', U'\u1CED',
U'\u1CF4', U'\u20E1', U'\u2D7F', U'\uA66F', U'\uA802', U'\uA806',
U'\uA80B', U'\uA82C', U'\uA8FF', U'\uA9E5', U'\uAA43', U'\uAAB0',
U'\uAAC1', U'\uFB1E', U'\U000101FD', U'\U000102E0', U'\U00010A3F', U'\U00011173',
U'\U0001123E', U'\U00011357', U'\U0001145E', U'\U00011940', U'\U000119E4', U'\U00011A47',
U'\U00011D3A', U'\U00011D47', U'\U00016F4F', U'\U00016FE4', U'\U0001DA75', U'\U0001DA84',
};
for (auto v : inclusive_values)
REQUIRE(fn(v));
// contiguous ranges of values which should return false
static constexpr codepoint_range exclusive_ranges[] =
{
{ U'\u0000', U'\u02FF' }, { U'\u0370', U'\u0482' }, { U'\u0488', U'\u0590' },
{ U'\u05C8', U'\u060F' }, { U'\u061B', U'\u064A' }, { U'\u0660', U'\u066F' },
{ U'\u0671', U'\u06D5' }, { U'\u06DD', U'\u06DE' }, { U'\u06E5', U'\u06E6' },
{ U'\u06EE', U'\u0710' }, { U'\u0712', U'\u072F' }, { U'\u074B', U'\u07A5' },
{ U'\u07B1', U'\u07EA' }, { U'\u07F4', U'\u07FC' }, { U'\u07FE', U'\u0815' },
{ U'\u082E', U'\u0858' }, { U'\u085C', U'\u08D2' }, { U'\u0904', U'\u0939' },
{ U'\u0958', U'\u0961' }, { U'\u0964', U'\u0980' }, { U'\u0984', U'\u09BB' },
{ U'\u09C5', U'\u09C6' }, { U'\u09C9', U'\u09CA' }, { U'\u09CE', U'\u09D6' },
{ U'\u09D8', U'\u09E1' }, { U'\u09E4', U'\u09FD' }, { U'\u09FF', U'\u0A00' },
{ U'\u0A04', U'\u0A3B' }, { U'\u0A43', U'\u0A46' }, { U'\u0A49', U'\u0A4A' },
{ U'\u0A4E', U'\u0A50' }, { U'\u0A52', U'\u0A6F' }, { U'\u0A72', U'\u0A74' },
{ U'\u0A76', U'\u0A80' }, { U'\u0A84', U'\u0ABB' }, { U'\u0ACE', U'\u0AE1' },
{ U'\u0AE4', U'\u0AF9' }, { U'\u0B04', U'\u0B3B' }, { U'\u0B45', U'\u0B46' },
{ U'\u0B49', U'\u0B4A' }, { U'\u0B4E', U'\u0B54' }, { U'\u0B58', U'\u0B61' },
{ U'\u0B64', U'\u0B81' }, { U'\u0B83', U'\u0BBD' }, { U'\u0BC3', U'\u0BC5' },
{ U'\u0BCE', U'\u0BD6' }, { U'\u0BD8', U'\u0BFF' }, { U'\u0C05', U'\u0C3D' },
{ U'\u0C4E', U'\u0C54' }, { U'\u0C57', U'\u0C61' }, { U'\u0C64', U'\u0C80' },
{ U'\u0C84', U'\u0CBB' }, { U'\u0CCE', U'\u0CD4' }, { U'\u0CD7', U'\u0CE1' },
{ U'\u0CE4', U'\u0CFF' }, { U'\u0D04', U'\u0D3A' }, { U'\u0D4E', U'\u0D56' },
{ U'\u0D58', U'\u0D61' }, { U'\u0D64', U'\u0D80' }, { U'\u0D84', U'\u0DC9' },
{ U'\u0DCB', U'\u0DCE' }, { U'\u0DE0', U'\u0DF1' }, { U'\u0DF4', U'\u0E30' },
{ U'\u0E32', U'\u0E33' }, { U'\u0E3B', U'\u0E46' }, { U'\u0E4F', U'\u0EB0' },
{ U'\u0EB2', U'\u0EB3' }, { U'\u0EBD', U'\u0EC7' }, { U'\u0ECE', U'\u0F17' },
{ U'\u0F1A', U'\u0F34' }, { U'\u0F3A', U'\u0F3D' }, { U'\u0F40', U'\u0F70' },
{ U'\u0F88', U'\u0F8C' }, { U'\u0FBD', U'\u0FC5' }, { U'\u0FC7', U'\u102A' },
{ U'\u103F', U'\u1055' }, { U'\u105A', U'\u105D' }, { U'\u1065', U'\u1066' },
{ U'\u106E', U'\u1070' }, { U'\u1075', U'\u1081' }, { U'\u1090', U'\u1099' },
{ U'\u109E', U'\u135C' }, { U'\u1360', U'\u1711' }, { U'\u1715', U'\u1731' },
{ U'\u1735', U'\u1751' }, { U'\u1754', U'\u1771' }, { U'\u1774', U'\u17B3' },
{ U'\u17D4', U'\u17DC' }, { U'\u17DE', U'\u180A' }, { U'\u180E', U'\u1884' },
{ U'\u1887', U'\u18A8' }, { U'\u18AA', U'\u191F' }, { U'\u192C', U'\u192F' },
{ U'\u193C', U'\u1A16' }, { U'\u1A1C', U'\u1A54' }, { U'\u1A7D', U'\u1A7E' },
{ U'\u1A80', U'\u1AAF' }, { U'\u1AC1', U'\u1AFF' }, { U'\u1B05', U'\u1B33' },
{ U'\u1B45', U'\u1B6A' }, { U'\u1B74', U'\u1B7F' }, { U'\u1B83', U'\u1BA0' },
{ U'\u1BAE', U'\u1BE5' }, { U'\u1BF4', U'\u1C23' }, { U'\u1C38', U'\u1CCF' },
{ U'\u1CE9', U'\u1CEC' }, { U'\u1CEE', U'\u1CF3' }, { U'\u1CF5', U'\u1CF6' },
{ U'\u1CFA', U'\u1DBF' }, { U'\u1E00', U'\u20CF' }, { U'\u20DD', U'\u20E0' },
{ U'\u20E2', U'\u20E4' }, { U'\u20F1', U'\u2CEE' }, { U'\u2CF2', U'\u2D7E' },
{ U'\u2D80', U'\u2DDF' }, { U'\u2E00', U'\u3029' }, { U'\u3030', U'\u3098' },
{ U'\u309B', U'\uA66E' }, { U'\uA670', U'\uA673' }, { U'\uA67E', U'\uA69D' },
{ U'\uA6A0', U'\uA6EF' }, { U'\uA6F2', U'\uA801' }, { U'\uA803', U'\uA805' },
{ U'\uA807', U'\uA80A' }, { U'\uA80C', U'\uA822' }, { U'\uA828', U'\uA82B' },
{ U'\uA82D', U'\uA87F' }, { U'\uA882', U'\uA8B3' }, { U'\uA8C6', U'\uA8DF' },
{ U'\uA8F2', U'\uA8FE' }, { U'\uA900', U'\uA925' }, { U'\uA92E', U'\uA946' },
{ U'\uA954', U'\uA97F' }, { U'\uA984', U'\uA9B2' }, { U'\uA9C1', U'\uA9E4' },
{ U'\uA9E6', U'\uAA28' }, { U'\uAA37', U'\uAA42' }, { U'\uAA44', U'\uAA4B' },
{ U'\uAA4E', U'\uAA7A' }, { U'\uAA7E', U'\uAAAF' }, { U'\uAAB5', U'\uAAB6' },
{ U'\uAAB9', U'\uAABD' }, { U'\uAAC2', U'\uAAEA' }, { U'\uAAF0', U'\uAAF4' },
{ U'\uAAF7', U'\uABE2' }, { U'\uABEE', U'\uFB1D' }, { U'\uFB1F', U'\uFDFF' },
{ U'\uFE10', U'\uFE1F' }, { U'\uFE30', U'\U000101FC' }, { U'\U000101FE', U'\U000102DF' },
{ U'\U000102E1', U'\U00010375' }, { U'\U0001037B', U'\U00010A00' }, { U'\U00010A07', U'\U00010A0B' },
{ U'\U00010A10', U'\U00010A37' }, { U'\U00010A3B', U'\U00010A3E' }, { U'\U00010A40', U'\U00010AE4' },
{ U'\U00010AE7', U'\U00010D23' }, { U'\U00010D28', U'\U00010EAA' }, { U'\U00010EAD', U'\U00010F45' },
{ U'\U00010F51', U'\U00010FFF' }, { U'\U00011003', U'\U00011037' }, { U'\U00011047', U'\U0001107E' },
{ U'\U00011083', U'\U000110AF' }, { U'\U000110BB', U'\U000110FF' }, { U'\U00011103', U'\U00011126' },
{ U'\U00011135', U'\U00011144' }, { U'\U00011147', U'\U00011172' }, { U'\U00011174', U'\U0001117F' },
{ U'\U00011183', U'\U000111B2' }, { U'\U000111C1', U'\U000111C8' }, { U'\U000111D0', U'\U0001122B' },
{ U'\U00011238', U'\U0001123D' }, { U'\U0001123F', U'\U000112DE' }, { U'\U000112EB', U'\U000112FF' },
{ U'\U00011304', U'\U0001133A' }, { U'\U00011345', U'\U00011346' }, { U'\U00011349', U'\U0001134A' },
{ U'\U0001134E', U'\U00011356' }, { U'\U00011358', U'\U00011361' }, { U'\U00011364', U'\U00011365' },
{ U'\U0001136D', U'\U0001136F' }, { U'\U00011375', U'\U00011434' }, { U'\U00011447', U'\U0001145D' },
{ U'\U0001145F', U'\U000114AF' }, { U'\U000114C4', U'\U000115AE' }, { U'\U000115B6', U'\U000115B7' },
{ U'\U000115C1', U'\U000115DB' }, { U'\U000115DE', U'\U0001162F' }, { U'\U00011641', U'\U000116AA' },
{ U'\U000116B8', U'\U0001171C' }, { U'\U0001172C', U'\U0001182B' }, { U'\U0001183B', U'\U0001192F' },
{ U'\U00011939', U'\U0001193A' }, { U'\U00011944', U'\U000119D0' }, { U'\U000119D8', U'\U000119D9' },
{ U'\U000119E1', U'\U000119E3' }, { U'\U000119E5', U'\U00011A00' }, { U'\U00011A0B', U'\U00011A32' },
{ U'\U00011A3F', U'\U00011A46' }, { U'\U00011A48', U'\U00011A50' }, { U'\U00011A5C', U'\U00011A89' },
{ U'\U00011A9A', U'\U00011C2E' }, { U'\U00011C40', U'\U00011C91' }, { U'\U00011CB7', U'\U00011D30' },
{ U'\U00011D37', U'\U00011D39' }, { U'\U00011D48', U'\U00011D89' }, { U'\U00011D98', U'\U00011EF2' },
{ U'\U00011EF7', U'\U00016AEF' }, { U'\U00016AF5', U'\U00016B2F' }, { U'\U00016B37', U'\U00016F4E' },
{ U'\U00016F88', U'\U00016F8E' }, { U'\U00016F93', U'\U00016FE3' }, { U'\U00016FE5', U'\U00016FEF' },
{ U'\U00016FF2', U'\U0001BC9C' }, { U'\U0001BC9F', U'\U0001D164' }, { U'\U0001D16A', U'\U0001D16C' },
{ U'\U0001D173', U'\U0001D17A' }, { U'\U0001D183', U'\U0001D184' }, { U'\U0001D18C', U'\U0001D1A9' },
{ U'\U0001D1AE', U'\U0001D241' }, { U'\U0001D245', U'\U0001D9FF' }, { U'\U0001DA37', U'\U0001DA3A' },
{ U'\U0001DA6D', U'\U0001DA74' }, { U'\U0001DA76', U'\U0001DA83' }, { U'\U0001DA85', U'\U0001DA9A' },
{ U'\U0001DAB0', U'\U0001DFFF' }, { U'\U0001E019', U'\U0001E01A' }, { U'\U0001E02B', U'\U0001E12F' },
{ U'\U0001E137', U'\U0001E2EB' }, { U'\U0001E2F0', U'\U0001E8CF' }, { U'\U0001E8D7', U'\U0001E943' },
{ U'\U0001E94B', U'\U000E00FF' }, { U'\U000E01F0', U'\U0010FFFF' },
};
for (const auto& r : exclusive_ranges)
REQUIRE(not_in(fn, r));
// individual values which should return false
static constexpr char32_t exclusive_values[] =
{
U'\u05BE', U'\u05C0', U'\u05C3', U'\u05C6', U'\u06E9', U'\u081A',
U'\u0824', U'\u0828', U'\u08E2', U'\u093D', U'\u0950', U'\u09BD',
U'\u0A3D', U'\u0ABD', U'\u0AC6', U'\u0ACA', U'\u0B00', U'\u0B3D',
U'\u0BC9', U'\u0C45', U'\u0C49', U'\u0CBD', U'\u0CC5', U'\u0CC9',
U'\u0D3D', U'\u0D45', U'\u0D49', U'\u0DD5', U'\u0DD7', U'\u0F36',
U'\u0F38', U'\u0F85', U'\u0F98', U'\u1061', U'\u108E', U'\u1A5F',
U'\u1ABE', U'\u1CD3', U'\u1DFA', U'\uAAB1', U'\uAAC0', U'\uABEB',
U'\U00010A04', U'\U000111CD', U'\U0001133D', U'\U00011936', U'\U0001193F', U'\U00011941',
U'\U00011A3A', U'\U00011C37', U'\U00011CA8', U'\U00011D3B', U'\U00011D3E', U'\U00011D46',
U'\U00011D8F', U'\U00011D92', U'\U00016F50', U'\U0001DAA0', U'\U0001E007', U'\U0001E022',
U'\U0001E025',
};
for (auto v : exclusive_values)
REQUIRE(!fn(v));
}
#endif // TOML_LANG_UNRELEASED

1502
toml.hpp

File diff suppressed because it is too large Load Diff

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -76,7 +76,6 @@
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\..\tests\unicode.cpp" />
<ClCompile Include="..\..\tests\unicode_generated.cpp" />
<ClCompile Include="..\..\tests\user_feedback.cpp" />
<ClCompile Include="..\..\tests\windows_compat.cpp" />
</ItemGroup>
@ -89,7 +88,6 @@
<ClInclude Include="..\..\tests\settings.h" />
<ClInclude Include="..\..\tests\tests.h" />
<ClInclude Include="..\..\tests\tloptional.h" />
<ClInclude Include="..\..\tests\unicode.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\tests\meson.build" />

View File

@ -54,7 +54,6 @@
<ClInclude Include="..\include\toml++\toml_preprocessor.h" />
<ClInclude Include="..\include\toml++\toml_print_to_stream.h" />
<ClInclude Include="..\include\toml++\toml_table.hpp" />
<ClInclude Include="..\include\toml++\toml_utf8_generated.h" />
<ClInclude Include="..\include\toml++\toml_table.h" />
<ClInclude Include="..\include\toml++\toml_utf8.h" />
<ClInclude Include="..\include\toml++\toml_utf8_streams.h" />
@ -78,7 +77,6 @@
<None Include="..\python\generate_conformance_tests.py" />
<None Include="..\python\generate_documentation.py" />
<None Include="..\python\generate_single_header.py" />
<None Include="..\python\generate_unicode_functions.py" />
<None Include="..\python\generate_windows_test_targets.py" />
<None Include="..\python\utils.py" />
<None Include="..\README.md" />

View File

@ -40,9 +40,6 @@
<ClInclude Include="..\include\toml++\toml_utf8.h">
<Filter>include</Filter>
</ClInclude>
<ClInclude Include="..\include\toml++\toml_utf8_generated.h">
<Filter>include</Filter>
</ClInclude>
<ClInclude Include="..\include\toml++\toml_value.h">
<Filter>include</Filter>
</ClInclude>
@ -95,9 +92,6 @@
<None Include="..\python\generate_single_header.py">
<Filter>python</Filter>
</None>
<None Include="..\python\generate_unicode_functions.py">
<Filter>python</Filter>
</None>
<None Include="..\docs\Doxyfile">
<Filter>docs</Filter>
</None>