From d0caefee7e2a45aebf14a6911021c7af9aed2a9f Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 25 Jan 2026 23:08:40 +0100 Subject: Add chess MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- libcharconv_negative.c | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'libcharconv_negative.c') diff --git a/libcharconv_negative.c b/libcharconv_negative.c index dfdc353..3bbbccb 100644 --- a/libcharconv_negative.c +++ b/libcharconv_negative.c @@ -17,7 +17,13 @@ static struct { {UINT32_C(0x2616), UINT32_C(0x26C9)}, {UINT32_C(0x2617), UINT32_C(0x26CA)}, {UINT32_C(0x26C0), UINT32_C(0x26C2)}, - {UINT32_C(0x26C1), UINT32_C(0x26C3)} + {UINT32_C(0x26C1), UINT32_C(0x26C3)}, + {UINT32_C(0x1FA06), UINT32_C(0x1FA07)}, + {UINT32_C(0x1FA1B), UINT32_C(0x1FA1C)}, + {UINT32_C(0x1FA30), UINT32_C(0x1FA31)}, + {UINT32_C(0x1FA45), UINT32_C(0x1FA46)}, + {UINT32_C(0x1FA48), UINT32_C(0x1FA49)}, + {UINT32_C(0x1FA4B), UINT32_C(0x1FA4C)} }; @@ -41,12 +47,42 @@ libcharconv_negative(const char *s, size_t slen, size_t *n, uint_least32_t *cp, continue; } - if (UINT32_C(0x1FA60) <= c && c <= UINT32_C(0x1FA66)) { + if (UINT32_C(0x2654) <= c && c <= UINT32_C(0x2659)) { + c += 6u; + goto conv; + } else if (UINT32_C(0x265A) <= c && c <= UINT32_C(0x265F)) { + c -= 6u; + goto conv; + } else if (UINT32_C(0x1FA60) <= c && c <= UINT32_C(0x1FA66)) { c += 7u; goto conv; } else if (UINT32_C(0x1FA67) <= c && c <= UINT32_C(0x1FA6D)) { c -= 7u; goto conv; + } else if (UINT32_C(0x1FA09) <= c && c <= UINT32_C(0x1FA0E)) { + c += UINT32_C(0x1FA0F) - UINT32_C(0x1FA09); + goto conv; + } else if (UINT32_C(0x1FA0F) <= c && c <= UINT32_C(0x1FA14)) { + c -= UINT32_C(0x1FA0F) - UINT32_C(0x1FA09); + goto conv; + } else if (UINT32_C(0x1FA1E) <= c && c <= UINT32_C(0x1FA23)) { + c += UINT32_C(0x1FA24) - UINT32_C(0x1FA1E); + goto conv; + } else if (UINT32_C(0x1FA24) <= c && c <= UINT32_C(0x1FA29)) { + c -= UINT32_C(0x1FA24) - UINT32_C(0x1FA1E); + goto conv; + } else if (UINT32_C(0x1FA33) <= c && c <= UINT32_C(0x1FA38)) { + c += UINT32_C(0x1FA39) - UINT32_C(0x1FA33); + goto conv; + } else if (UINT32_C(0x1FA39) <= c && c <= UINT32_C(0x1FA3E)) { + c -= UINT32_C(0x1FA39) - UINT32_C(0x1FA33); + goto conv; + } else if (UINT32_C(0x1FA4E) <= c && c <= UINT32_C(0x1FA50)) { + c += UINT32_C(0x1FA51) - UINT32_C(0x1FA4E); + goto conv; + } else if (UINT32_C(0x1FA51) <= c && c <= UINT32_C(0x1FA53)) { + c -= UINT32_C(0x1FA51) - UINT32_C(0x1FA4E); + goto conv; } else { for (i = 0u; i < sizeof(pairs) / sizeof(*pairs); i++) { if (c == pairs[i].a) { -- cgit v1.2.3-70-g09d2