aboutsummaryrefslogtreecommitdiffstats
path: root/libcharconv_turned.c
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2026-01-28 22:03:48 +0100
committerMattias Andrée <m@maandree.se>2026-01-28 22:03:48 +0100
commit40bf70fb8f23e5ff7212b568c69e0725372e5b57 (patch)
tree0d4be706d0182ddeafd4eaafd073e12c2fa2a9e8 /libcharconv_turned.c
parentMisc stuff (diff)
downloadcharconv-40bf70fb8f23e5ff7212b568c69e0725372e5b57.tar.gz
charconv-40bf70fb8f23e5ff7212b568c69e0725372e5b57.tar.bz2
charconv-40bf70fb8f23e5ff7212b568c69e0725372e5b57.tar.xz
Clean up
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to '')
-rw-r--r--libcharconv_turned.c32
1 files changed, 5 insertions, 27 deletions
diff --git a/libcharconv_turned.c b/libcharconv_turned.c
index ff51618..2ad33f0 100644
--- a/libcharconv_turned.c
+++ b/libcharconv_turned.c
@@ -2,18 +2,6 @@
#include "lib-common.h"
-static unsigned char yijing_hexagrams[] = {
- 0xC0, 0xEB, 0xCC, 0xE0, 0xC9, 0xC5, 0xD8, 0xCB,
- 0xC8, 0xF8, 0xE4, 0xF4, 0xFC, 0xFA, 0xE9, 0xD3,
- 0xCD, 0xF1, 0xDD, 0xF7, 0xE5, 0xFF, 0xD4, 0xE2,
- 0xD9, 0xD1, 0xD5, 0xF3, 0xE8, 0xC3, 0xDA, 0xD6,
- 0xEA, 0xDB, 0xF0, 0xDE, 0xF9, 0xEE, 0xD0, 0xEC,
- 0xC4, 0xEF, 0xFE, 0xE6, 0xFB, 0xDC, 0xC2, 0xC7,
- 0xE1, 0xDF, 0xF6, 0xFD, 0xF5, 0xE7, 0xF2, 0xCF,
- 0xCA, 0xED, 0xE3, 0xCE, 0xD2, 0xC6, 0xD7, 0xC1
-};
-
-
static struct {
uint_least32_t a;
uint_least32_t b;
@@ -81,19 +69,9 @@ libcharconv_turned(const char *s, size_t slen, size_t *n, uint_least32_t *cp, si
continue;
}
- if (UINT32_C(0x1FA00) <= c && c <= UINT32_C(0x1FA1D)) {
- c += 0x2Au;
- goto conv;
- } else if (UINT32_C(0x1FA2A) <= c && c <= UINT32_C(0x1FA47)) {
- c -= 0x2Au;
- goto conv;
- } else if (UINT32_C(0x1FA1E) <= c && c <= UINT32_C(0x1FA29)) {
- c -= UINT32_C(0x1FA1E) - UINT32_C(0x2654);
- goto conv;
- } else if (UINT32_C(0x2654) <= c && c <= UINT32_C(0x265F)) {
- c += UINT32_C(0x1FA1E) - UINT32_C(0x2654);
- goto conv;
- } else if (UINT32_C(0x1F031) <= c && c <= UINT32_C(0x1F061)) {
+ PLAIN_RANGE_SWAP(0x1FA00, 0x1FA1D, 0x1FA2A, 0x1FA47);
+ PLAIN_RANGE_SWAP(0x1FA1E, 0x1FA29, 0x2654, 0x265F);
+ if (UINT32_C(0x1F031) <= c && c <= UINT32_C(0x1F061)) {
c -= UINT32_C(0x1F031);
c = c % 7u * 7u + c / 7u;
c += UINT32_C(0x1F031);
@@ -120,7 +98,7 @@ libcharconv_turned(const char *s, size_t slen, size_t *n, uint_least32_t *cp, si
goto conv;
} else if (UINT32_C(0x4DC0) <= c && c <= UINT32_C(0x4DFF)) {
for (i = 0u;; i++)
- if ((c & 0xFFu) == yijing_hexagrams[i])
+ if ((c & 0xFFu) == libcharconv_yijing_hexagrams_[i])
break;
c = (i & 32u) ? 1u : 0u;
c |= (i & 16u) ? 2u : 0u;
@@ -128,7 +106,7 @@ libcharconv_turned(const char *s, size_t slen, size_t *n, uint_least32_t *cp, si
c |= (i & 4u) ? 8u : 0u;
c |= (i & 2u) ? 16u : 0u;
c |= (i & 1u) ? 32u : 0u;
- c = UINT32_C(0x4D00) | yijing_hexagrams[c];
+ c = UINT32_C(0x4D00) | libcharconv_yijing_hexagrams_[c];
goto conv;
} else if (UINT32_C(0x2800) <= c && c <= UINT32_C(0x28FF)) {
c = ((c & 0x01u) << 7) | ((c & 0x80u) >> 7)