aboutsummaryrefslogtreecommitdiff
path: root/include/unicode.h
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2018-04-12 20:19:54 -0400
committerFurkan Sahin <furkan-dev@proton.me>2018-04-12 20:19:54 -0400
commite62f2f43e2b428a4066fc43e5d2739940f7aa5e9 (patch)
treec653c6d525b471914c01a9d7ae543f521b6138ed /include/unicode.h
parent816bb9d54d2e9e3cbf5e14d7237dc8c8737d6b82 (diff)
parent0cb0c52663a8e27f632988da0f91e4cfb6afddf8 (diff)
Merge branch 'wlroots'
Diffstat (limited to 'include/unicode.h')
-rw-r--r--include/unicode.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/include/unicode.h b/include/unicode.h
new file mode 100644
index 00000000..e2ee9588
--- /dev/null
+++ b/include/unicode.h
@@ -0,0 +1,33 @@
+#ifndef _SWAY_UNICODE_H
+#define _SWAY_UNICODE_H
+#include <stddef.h>
+#include <stdint.h>
+
+// Technically UTF-8 supports up to 6 byte codepoints, but Unicode itself
+// doesn't really bother with more than 4.
+#define UTF8_MAX_SIZE 4
+
+#define UTF8_INVALID 0x80
+
+/**
+ * Grabs the next UTF-8 character and advances the string pointer
+ */
+uint32_t utf8_decode(const char **str);
+
+/**
+ * Encodes a character as UTF-8 and returns the length of that character.
+ */
+size_t utf8_encode(char *str, uint32_t ch);
+
+/**
+ * Returns the size of the next UTF-8 character
+ */
+int utf8_size(const char *str);
+
+/**
+ * Returns the size of a UTF-8 character
+ */
+size_t utf8_chsize(uint32_t ch);
+
+#endif
+