X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=utf8lib.h;h=9124c4e7905ea72ed0123aca9c20daf7a02e9f7e;hb=2bc57e09fc5ad356b342bb0dc466b5a761583802;hp=35bd5a6fe91e40695cfc3ab14b55d7b13fbc53e2;hpb=8216c759ec0c77afe2ff9264a3b35a85248c1fe6;p=xonotic%2Fdarkplaces.git diff --git a/utf8lib.h b/utf8lib.h index 35bd5a6f..9124c4e7 100644 --- a/utf8lib.h +++ b/utf8lib.h @@ -52,11 +52,14 @@ size_t u8_strpad(char *out, size_t outsize, const char *in, qboolean leftalign, */ extern Uchar u8_quake2utf8map[256]; // these defines get a bit tricky, as c and e may be aliased to the same variable -#define u8_getchar(c,e) (utf8_enable.integer ? u8_getchar_utf8_enabled(c,e) : (u8_quake2utf8map[(*((unsigned char **)(e)) = ((unsigned char *)(c)) + 1)[-1]])) -#define u8_getchar_noendptr(c) (utf8_enable.integer ? u8_getchar_utf8_enabled(c,NULL) : (u8_quake2utf8map[*((unsigned char *)(c))])) +#define u8_getchar(c,e) (utf8_enable.integer ? u8_getchar_utf8_enabled(c,e) : (u8_quake2utf8map[(unsigned char)(*(e) = (c) + 1)[-1]])) +#define u8_getchar_noendptr(c) (utf8_enable.integer ? u8_getchar_utf8_enabled(c,NULL) : (u8_quake2utf8map[(unsigned char)*(c)])) #define u8_getchar_check(c,e) ((e) ? u8_getchar((c),(e)) : u8_getchar_noendptr((c))) -#define u8_getnchar(c,e,n) (utf8_enable.integer ? u8_getnchar_utf8_enabled(c,e,n) : ((n) <= 0 ? ((*(e) = c), 0) : (u8_quake2utf8map[(*((unsigned char **)(e)) = ((unsigned char *)(c)) + 1)[-1]]))) -#define u8_getnchar_noendptr(c,n) (utf8_enable.integer ? u8_getnchar_utf8_enabled(c,NULL,n) : ((n) <= 0 ? 0 : (u8_quake2utf8map[*((unsigned char *)(c))]))) +#define u8_getnchar(c,e,n) (utf8_enable.integer ? u8_getnchar_utf8_enabled(c,e,n) : ((n) <= 0 ? ((*(e) = c), 0) : (u8_quake2utf8map[(unsigned char)(*(e) = (c) + 1)[-1]]))) +#define u8_getnchar_noendptr(c,n) (utf8_enable.integer ? u8_getnchar_utf8_enabled(c,NULL,n) : ((n) <= 0 ? 0 : (u8_quake2utf8map[(unsigned char)*(c)]))) #define u8_getnchar_check(c,e,n) ((e) ? u8_getchar((c),(e),(n)) : u8_getchar_noendptr((c),(n))) +Uchar u8_toupper(Uchar ch); +Uchar u8_tolower(Uchar ch); + #endif // UTF8LIB_H__