REAL
Regular Expression Algorithmic Library — constexpr C++20 regex
Loading...
Searching...
No Matches
unicode_binprop.hpp File Reference

Unicode binary-property ranges for \p{...} (UCD contract; PCRE2-parity properties). More...

#include "real/version.hpp"
#include <cstddef>
#include <cstdint>
#include <span>
#include <string_view>
#include "real/core/program.hpp"
#include "real/unicode/unicode_props.hpp"
Include dependency graph for unicode_binprop.hpp:

Classes

struct  real::detail::binprop_alias_entry
 A loose-normalized (lowercase, no _/-/space) binary-property name and its value. More...
 

Namespaces

namespace  real
 REAL's public API: real::regex, real::static_regex, real::flags and the match/iterator types built on them.
 
namespace  real::detail
 DFA construction internals: subset construction over a flattened NFA. Not a stable API.
 

Enumerations

enum class  real::detail::binprop : std::uint8_t {
  ASCII_Hex_Digit , Alphabetic , Bidi_Control , Case_Ignorable ,
  Cased , Changes_When_Casefolded , Changes_When_Casemapped , Changes_When_Lowercased ,
  Changes_When_Titlecased , Changes_When_Uppercased , Dash , Default_Ignorable_Code_Point ,
  Deprecated , Diacritic , Emoji , Emoji_Component ,
  Emoji_Modifier , Emoji_Modifier_Base , Emoji_Presentation , Extended_Pictographic ,
  Extender , Grapheme_Base , Grapheme_Extend , Grapheme_Link ,
  Hex_Digit , Hyphen , IDS_Binary_Operator , IDS_Trinary_Operator ,
  IDS_Unary_Operator , ID_Compat_Math_Continue , ID_Compat_Math_Start , ID_Continue ,
  ID_Start , Ideographic , Join_Control , Logical_Order_Exception ,
  Lowercase , Math , Modifier_Combining_Mark , Noncharacter_Code_Point ,
  Other_Alphabetic , Other_Default_Ignorable_Code_Point , Other_Grapheme_Extend , Other_ID_Continue ,
  Other_ID_Start , Other_Lowercase , Other_Math , Other_Uppercase ,
  Pattern_Syntax , Pattern_White_Space , Prepended_Concatenation_Mark , Quotation_Mark ,
  Radical , Regional_Indicator , Sentence_Terminal , Soft_Dotted ,
  Terminal_Punctuation , Unified_Ideograph , Uppercase , Variation_Selector ,
  White_Space , XID_Continue , XID_Start , count
}
 A Unicode binary property: the 63 standard yes/no properties this build knows.
 

Functions

constexpr bool real::detail::is_binprop_cp (binprop prop, char32_t cp)
 Whether cp has the binary property prop (== the UCD).
 
constexpr binprop real::detail::resolve_binprop (std::string_view loose)
 Resolve a loose-normalized binary-property name to its value, or count if unknown.
 

Variables

constexpr const char * real::detail::unicode_binprop_unidata_version {"16.0.0"}
 The Unicode data version these tables were generated from.
 
constexpr code_range real::detail::binprop_ASCII_Hex_Digit_ranges []
 \p{ASCII_Hex_Digit} — 3 ranges, 22 code points.
 
constexpr code_range real::detail::binprop_Alphabetic_ranges []
 \p{Alphabetic} — 757 ranges, 142759 code points.
 
constexpr code_range real::detail::binprop_Bidi_Control_ranges []
 \p{Bidi_Control} — 4 ranges, 12 code points.
 
constexpr code_range real::detail::binprop_Case_Ignorable_ranges []
 \p{Case_Ignorable} — 452 ranges, 2749 code points.
 
constexpr code_range real::detail::binprop_Cased_ranges []
 \p{Cased} — 159 ranges, 4578 code points.
 
constexpr code_range real::detail::binprop_Changes_When_Casefolded_ranges []
 \p{Changes_When_Casefolded} — 626 ranges, 1533 code points.
 
constexpr code_range real::detail::binprop_Changes_When_Casemapped_ranges []
 \p{Changes_When_Casemapped} — 131 ranges, 2981 code points.
 
constexpr code_range real::detail::binprop_Changes_When_Lowercased_ranges []
 \p{Changes_When_Lowercased} — 614 ranges, 1460 code points.
 
constexpr code_range real::detail::binprop_Changes_When_Titlecased_ranges []
 \p{Changes_When_Titlecased} — 629 ranges, 1479 code points.
 
constexpr code_range real::detail::binprop_Changes_When_Uppercased_ranges []
 \p{Changes_When_Uppercased} — 630 ranges, 1552 code points.
 
