aboutsummaryrefslogtreecommitdiffstats
path: root/libcharconv_flipped.c
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2026-01-25 16:05:05 +0100
committerMattias Andrée <m@maandree.se>2026-01-25 16:05:05 +0100
commita0cd51f0e62cef118c17cfc308ff2a67bef49338 (patch)
tree3e9f0debf88f4398417e79abc7fc31a45ef5922f /libcharconv_flipped.c
parentAdd mirrored (diff)
downloadcharconv-a0cd51f0e62cef118c17cfc308ff2a67bef49338.tar.gz
charconv-a0cd51f0e62cef118c17cfc308ff2a67bef49338.tar.bz2
charconv-a0cd51f0e62cef118c17cfc308ff2a67bef49338.tar.xz
Add turned
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to 'libcharconv_flipped.c')
-rw-r--r--libcharconv_flipped.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/libcharconv_flipped.c b/libcharconv_flipped.c
index 43893fc..952d7e6 100644
--- a/libcharconv_flipped.c
+++ b/libcharconv_flipped.c
@@ -30,14 +30,21 @@ libcharconv_flipped(const char *s, size_t slen, size_t *n, uint_least32_t *cp, s
continue;
}
- for (i = 0u; i < sizeof(pairs) / sizeof(*pairs); i++) {
- if (c == pairs[i].a) {
- c = pairs[i].b;
- goto conv;
- }
- if (c == pairs[i].b) {
- c = pairs[i].a;
- goto conv;
+ if (UINT32_C(0x1F063) <= c && c <= UINT32_C(0x1F093)) {
+ c -= UINT32_C(0x1F063);
+ c = c % 7u * 7u + c / 7u;
+ c += UINT32_C(0x1F063);
+ goto conv;
+ } else {
+ for (i = 0u; i < sizeof(pairs) / sizeof(*pairs); i++) {
+ if (c == pairs[i].a) {
+ c = pairs[i].b;
+ goto conv;
+ }
+ if (c == pairs[i].b) {
+ c = pairs[i].a;
+ goto conv;
+ }
}
}