]> git.lizzy.rs Git - minetest.git/blobdiff - src/util/string.h
Add server side ncurses terminal
[minetest.git] / src / util / string.h
index 793baad0ea729f90c3731ea741bca26f2ca3fccf..c8f60b8023119ed9081c757513b593f9d2dab39d 100644 (file)
@@ -32,8 +32,26 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #define STRINGIFY(x) #x
 #define TOSTRING(x) STRINGIFY(x)
 
+// Checks whether a value is an ASCII printable character
+#define IS_ASCII_PRINTABLE_CHAR(x)   \
+       (((unsigned int)(x) >= 0x20) &&  \
+       ( (unsigned int)(x) <= 0x7e))
+
 // Checks whether a byte is an inner byte for an utf-8 multibyte sequence
-#define IS_UTF8_MULTB_INNER(x) (((unsigned char)x >= 0x80) && ((unsigned char)x < 0xc0))
+#define IS_UTF8_MULTB_INNER(x)       \
+       (((unsigned char)(x) >= 0x80) && \
+       ( (unsigned char)(x) <= 0xbf))
+
+// Checks whether a byte is a start byte for an utf-8 multibyte sequence
+#define IS_UTF8_MULTB_START(x)       \
+       (((unsigned char)(x) >= 0xc2) && \
+       ( (unsigned char)(x) <= 0xf4))
+
+// Given a start byte x for an utf-8 multibyte sequence
+// it gives the length of the whole sequence in bytes.
+#define UTF8_MULTB_START_LEN(x)            \
+       (((unsigned char)(x) < 0xe0) ? 2 :     \
+       (((unsigned char)(x) < 0xf0) ? 3 : 4))
 
 typedef std::map<std::string, std::string> StringMap;