constexpr code_range real::detail::binprop_Dash_ranges []
 \p{Dash} — 24 ranges, 31 code points.
 
constexpr code_range real::detail::binprop_Default_Ignorable_Code_Point_ranges []
 \p{Default_Ignorable_Code_Point} — 17 ranges, 4174 code points.
 
constexpr code_range real::detail::binprop_Deprecated_ranges []
 \p{Deprecated} — 8 ranges, 15 code points.
 
constexpr code_range real::detail::binprop_Diacritic_ranges []
 \p{Diacritic} — 214 ranges, 1178 code points.
 
constexpr code_range real::detail::binprop_Emoji_ranges []
 \p{Emoji} — 150 ranges, 1431 code points.
 
constexpr code_range real::detail::binprop_Emoji_Component_ranges []
 \p{Emoji_Component} — 10 ranges, 146 code points.
 
constexpr code_range real::detail::binprop_Emoji_Modifier_ranges []
 \p{Emoji_Modifier} — 1 ranges, 5 code points.
 
constexpr code_range real::detail::binprop_Emoji_Modifier_Base_ranges []
 \p{Emoji_Modifier_Base} — 40 ranges, 134 code points.
 
constexpr code_range real::detail::binprop_Emoji_Presentation_ranges []
 \p{Emoji_Presentation} — 80 ranges, 1212 code points.
 
constexpr code_range real::detail::binprop_Extended_Pictographic_ranges []
 \p{Extended_Pictographic} — 78 ranges, 3537 code points.
 
constexpr code_range real::detail::binprop_Extender_ranges []
 \p{Extender} — 41 ranges, 59 code points.
 
constexpr code_range real::detail::binprop_Grapheme_Base_ranges []
 \p{Grapheme_Base} — 894 ranges, 152730 code points.
 
constexpr code_range real::detail::binprop_Grapheme_Extend_ranges []
 \p{Grapheme_Extend} — 375 ranges, 2193 code points.
 
constexpr code_range real::detail::binprop_Grapheme_Link_ranges []
 \p{Grapheme_Link} — 58 ranges, 69 code points.
 
constexpr code_range real::detail::binprop_Hex_Digit_ranges []
 \p{Hex_Digit} — 6 ranges, 44 code points.
 
constexpr code_range real::detail::binprop_Hyphen_ranges []
 \p{Hyphen} — 10 ranges, 11 code points.
 
constexpr code_range real::detail::binprop_IDS_Binary_Operator_ranges []
 \p{IDS_Binary_Operator} — 3 ranges, 13 code points.
 
constexpr code_range real::detail::binprop_IDS_Trinary_Operator_ranges []
 \p{IDS_Trinary_Operator} — 1 ranges, 2 code points.
 
constexpr code_range real::detail::binprop_IDS_Unary_Operator_ranges []
 \p{IDS_Unary_Operator} — 1 ranges, 2 code points.
 
constexpr code_range real::detail::binprop_ID_Compat_Math_Continue_ranges []
 \p{ID_Compat_Math_Continue} — 18 ranges, 43 code points.
 
constexpr code_range real::detail::binprop_ID_Compat_Math_Start_ranges []
 \p{ID_Compat_Math_Start} — 13 ranges, 13 code points.
 
constexpr code_range real::detail::binprop_ID_Continue_ranges []
 \p{ID_Continue} — 793 ranges, 144541 code points.
 
constexpr code_range real::detail::binprop_ID_Start_ranges []
 \p{ID_Start} — 677 ranges, 141269 code points.
 
constexpr code_range real::detail::binprop_Ideographic_ranges []
 \p{Ideographic} — 21 ranges, 106477 code points.
 
constexpr code_range real::detail::binprop_Join_Control_ranges []
 \p{Join_Control} — 1 ranges, 2 code points.
 
constexpr code_range real::detail::binprop_Logical_Order_Exception_ranges []
 \p{Logical_Order_Exception} — 7 ranges, 19 code points.
 
constexpr code_range real::detail::binprop_Lowercase_ranges []
 \p{Lowercase} — 675 ranges, 2569 code points.
 
constexpr code_range real::detail::binprop_Math_ranges []
 \p{Math} — 139 ranges, 2312 code points.
 
constexpr code_range real::detail::binprop_Modifier_Combining_Mark_ranges []
 \p{Modifier_Combining_Mark} — 9 ranges, 14 code points.
 
constexpr code_range real::detail::binprop_Noncharacter_Code_Point_ranges []
 \p{Noncharacter_Code_Point} — 18 ranges, 66 code points.
 
