aboutsummaryrefslogtreecommitdiff
path: root/lib/unicode/prop/uprop_is_bidi_m.c
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-04-28 06:15:55 +0200
committerThomas Voss <mail@thomasvoss.com> 2024-04-28 06:15:55 +0200
commit4ea2dd117e656f950c41f9954bd593c313e34ee2 (patch)
treed239c3426240bb886f129bccf901b0fc970c6073 /lib/unicode/prop/uprop_is_bidi_m.c
parent50787ecf06854f99eaf4b966abd11d23554bd221 (diff)
Implement boolean props using 2-stage lookup
Diffstat (limited to 'lib/unicode/prop/uprop_is_bidi_m.c')
-rw-r--r--lib/unicode/prop/uprop_is_bidi_m.c363
1 files changed, 243 insertions, 120 deletions
diff --git a/lib/unicode/prop/uprop_is_bidi_m.c b/lib/unicode/prop/uprop_is_bidi_m.c
index 9ffd897..6ecf829 100644
--- a/lib/unicode/prop/uprop_is_bidi_m.c
+++ b/lib/unicode/prop/uprop_is_bidi_m.c
@@ -1,133 +1,256 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x50,
- 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1,
+ 4, 5, 1, 6, 7, 8, 1, 9, 10, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000F3A), RUNE_C(0x000F3D)},
- {RUNE_C(0x00169B), RUNE_C(0x00169C)},
- {RUNE_C(0x002039), RUNE_C(0x00203A)},
- {RUNE_C(0x002045), RUNE_C(0x002046)},
- {RUNE_C(0x00207D), RUNE_C(0x00207E)},
- {RUNE_C(0x00208D), RUNE_C(0x00208E)},
- {RUNE_C(0x002140), RUNE_C(0x002140)},
- {RUNE_C(0x002201), RUNE_C(0x002204)},
- {RUNE_C(0x002208), RUNE_C(0x00220D)},
- {RUNE_C(0x002211), RUNE_C(0x002211)},
- {RUNE_C(0x002215), RUNE_C(0x002216)},
- {RUNE_C(0x00221A), RUNE_C(0x00221D)},
- {RUNE_C(0x00221F), RUNE_C(0x002222)},
- {RUNE_C(0x002224), RUNE_C(0x002224)},
- {RUNE_C(0x002226), RUNE_C(0x002226)},
- {RUNE_C(0x00222B), RUNE_C(0x002233)},
- {RUNE_C(0x002239), RUNE_C(0x002239)},
- {RUNE_C(0x00223B), RUNE_C(0x00224C)},
- {RUNE_C(0x002252), RUNE_C(0x002255)},
- {RUNE_C(0x00225F), RUNE_C(0x002260)},
- {RUNE_C(0x002262), RUNE_C(0x002262)},
- {RUNE_C(0x002264), RUNE_C(0x00226B)},
- {RUNE_C(0x00226E), RUNE_C(0x00228C)},
- {RUNE_C(0x00228F), RUNE_C(0x002292)},
- {RUNE_C(0x002298), RUNE_C(0x002298)},
- {RUNE_C(0x0022A2), RUNE_C(0x0022A3)},
- {RUNE_C(0x0022A6), RUNE_C(0x0022B8)},
- {RUNE_C(0x0022BE), RUNE_C(0x0022BF)},
- {RUNE_C(0x0022C9), RUNE_C(0x0022CD)},
- {RUNE_C(0x0022D0), RUNE_C(0x0022D1)},
- {RUNE_C(0x0022D6), RUNE_C(0x0022ED)},
- {RUNE_C(0x0022F0), RUNE_C(0x0022FF)},
- {RUNE_C(0x002308), RUNE_C(0x00230B)},
- {RUNE_C(0x002320), RUNE_C(0x002321)},
- {RUNE_C(0x002329), RUNE_C(0x00232A)},
- {RUNE_C(0x002768), RUNE_C(0x002775)},
- {RUNE_C(0x0027C0), RUNE_C(0x0027C0)},
- {RUNE_C(0x0027C3), RUNE_C(0x0027C6)},
- {RUNE_C(0x0027C8), RUNE_C(0x0027C9)},
- {RUNE_C(0x0027CB), RUNE_C(0x0027CD)},
- {RUNE_C(0x0027D3), RUNE_C(0x0027D6)},
- {RUNE_C(0x0027DC), RUNE_C(0x0027DE)},
- {RUNE_C(0x0027E2), RUNE_C(0x0027EF)},
- {RUNE_C(0x002983), RUNE_C(0x002998)},
- {RUNE_C(0x00299B), RUNE_C(0x0029A0)},
- {RUNE_C(0x0029A2), RUNE_C(0x0029AF)},
- {RUNE_C(0x0029B8), RUNE_C(0x0029B8)},
- {RUNE_C(0x0029C0), RUNE_C(0x0029C5)},
- {RUNE_C(0x0029C9), RUNE_C(0x0029C9)},
- {RUNE_C(0x0029CE), RUNE_C(0x0029D2)},
- {RUNE_C(0x0029D4), RUNE_C(0x0029D5)},
- {RUNE_C(0x0029D8), RUNE_C(0x0029DC)},
- {RUNE_C(0x0029E1), RUNE_C(0x0029E1)},
- {RUNE_C(0x0029E3), RUNE_C(0x0029E5)},
- {RUNE_C(0x0029E8), RUNE_C(0x0029E9)},
- {RUNE_C(0x0029F4), RUNE_C(0x0029F9)},
- {RUNE_C(0x0029FC), RUNE_C(0x0029FD)},
- {RUNE_C(0x002A0A), RUNE_C(0x002A1C)},
- {RUNE_C(0x002A1E), RUNE_C(0x002A21)},
- {RUNE_C(0x002A24), RUNE_C(0x002A24)},
- {RUNE_C(0x002A26), RUNE_C(0x002A26)},
- {RUNE_C(0x002A29), RUNE_C(0x002A29)},
- {RUNE_C(0x002A2B), RUNE_C(0x002A2E)},
- {RUNE_C(0x002A34), RUNE_C(0x002A35)},
- {RUNE_C(0x002A3C), RUNE_C(0x002A3E)},
- {RUNE_C(0x002A57), RUNE_C(0x002A58)},
- {RUNE_C(0x002A64), RUNE_C(0x002A65)},
- {RUNE_C(0x002A6A), RUNE_C(0x002A6D)},
- {RUNE_C(0x002A6F), RUNE_C(0x002A70)},
- {RUNE_C(0x002A73), RUNE_C(0x002A74)},
- {RUNE_C(0x002A79), RUNE_C(0x002AA3)},
- {RUNE_C(0x002AA6), RUNE_C(0x002AAD)},
- {RUNE_C(0x002AAF), RUNE_C(0x002AD6)},
- {RUNE_C(0x002ADC), RUNE_C(0x002ADC)},
- {RUNE_C(0x002ADE), RUNE_C(0x002ADE)},
- {RUNE_C(0x002AE2), RUNE_C(0x002AE6)},
- {RUNE_C(0x002AEC), RUNE_C(0x002AEE)},
- {RUNE_C(0x002AF3), RUNE_C(0x002AF3)},
- {RUNE_C(0x002AF7), RUNE_C(0x002AFB)},
- {RUNE_C(0x002AFD), RUNE_C(0x002AFD)},
- {RUNE_C(0x002BFE), RUNE_C(0x002BFE)},
- {RUNE_C(0x002E02), RUNE_C(0x002E05)},
- {RUNE_C(0x002E09), RUNE_C(0x002E0A)},
- {RUNE_C(0x002E0C), RUNE_C(0x002E0D)},
- {RUNE_C(0x002E1C), RUNE_C(0x002E1D)},
- {RUNE_C(0x002E20), RUNE_C(0x002E29)},
- {RUNE_C(0x002E55), RUNE_C(0x002E5C)},
- {RUNE_C(0x003008), RUNE_C(0x003011)},
- {RUNE_C(0x003014), RUNE_C(0x00301B)},
- {RUNE_C(0x00FE59), RUNE_C(0x00FE5E)},
- {RUNE_C(0x00FE64), RUNE_C(0x00FE65)},
- {RUNE_C(0x00FF08), RUNE_C(0x00FF09)},
- {RUNE_C(0x00FF1C), RUNE_C(0x00FF1C)},
- {RUNE_C(0x00FF1E), RUNE_C(0x00FF1E)},
- {RUNE_C(0x00FF3B), RUNE_C(0x00FF3B)},
- {RUNE_C(0x00FF3D), RUNE_C(0x00FF3D)},
- {RUNE_C(0x00FF5B), RUNE_C(0x00FF5B)},
- {RUNE_C(0x00FF5D), RUNE_C(0x00FF5D)},
- {RUNE_C(0x00FF5F), RUNE_C(0x00FF60)},
- {RUNE_C(0x00FF62), RUNE_C(0x00FF63)},
- {RUNE_C(0x01D6DB), RUNE_C(0x01D6DB)},
- {RUNE_C(0x01D715), RUNE_C(0x01D715)},
- {RUNE_C(0x01D74F), RUNE_C(0x01D74F)},
- {RUNE_C(0x01D789), RUNE_C(0x01D789)},
- {RUNE_C(0x01D7C3), RUNE_C(0x01D7C3)},
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x50,
+ 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+ 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x1E, 0x3F, 0x62, 0xBC, 0x57, 0xF8, 0x0F, 0xFA,
+ 0xFF, 0x1F, 0x3C, 0x80, 0xF5, 0xCF, 0xFF, 0xFF,
+ 0xFF, 0x9F, 0x07, 0x01, 0xCC, 0xFF, 0xFF, 0xC1,
+ 0x00, 0x3E, 0xC3, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF,
+ 0x00, 0x0F, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x79, 0x3B, 0x78, 0x70, 0xFC, 0xFF, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xF8, 0xFF, 0xFF, 0xF9, 0xFD, 0xFF, 0x00, 0x01,
+ 0x3F, 0xC2, 0x37, 0x1F, 0x3A, 0x03, 0xF0, 0x33},
+ {0x00, 0xFC, 0xFF, 0xDF, 0x53, 0x7A, 0x30, 0x70,
+ 0x00, 0x00, 0x80, 0x01, 0x30, 0xBC, 0x19, 0xFE,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xBF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x50, 0x7C, 0x70, 0x88, 0x2F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40},
+ {0x3C, 0x36, 0x00, 0x30, 0xFF, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xFF, 0xF3, 0x0F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x7E, 0x30, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x28,
+ 0x00, 0x00, 0x00, 0xA8, 0x0D, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_bidi_m(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}