aboutsummaryrefslogtreecommitdiffstats
path: root/libcharconv_lydian.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcharconv_lydian.c')
-rw-r--r--libcharconv_lydian.c48
1 files changed, 6 insertions, 42 deletions
diff --git a/libcharconv_lydian.c b/libcharconv_lydian.c
index a3427fa..2165a59 100644
--- a/libcharconv_lydian.c
+++ b/libcharconv_lydian.c
@@ -2,51 +2,15 @@
#include "lib-common.h"
-static struct {
- unsigned char cp_low;
- char latin;
-} lydian[] = {
- {0x20, 'a'},
- {0x21, 'b'},
- {0x39, 'c'},
- {0x23, 'd'},
- {0x24, 'e'},
- {0x31, 'f'},
- {0x22, 'g'},
- {0x26, 'i'},
- {0x28, 'k'},
- {0x29, 'l'},
- {0x2A, 'm'},
- {0x2B, 'n'},
- {0x2C, 'o'},
- {0x32, 'q'},
- {0x2D, 'r'},
- {0x33, 's'},
- {0x2F, 't'},
- {0x30, 'u'},
- {0x25, 'v'},
- {0x27, 'y'},
- {0x35, 'A'},
- {0x36, 'E'},
- {0x37, 'L'},
- {0x38, 'N'},
- {0x2E, 'S'},
- {0x34, 'T'},
- {0x3F, '\"'},
- {0x3F, '\''}
-};
-
-
enum libcharconv_result
libcharconv_lydian(const char *s, size_t slen, size_t *n, uint_least32_t *cp, size_t *ncp)
{
- size_t i;
+ uint_least32_t c;
*n = 0;
- for (; slen--; s++) {
- for (i = 0u; i < sizeof(lydian) / sizeof(*lydian); i++)
- if (*s == lydian[i].latin)
- goto conv;
- *n += 1u;
+ for (; slen--; s++, ++*n) {
+ PLAIN_SELECT("abgdeviyklmnorStufqsTAELNc", 0x10920);
+ PLAIN_SINGLE('\"', 0x1093F);
+ PLAIN_SINGLE('\'', 0x1093F);
}
no_conv:
return LIBCHARCONV_NO_CONVERT;
@@ -55,7 +19,7 @@ conv:
if (*n)
goto no_conv;
if (*ncp)
- *cp = (uint_least32_t)(UINT32_C(0x10900) | lydian[i].cp_low);
+ *cp = c;
*n += 1u;
*ncp = 1u;
return LIBCHARCONV_CONVERTED;