summaryrefslogtreecommitdiff
path: root/src/unicode.h
diff options
context:
space:
mode:
authorPhil Jones <philj56@gmail.com>2022-10-23 13:24:48 +0100
committerPhil Jones <philj56@gmail.com>2022-10-23 13:24:59 +0100
commit3bbd8ff839354a6f488c8481d5e6336a3f637cee (patch)
treef793acfea9c8115d30bd00d1a7dde5fc9fc079d7 /src/unicode.h
parentdd3a4a84d6676b51025e8feeb7af662a07b1e73c (diff)
Replace wchar and friends with Unicode handling.
All text handling should now be explicitly UTF-8 or UTF-32, removing the ambiguity around wchar_t and related functions.
Diffstat (limited to 'src/unicode.h')
-rw-r--r--src/unicode.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/unicode.h b/src/unicode.h
new file mode 100644
index 0000000..45631d9
--- /dev/null
+++ b/src/unicode.h
@@ -0,0 +1,27 @@
+#ifndef UNICODE_H
+#define UNICODE_H
+
+#include <glib.h>
+#include <stdint.h>
+
+uint8_t utf32_to_utf8(uint32_t c, char *buf);
+uint32_t utf8_to_utf32(const char *s);
+
+uint32_t utf32_isprint(uint32_t c);
+uint32_t utf32_isspace(uint32_t c);
+uint32_t utf32_isupper(uint32_t c);
+uint32_t utf32_islower(uint32_t c);
+uint32_t utf32_isalnum(uint32_t c);
+uint32_t utf32_toupper(uint32_t c);
+uint32_t utf32_tolower(uint32_t c);
+
+char *utf8_next_char(const char *s);
+char *utf8_prev_char(const char *s);
+char *utf8_strchr(const char *s, uint32_t c);
+char *utf8_strcasechr(const char *s, uint32_t c);
+size_t utf8_strlen(const char *s);
+char *utf8_strcasestr(const char * restrict haystack, const char * restrict needle);
+char *utf8_normalize(const char *s);
+char *utf8_compose(const char *s);
+
+#endif /* UNICODE_H */