constexpr code_range real::detail::binprop_Other_Alphabetic_ranges []
 \p{Other_Alphabetic} — 250 ranges, 1495 code points.
 
constexpr code_range real::detail::binprop_Other_Default_Ignorable_Code_Point_ranges []
 \p{Other_Default_Ignorable_Code_Point} — 11 ranges, 3776 code points.
 
constexpr code_range real::detail::binprop_Other_Grapheme_Extend_ranges []
 \p{Other_Grapheme_Extend} — 49 ranges, 160 code points.
 
constexpr code_range real::detail::binprop_Other_ID_Continue_ranges []
 \p{Other_ID_Continue} — 7 ranges, 16 code points.
 
constexpr code_range real::detail::binprop_Other_ID_Start_ranges []
 \p{Other_ID_Start} — 4 ranges, 6 code points.
 
constexpr code_range real::detail::binprop_Other_Lowercase_ranges []
 \p{Other_Lowercase} — 28 ranges, 311 code points.
 
constexpr code_range real::detail::binprop_Other_Math_ranges []
 \p{Other_Math} — 134 ranges, 1362 code points.
 
constexpr code_range real::detail::binprop_Other_Uppercase_ranges []
 \p{Other_Uppercase} — 5 ranges, 120 code points.
 
constexpr code_range real::detail::binprop_Pattern_Syntax_ranges []
 \p{Pattern_Syntax} — 28 ranges, 2760 code points.
 
constexpr code_range real::detail::binprop_Pattern_White_Space_ranges []
 \p{Pattern_White_Space} — 5 ranges, 11 code points.
 
constexpr code_range real::detail::binprop_Prepended_Concatenation_Mark_ranges []
 \p{Prepended_Concatenation_Mark} — 7 ranges, 13 code points.
 
constexpr code_range real::detail::binprop_Quotation_Mark_ranges []
 \p{Quotation_Mark} — 13 ranges, 30 code points.
 
constexpr code_range real::detail::binprop_Radical_ranges []
 \p{Radical} — 3 ranges, 329 code points.
 
constexpr code_range real::detail::binprop_Regional_Indicator_ranges []
 \p{Regional_Indicator} — 1 ranges, 26 code points.
 
constexpr code_range real::detail::binprop_Sentence_Terminal_ranges []
 \p{Sentence_Terminal} — 88 ranges, 170 code points.
 
constexpr code_range real::detail::binprop_Soft_Dotted_ranges []
 \p{Soft_Dotted} — 34 ranges, 50 code points.
 
constexpr code_range real::detail::binprop_Terminal_Punctuation_ranges []
 \p{Terminal_Punctuation} — 116 ranges, 291 code points.
 
constexpr code_range real::detail::binprop_Unified_Ideograph_ranges []
 \p{Unified_Ideograph} — 17 ranges, 97680 code points.
 
constexpr code_range real::detail::binprop_Uppercase_ranges []
 \p{Uppercase} — 656 ranges, 1978 code points.
 
constexpr code_range real::detail::binprop_Variation_Selector_ranges []
 \p{Variation_Selector} — 4 ranges, 260 code points.
 
constexpr code_range real::detail::binprop_White_Space_ranges []
 \p{White_Space} — 10 ranges, 25 code points.
 
constexpr code_range real::detail::binprop_XID_Continue_ranges []
 \p{XID_Continue} — 800 ranges, 144522 code points.
 
constexpr code_range real::detail::binprop_XID_Start_ranges []
 \p{XID_Start} — 684 ranges, 141246 code points.
 
constexpr std::span< const code_rangereal::detail::binprop_ranges []
 Range table indexed by binprop (parallel to the enum order).
 
constexpr binprop_alias_entry real::detail::binprop_aliases []
 Binary-property names, loose-keyed; for the \p{...} parser (no namespace prefix, same as PCRE2: \p{Alphabetic}, not \p{bp=Alphabetic}).
 

Detailed Description

Unicode binary-property ranges for \p{...} (UCD contract; PCRE2-parity properties).

GENERATED by tools/gen_unicode_binprop_tables.py – DO NOT EDIT BY HAND.

Parsed directly from the committed tools/ucd/{DerivedCoreProperties,PropList,emoji-data}.txt (UCD 16.0.0, same version as Scripts.txt) – not derived from unicodedata, which exposes General_Category only. Each property gets its own sorted, disjoint range table (NOT a partition like General_Category/Script: a code point can satisfy several, or none). Checked at generation time to have zero loose-key collision with the General_Category / Script aliases (ast.hpp::resolve_property tries gc=/sc= first for a bare name).