/*
* The UniCode Library
*
- * (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ * (c) 1997 Martin Mares <mj@ucw.cz>
+ *
+ * This software may be freely distributed and used according to the terms
+ * of the GNU Lesser General Public License.
*/
#ifndef _UNICODE_H
#define _UNICODE_H
-#include <lib/config.h>
-#include <lib/string.h>
+#include "lib/chartype.h"
-extern byte *_U_cat[], *_U_sig[];
+extern byte *_U_cat[];
extern word *_U_upper[], *_U_lower[], *_U_unaccent[];
static inline uns Ucategory(word x)
return w ? w : x;
}
-static inline byte Usig(word x)
-{
- if (_U_sig[x >> 8U])
- return _U_sig[x >> 8U][x & 0xff] ? : 0xff;
- else
- return 0xff;
-}
-
#define UCat(x,y) (Ucategory(x) & (y))
#define Uupper(x) UCat(x, _C_UPPER)
else \
u = *p++
+#define UTF8_SKIP(p) do { \
+ uns c = *p++; \
+ if (c >= 0xc0) \
+ while (c & 0x40 && *p >= 0x80 && *p < 0xc0) \
+ p++, c <<= 1; \
+ } while (0)
+
#define UTF8_SPACE(u) ((u) < 0x80 ? 1 : (u) < 0x800 ? 2 : 3)
uns ucs2_to_utf8(byte *, word *);