]> mj.ucw.cz Git - libucw.git/commitdiff
Syncing crashed repository with my work tree.
authorMartin Mares <mj@ucw.cz>
Tue, 6 Jan 1998 13:40:27 +0000 (13:40 +0000)
committerMartin Mares <mj@ucw.cz>
Tue, 6 Jan 1998 13:40:27 +0000 (13:40 +0000)
28 files changed:
charset/Makefile
charset/U-cat.h [new file with mode: 0644]
charset/U-lower.h [new file with mode: 0644]
charset/U-sig.h [new file with mode: 0644]
charset/U-unacc.h [new file with mode: 0644]
charset/U-upper.h [new file with mode: 0644]
charset/debug.c [new file with mode: 0644]
charset/misc/gentab [new file with mode: 0644]
charset/misc/mksig [new file with mode: 0644]
charset/misc/mkunacc [new file with mode: 0644]
charset/misc/unisplit [new file with mode: 0644]
charset/set/sig [new file with mode: 0644]
charset/strlen.c [new file with mode: 0644]
charset/test.c [new file with mode: 0644]
charset/tocat.c [new file with mode: 0644]
charset/tolower.c [new file with mode: 0644]
charset/tosig.c [new file with mode: 0644]
charset/toupper.c [new file with mode: 0644]
charset/unaccent.c [new file with mode: 0644]
charset/unicode.h [new file with mode: 0644]
charset/utf8.c [new file with mode: 0644]
lib/config.h
lib/fastbuf.c
lib/lib.h
lib/realloc.c [new file with mode: 0644]
lib/regex.c
lib/url.c
lib/wordsplit.c

index 5cdd48983521aa14508674d5153e8ea8e8336c13..fab75f42cf7e479bcc7967750ba0e7332f544eeb 100644 (file)
@@ -1,19 +1,51 @@
-# Makefile for the Sherlock Charset Data Files (c) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+# Makefile for the Sherlock UniCode Library (c) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
 
-all: .stamp
+CLIB=../lib/libunicode.a
+
+OBJS=toupper.o tolower.o tocat.o utf8.o unaccent.o tosig.o strlen.o debug.o
+
+all: .stamp $(CLIB)
 
 .stamp:
        mkdir -p $(TOPDIR)/run/char
        ln -sf `pwd`/set $(TOPDIR)/run/char
-       ln -sf `pwd`/exp $(TOPDIR)/run/char
        touch .stamp
 
-buildall:
-       rm -rf exp
+$(CLIB): $(OBJS)
+       rm -f $(CLIB)
+       ar rcs $(CLIB) $(OBJS)
+
+toupper.o: toupper.c unicode.h U-upper.h
+tolower.o: tolower.c unicode.h U-lower.h
+tocat.o: tocat.c unicode.h U-cat.h
+utf8.o: utf8.c unicode.h
+unaccent.o: unaccent.c unicode.h U-unacc.h
+tosig.o: tosig.c unicode.h U-sig.h
+strlen.o: strlen.c unicode.h
+debug.o: debug.c unicode.h
+
+test: test.o $(CLIB) $(TOPDIR)/lib/libsh.a
+       $(CC) $(LDFLAGS) test.o -o test -lsh -lunicode
+
+test.o: test.c unicode.h
+
+buildall: cleanall
        mkdir exp
-       for a in `find set -type f` ; do b=`basename $$a` ; echo $$b ; misc/mkexpands $$b >exp/$$b ; done
+       for a in `find set -type f -maxdepth 1` ; do b=`basename $$a` ; echo $$b ; misc/mkexpands $$b >exp/$$b ; done
+       misc/unisplit
+       misc/gentab _U_cat byte <misc/u-cat >U-cat.h
+       misc/gentab _U_lower word <misc/u-lower >U-lower.h
+       misc/gentab _U_upper word <misc/u-upper >U-upper.h
+       misc/mkunacc >misc/u-unacc
+       misc/gentab _U_unaccent word <misc/u-unacc >U-unacc.h
+       misc/mksig >misc/u-sig
+       misc/gentab _U_sig byte <misc/u-sig >U-sig.h
+
+cleanall:
+       rm -rf exp misc/u-* U-*.h
 
 tags:
+       etags *.[ch]
 
 clean:
-       rm -f .stamp
+       rm -f .stamp misc/u-* test
diff --git a/charset/U-cat.h b/charset/U-cat.h
new file mode 100644 (file)
index 0000000..ddd9bcd
--- /dev/null
@@ -0,0 +1,457 @@
+/* Generated automatically by gentab. Please don't edit. */
+
+static byte _U_cat_00[256] = {
+_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,
+_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,
+_C_BLANK,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+_C_DIGIT|_C_XDIGIT,_C_DIGIT|_C_XDIGIT,_C_DIGIT|_C_XDIGIT,_C_DIGIT|_C_XDIGIT,_C_DIGIT|_C_XDIGIT,_C_DIGIT|_C_XDIGIT,_C_DIGIT|_C_XDIGIT,_C_DIGIT|_C_XDIGIT,_C_DIGIT|_C_XDIGIT,_C_DIGIT|_C_XDIGIT,0,0,0,0,0,0,
+0,_C_UPPER|_C_XDIGIT,_C_UPPER|_C_XDIGIT,_C_UPPER|_C_XDIGIT,_C_UPPER|_C_XDIGIT,_C_UPPER|_C_XDIGIT,_C_UPPER|_C_XDIGIT,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,0,0,0,_C_INNER,
+0,_C_LOWER|_C_XDIGIT,_C_LOWER|_C_XDIGIT,_C_LOWER|_C_XDIGIT,_C_LOWER|_C_XDIGIT,_C_LOWER|_C_XDIGIT,_C_LOWER|_C_XDIGIT,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,0,0,_C_CTRL,
+_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,
+_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,
+_C_BLANK,0,0,0,0,0,0,0,0,0,_C_LOWER,0,0,0,0,0,
+0,0,0,0,0,_C_LOWER,0,0,0,0,_C_LOWER,0,0,0,0,0,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER
+};
+
+static byte _U_cat_01[256] = {
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,
+_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_UPPER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_UPPER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,_C_LOWER,_C_UPPER,_C_UPPER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_LOWER,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_LOWER,_C_UPPER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_UPPER,_C_LOWER,_C_UPPER,0,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_UPPER,
+_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_UPPER,_C_LOWER,_C_LOWER,0,_C_UPPER,_C_LOWER,0,0,
+0,0,0,0,_C_UPPER,0,_C_LOWER,_C_UPPER,0,_C_LOWER,_C_UPPER,0,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,
+_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_LOWER,_C_UPPER,0,_C_LOWER,_C_UPPER,_C_LOWER,0,0,0,0,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER
+};
+
+static byte _U_cat_02[256] = {
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_03[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,_C_UPPER,0,_C_UPPER,_C_UPPER,_C_UPPER,0,_C_UPPER,0,_C_UPPER,_C_UPPER,
+_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,0,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,
+_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_LOWER,_C_LOWER,0,0,0,_C_UPPER,0,_C_UPPER,0,_C_UPPER,0,
+_C_UPPER,0,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_04[256] = {
+0,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+0,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,_C_LOWER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+0,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,0,0,_C_UPPER,_C_LOWER,0,0,_C_UPPER,_C_LOWER,0,0,0,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,0,0,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,0,0,_C_UPPER,_C_LOWER,0,0,0,0,0,0
+};
+
+static byte _U_cat_05[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,0,0,0,0,0,0,0,0,
+0,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_10[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,0,0,0,0,0,0,0,0,0,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_1E[256] = {
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,0,0,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,
+_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_LOWER,0,0,0,0,0,0
+};
+
+static byte _U_cat_1F[256] = {
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,0,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,0,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,_C_UPPER,0,_C_UPPER,0,_C_UPPER,0,_C_UPPER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,_C_UPPER,0,
+0,0,_C_LOWER,_C_LOWER,_C_LOWER,0,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,0,0,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,0,0,0,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,0,0,
+0,0,_C_LOWER,_C_LOWER,_C_LOWER,0,_C_LOWER,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,0,0
+};
+
+static byte _U_cat_20[256] = {
+_C_BLANK,_C_BLANK,_C_BLANK,_C_BLANK,_C_BLANK,_C_BLANK,_C_BLANK,_C_BLANK,_C_BLANK,_C_BLANK,_C_BLANK,_C_BLANK,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,_C_BLANK,_C_BLANK,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,_C_CTRL,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,_C_LOWER,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_21[256] = {
+0,0,_C_UPPER,0,0,0,0,_C_UPPER,0,0,_C_LOWER,_C_UPPER,_C_UPPER,_C_UPPER,_C_LOWER,_C_LOWER,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_LOWER,0,_C_UPPER,0,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,0,
+_C_UPPER,_C_UPPER,_C_UPPER,0,_C_UPPER,0,_C_UPPER,0,_C_UPPER,0,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_LOWER,_C_LOWER,
+_C_UPPER,_C_UPPER,0,_C_UPPER,_C_LOWER,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_24[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_30[256] = {
+_C_BLANK,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_33[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,_C_LOWER,_C_UPPER,_C_LOWER,0,_C_LOWER,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,_C_UPPER,_C_UPPER,_C_UPPER,_C_LOWER,_C_LOWER,0,0,0,_C_LOWER,_C_LOWER,_C_LOWER,
+0,0,0,0,0,0,0,0,0,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,_C_LOWER,0,0,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,0,0,0,_C_UPPER,0,0,0,0,0,_C_UPPER,
+0,_C_UPPER,0,0,_C_LOWER,_C_LOWER,0,0,0,0,_C_LOWER,_C_UPPER,_C_LOWER,_C_UPPER,_C_UPPER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_UPPER,0,_C_UPPER,_C_UPPER,_C_LOWER,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_D8[256] = {
+_C_CTRL,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_DB[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,_C_CTRL,
+_C_CTRL,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,_C_CTRL
+};
+
+static byte _U_cat_DC[256] = {
+_C_CTRL,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_DF[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,_C_CTRL
+};
+
+static byte _U_cat_E0[256] = {
+_C_CTRL,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_F8[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,_C_CTRL
+};
+
+static byte _U_cat_FB[256] = {
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,0,0,0,0,0,0,0,
+0,0,0,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_cat_FE[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,_C_BLANK
+};
+
+static byte _U_cat_FF[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,
+_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,_C_UPPER,0,0,0,0,0,
+0,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,
+_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,_C_LOWER,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+byte *_U_cat[256] = {
+_U_cat_00,_U_cat_01,_U_cat_02,_U_cat_03,_U_cat_04,_U_cat_05,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+_U_cat_10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_U_cat_1E,_U_cat_1F,
+_U_cat_20,_U_cat_21,NULL,NULL,_U_cat_24,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+_U_cat_30,NULL,NULL,_U_cat_33,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_U_cat_D8,NULL,NULL,_U_cat_DB,_U_cat_DC,NULL,NULL,_U_cat_DF,
+_U_cat_E0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_U_cat_F8,NULL,NULL,_U_cat_FB,NULL,NULL,_U_cat_FE,_U_cat_FF
+};
diff --git a/charset/U-lower.h b/charset/U-lower.h
new file mode 100644 (file)
index 0000000..d7b34c8
--- /dev/null
@@ -0,0 +1,248 @@
+/* Generated automatically by gentab. Please don't edit. */
+
+static word _U_lower_00[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
+0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
+0x00F0,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0,0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_lower_01[256] = {
+0x0101,0,0x0103,0,0x0105,0,0x0107,0,0x0109,0,0x010B,0,0x010D,0,0x010F,0,
+0x0111,0,0x0113,0,0x0115,0,0x0117,0,0x0119,0,0x011B,0,0x011D,0,0x011F,0,
+0x0121,0,0x0123,0,0x0125,0,0x0127,0,0x0129,0,0x012B,0,0x012D,0,0x012F,0,
+0x0069,0,0x0133,0,0x0135,0,0x0137,0,0,0x013A,0,0x013C,0,0x013E,0,0x0140,
+0,0x0142,0,0x0144,0,0x0146,0,0x0148,0,0,0x014B,0,0x014D,0,0x014F,0,
+0x0151,0,0x0153,0,0x0155,0,0x0157,0,0x0159,0,0x015B,0,0x015D,0,0x015F,0,
+0x0161,0,0x0163,0,0x0165,0,0x0167,0,0x0169,0,0x016B,0,0x016D,0,0x016F,0,
+0x0171,0,0x0173,0,0x0175,0,0x0177,0,0x00FF,0x017A,0,0x017C,0,0x017E,0,0,
+0,0x0253,0x0183,0,0x0185,0,0x0254,0x0188,0,0x0256,0x0257,0x018C,0,0,0x0258,0x0259,
+0x025B,0x0192,0,0x0260,0x0263,0,0x0269,0x0268,0x0199,0,0,0,0x026F,0x0272,0,0,
+0x01A1,0,0x01A3,0,0x01A5,0,0,0x01A8,0,0x0283,0,0,0x01AD,0,0x0288,0x01B0,
+0,0x028A,0x028B,0x01B4,0,0x01B6,0,0x0292,0x01B9,0,0,0,0x01BD,0,0,0,
+0,0,0,0,0x01C6,0x01C6,0,0x01C9,0x01C9,0,0x01CC,0x01CC,0,0x01CE,0,0x01D0,
+0,0x01D2,0,0x01D4,0,0x01D6,0,0x01D8,0,0x01DA,0,0x01DC,0,0,0x01DF,0,
+0x01E1,0,0x01E3,0,0x01E5,0,0x01E7,0,0x01E9,0,0x01EB,0,0x01ED,0,0x01EF,0,
+0,0x01F3,0x01F3,0,0x01F5,0,0,0,0,0,0x01FB,0,0x01FD,0,0x01FF,0
+};
+
+static word _U_lower_02[256] = {
+0x0201,0,0x0203,0,0x0205,0,0x0207,0,0x0209,0,0x020B,0,0x020D,0,0x020F,0,
+0x0211,0,0x0213,0,0x0215,0,0x0217,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_lower_03[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0x03AC,0,0x03AD,0x03AE,0x03AF,0,0x03CC,0,0x03CD,0x03CE,
+0,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,
+0x03C0,0x03C1,0,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,0x03C9,0x03CA,0x03CB,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0x03E3,0,0x03E5,0,0x03E7,0,0x03E9,0,0x03EB,0,0x03ED,0,0x03EF,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_lower_04[256] = {
+0,0x0451,0x0452,0x0453,0x0454,0x0455,0x0456,0x0457,0x0458,0x0459,0x045A,0x045B,0x045C,0,0x045E,0x045F,
+0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,
+0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x0461,0,0x0463,0,0x0465,0,0x0467,0,0x0469,0,0x046B,0,0x046D,0,0x046F,0,
+0x0471,0,0x0473,0,0x0475,0,0x0477,0,0x0479,0,0x047B,0,0x047D,0,0x047F,0,
+0x0481,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x0491,0,0x0493,0,0x0495,0,0x0497,0,0x0499,0,0x049B,0,0x049D,0,0x049F,0,
+0x04A1,0,0x04A3,0,0x04A5,0,0x04A7,0,0x04A9,0,0x04AB,0,0x04AD,0,0x04AF,0,
+0x04B1,0,0x04B3,0,0x04B5,0,0x04B7,0,0x04B9,0,0x04BB,0,0x04BD,0,0x04BF,0,
+0,0x04C2,0,0x04C4,0,0,0,0x04C8,0,0,0,0x04CC,0,0,0,0,
+0x04D1,0,0x04D3,0,0x04D5,0,0x04D7,0,0x04D9,0,0x04DB,0,0x04DD,0,0x04DF,0,
+0x04E1,0,0x04E3,0,0x04E5,0,0x04E7,0,0x04E9,0,0x04EB,0,0,0,0x04EF,0,
+0x04F1,0,0x04F3,0,0x04F5,0,0,0,0x04F9,0,0,0,0,0,0,0
+};
+
+static word _U_lower_05[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0x0561,0x0562,0x0563,0x0564,0x0565,0x0566,0x0567,0x0568,0x0569,0x056A,0x056B,0x056C,0x056D,0x056E,0x056F,
+0x0570,0x0571,0x0572,0x0573,0x0574,0x0575,0x0576,0x0577,0x0578,0x0579,0x057A,0x057B,0x057C,0x057D,0x057E,0x057F,
+0x0580,0x0581,0x0582,0x0583,0x0584,0x0585,0x0586,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_lower_10[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x10D0,0x10D1,0x10D2,0x10D3,0x10D4,0x10D5,0x10D6,0x10D7,0x10D8,0x10D9,0x10DA,0x10DB,0x10DC,0x10DD,0x10DE,0x10DF,
+0x10E0,0x10E1,0x10E2,0x10E3,0x10E4,0x10E5,0x10E6,0x10E7,0x10E8,0x10E9,0x10EA,0x10EB,0x10EC,0x10ED,0x10EE,0x10EF,
+0x10F0,0x10F1,0x10F2,0x10F3,0x10F4,0x10F5,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_lower_1E[256] = {
+0x1E01,0,0x1E03,0,0x1E05,0,0x1E07,0,0x1E09,0,0x1E0B,0,0x1E0D,0,0x1E0F,0,
+0x1E11,0,0x1E13,0,0x1E15,0,0x1E17,0,0x1E19,0,0x1E1B,0,0x1E1D,0,0x1E1F,0,
+0x1E21,0,0x1E23,0,0x1E25,0,0x1E27,0,0x1E29,0,0x1E2B,0,0x1E2D,0,0x1E2F,0,
+0x1E31,0,0x1E33,0,0x1E35,0,0x1E37,0,0x1E39,0,0x1E3B,0,0x1E3D,0,0x1E3F,0,
+0x1E41,0,0x1E43,0,0x1E45,0,0x1E47,0,0x1E49,0,0x1E4B,0,0x1E4D,0,0x1E4F,0,
+0x1E51,0,0x1E53,0,0x1E55,0,0x1E57,0,0x1E59,0,0x1E5B,0,0x1E5D,0,0x1E5F,0,
+0x1E61,0,0x1E63,0,0x1E65,0,0x1E67,0,0x1E69,0,0x1E6B,0,0x1E6D,0,0x1E6F,0,
+0x1E71,0,0x1E73,0,0x1E75,0,0x1E77,0,0x1E79,0,0x1E7B,0,0x1E7D,0,0x1E7F,0,
+0x1E81,0,0x1E83,0,0x1E85,0,0x1E87,0,0x1E89,0,0x1E8B,0,0x1E8D,0,0x1E8F,0,
+0x1E91,0,0x1E93,0,0x1E95,0,0,0,0,0,0,0,0,0,0,0,
+0x1EA1,0,0x1EA3,0,0x1EA5,0,0x1EA7,0,0x1EA9,0,0x1EAB,0,0x1EAD,0,0x1EAF,0,
+0x1EB1,0,0x1EB3,0,0x1EB5,0,0x1EB7,0,0x1EB9,0,0x1EBB,0,0x1EBD,0,0x1EBF,0,
+0x1EC1,0,0x1EC3,0,0x1EC5,0,0x1EC7,0,0x1EC9,0,0x1ECB,0,0x1ECD,0,0x1ECF,0,
+0x1ED1,0,0x1ED3,0,0x1ED5,0,0x1ED7,0,0x1ED9,0,0x1EDB,0,0x1EDD,0,0x1EDF,0,
+0x1EE1,0,0x1EE3,0,0x1EE5,0,0x1EE7,0,0x1EE9,0,0x1EEB,0,0x1EED,0,0x1EEF,0,
+0x1EF1,0,0x1EF3,0,0x1EF5,0,0x1EF7,0,0x1EF9,0,0,0,0,0,0,0
+};
+
+static word _U_lower_1F[256] = {
+0,0,0,0,0,0,0,0,0x1F00,0x1F01,0x1F02,0x1F03,0x1F04,0x1F05,0x1F06,0x1F07,
+0,0,0,0,0,0,0,0,0x1F10,0x1F11,0x1F12,0x1F13,0x1F14,0x1F15,0,0,
+0,0,0,0,0,0,0,0,0x1F20,0x1F21,0x1F22,0x1F23,0x1F24,0x1F25,0x1F26,0x1F27,
+0,0,0,0,0,0,0,0,0x1F30,0x1F31,0x1F32,0x1F33,0x1F34,0x1F35,0x1F36,0x1F37,
+0,0,0,0,0,0,0,0,0x1F40,0x1F41,0x1F42,0x1F43,0x1F44,0x1F45,0,0,
+0,0,0,0,0,0,0,0,0,0x1F51,0,0x1F53,0,0x1F55,0,0x1F57,
+0,0,0,0,0,0,0,0,0x1F60,0x1F61,0x1F62,0x1F63,0x1F64,0x1F65,0x1F66,0x1F67,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1F80,0x1F81,0x1F82,0x1F83,0x1F84,0x1F85,0x1F86,0x1F87,
+0,0,0,0,0,0,0,0,0x1F90,0x1F91,0x1F92,0x1F93,0x1F94,0x1F95,0x1F96,0x1F97,
+0,0,0,0,0,0,0,0,0x1FA0,0x1FA1,0x1FA2,0x1FA3,0x1FA4,0x1FA5,0x1FA6,0x1FA7,
+0,0,0,0,0,0,0,0,0x1FB0,0x1FB1,0x1F70,0x1F71,0x1FB3,0,0,0,
+0,0,0,0,0,0,0,0,0x1F72,0x1F73,0x1F74,0x1F75,0x1FC3,0,0,0,
+0,0,0,0,0,0,0,0,0x1FD0,0x1FD1,0x1F76,0x1F77,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1FE0,0x1FE1,0x1F7A,0x1F7B,0x1FE5,0,0,0,
+0,0,0,0,0,0,0,0,0x1F78,0x1F79,0x1F7C,0x1F7D,0x1FF3,0,0,0
+};
+
+static word _U_lower_21[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x2170,0x2171,0x2172,0x2173,0x2174,0x2175,0x2176,0x2177,0x2178,0x2179,0x217A,0x217B,0x217C,0x217D,0x217E,0x217F,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_lower_24[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0x24D0,0x24D1,0x24D2,0x24D3,0x24D4,0x24D5,0x24D6,0x24D7,0x24D8,0x24D9,
+0x24DA,0x24DB,0x24DC,0x24DD,0x24DE,0x24DF,0x24E0,0x24E1,0x24E2,0x24E3,0x24E4,0x24E5,0x24E6,0x24E7,0x24E8,0x24E9,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_lower_FF[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0xFF41,0xFF42,0xFF43,0xFF44,0xFF45,0xFF46,0xFF47,0xFF48,0xFF49,0xFF4A,0xFF4B,0xFF4C,0xFF4D,0xFF4E,0xFF4F,
+0xFF50,0xFF51,0xFF52,0xFF53,0xFF54,0xFF55,0xFF56,0xFF57,0xFF58,0xFF59,0xFF5A,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+word *_U_lower[256] = {
+_U_lower_00,_U_lower_01,_U_lower_02,_U_lower_03,_U_lower_04,_U_lower_05,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+_U_lower_10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_U_lower_1E,_U_lower_1F,
+NULL,_U_lower_21,NULL,NULL,_U_lower_24,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_U_lower_FF
+};
diff --git a/charset/U-sig.h b/charset/U-sig.h
new file mode 100644 (file)
index 0000000..5fceac3
--- /dev/null
@@ -0,0 +1,172 @@
+/* Generated automatically by gentab. Please don't edit. */
+
+static byte _U_sig_00[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
+0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0,0,0,0,0,
+0,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
+0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0x61,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0x6F,0,0,0,0,0,
+0x41,0x41,0x41,0x41,0x41,0x41,0,0x43,0x45,0x45,0x45,0x45,0x49,0x49,0x49,0x49,
+0,0x4E,0x4F,0x4F,0x4F,0x4F,0x4F,0,0,0x55,0x55,0x55,0x55,0x59,0,0,
+0x41,0x41,0x41,0x41,0x41,0x41,0,0x43,0x45,0x45,0x45,0x45,0x49,0x49,0x49,0x49,
+0,0x4E,0x4F,0x4F,0x4F,0x4F,0x4F,0,0,0x55,0x55,0x55,0x55,0x59,0,0x59
+};
+
+static byte _U_sig_01[256] = {
+0x41,0x41,0x41,0x41,0x41,0x41,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,
+0,0,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x47,0x47,0x47,0x47,
+0x47,0x47,0x47,0x47,0x48,0x48,0,0,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+0x49,0x49,0,0,0x4A,0x4A,0x4B,0x4B,0,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0,
+0,0,0,0x4E,0x4E,0x4E,0x4E,0x4E,0x4E,0,0,0,0x4F,0x4F,0x4F,0x4F,
+0x4F,0x4F,0,0,0x52,0x52,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,
+0x53,0x53,0x54,0x54,0x54,0x54,0,0,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x57,0x57,0x59,0x59,0x59,0x5A,0x5A,0x5A,0x5A,0x5A,0x5A,0x53,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x4F,0x4F,0,0,0,0,0,0,0,0,0,0,0,0,0,0x55,
+0x55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0x41,0x41,0x49,
+0x49,0x4F,0x4F,0x55,0x55,0,0,0,0,0,0,0,0,0,0,0,
+0x41,0x41,0,0,0,0,0x47,0x47,0x4B,0x4B,0x4F,0x4F,0,0,0,0,
+0x6A,0,0,0,0x47,0x47,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_sig_02[256] = {
+0x41,0x41,0x41,0x41,0x45,0x45,0x45,0x45,0x49,0x49,0x49,0x49,0x4F,0x4F,0x4F,0x4F,
+0x52,0x52,0x52,0x52,0x55,0x55,0x55,0x55,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_sig_1E[256] = {
+0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0,0,0x44,0x44,0x44,0x44,0x44,0x44,
+0x44,0x44,0x44,0x44,0,0,0,0,0x45,0x45,0x45,0x45,0,0,0x46,0x46,
+0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0,0,
+0x4B,0x4B,0x4B,0x4B,0x4B,0x4B,0x4C,0x4C,0,0,0x4C,0x4C,0x4C,0x4C,0x4D,0x4D,
+0x4D,0x4D,0x4D,0x4D,0x4E,0x4E,0x4E,0x4E,0x4E,0x4E,0x4E,0x4E,0,0,0,0,
+0,0,0,0,0x50,0x50,0x50,0x50,0x52,0x52,0x52,0x52,0,0,0x52,0x52,
+0x53,0x53,0x53,0x53,0,0,0,0,0,0,0x54,0x54,0x54,0x54,0x54,0x54,
+0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0,0,0,0,0x56,0x56,0x56,0x56,
+0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x59,0x59,
+0x5A,0x5A,0x5A,0x5A,0x5A,0x5A,0x68,0x74,0x77,0x79,0,0,0,0,0,0,
+0x41,0x41,0x41,0x41,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x45,0x45,0x45,0x45,0x45,0x45,0,0,
+0,0,0,0,0,0,0,0,0x49,0x49,0x49,0x49,0x4F,0x4F,0x4F,0x4F,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0x55,0x55,0x55,0x55,0,0,0,0,0,0,0,0,
+0,0,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0,0,0,0,0,0
+};
+
+static byte _U_sig_20[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x6E,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_sig_21[256] = {
+0,0,0x43,0,0,0,0,0,0,0,0x67,0x48,0x48,0x48,0x68,0,
+0x49,0x49,0x4C,0x6C,0,0x4E,0,0,0x50,0x50,0x51,0x52,0x52,0x52,0,0,
+0,0,0,0,0x5A,0,0,0,0x5A,0,0x4B,0,0x42,0x43,0,0x65,
+0x45,0x46,0,0x4D,0x6F,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_sig_24[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,
+0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,
+0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,
+0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static byte _U_sig_FF[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
+0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0,0,0,0,0,
+0,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
+0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+byte *_U_sig[256] = {
+_U_sig_00,_U_sig_01,_U_sig_02,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_U_sig_1E,NULL,
+_U_sig_20,_U_sig_21,NULL,NULL,_U_sig_24,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_U_sig_FF
+};
diff --git a/charset/U-unacc.h b/charset/U-unacc.h
new file mode 100644 (file)
index 0000000..94849bd
--- /dev/null
@@ -0,0 +1,229 @@
+/* Generated automatically by gentab. Please don't edit. */
+
+static word _U_unaccent_00[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0x0061,0,0,0,0,0,
+0,0,0,0,0,0x03BC,0,0,0,0,0x006F,0,0,0,0,0,
+0x0041,0x0041,0x0041,0x0041,0x0041,0x0041,0,0x0043,0x0045,0x0045,0x0045,0x0045,0x0049,0x0049,0x0049,0x0049,
+0,0x004E,0x004F,0x004F,0x004F,0x004F,0x004F,0,0,0x0055,0x0055,0x0055,0x0055,0x0059,0,0,
+0x0061,0x0061,0x0061,0x0061,0x0061,0x0061,0,0x0063,0x0065,0x0065,0x0065,0x0065,0x0069,0x0069,0x0069,0x0069,
+0,0x006E,0x006F,0x006F,0x006F,0x006F,0x006F,0,0,0x0075,0x0075,0x0075,0x0075,0x0079,0,0x0079
+};
+
+static word _U_unaccent_01[256] = {
+0x0041,0x0061,0x0041,0x0061,0x0041,0x0061,0x0043,0x0063,0x0043,0x0063,0x0043,0x0063,0x0043,0x0063,0x0044,0x0064,
+0,0,0x0045,0x0065,0x0045,0x0065,0x0045,0x0065,0x0045,0x0065,0x0045,0x0065,0x0047,0x0067,0x0047,0x0067,
+0x0047,0x0067,0x0047,0x0067,0x0048,0x0068,0,0,0x0049,0x0069,0x0049,0x0069,0x0049,0x0069,0x0049,0x0069,
+0x0049,0,0,0,0x004A,0x006A,0x004B,0x006B,0,0x004C,0x006C,0x004C,0x006C,0x004C,0x006C,0,
+0,0,0,0x004E,0x006E,0x004E,0x006E,0x004E,0x006E,0,0,0,0x004F,0x006F,0x004F,0x006F,
+0x004F,0x006F,0,0,0x0052,0x0072,0x0052,0x0072,0x0052,0x0072,0x0053,0x0073,0x0053,0x0073,0x0053,0x0073,
+0x0053,0x0073,0x0054,0x0074,0x0054,0x0074,0,0,0x0055,0x0075,0x0055,0x0075,0x0055,0x0075,0x0055,0x0075,
+0x0055,0x0075,0x0055,0x0075,0x0057,0x0077,0x0059,0x0079,0x0059,0x005A,0x007A,0x005A,0x007A,0x005A,0x007A,0x0073,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x004F,0x006F,0,0,0,0,0,0,0,0,0,0,0,0,0,0x0055,
+0x0075,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0x0041,0x0061,0x0049,
+0x0069,0x004F,0x006F,0x0055,0x0075,0x00DC,0x00FC,0x00DC,0x00FC,0x00DC,0x00FC,0x00DC,0x00FC,0,0x00C4,0x00E4,
+0x0041,0x0061,0x00C6,0x00E6,0,0,0x0047,0x0067,0x004B,0x006B,0x004F,0x006F,0x01EA,0x01EB,0x01B7,0x0292,
+0x006A,0,0,0,0x0047,0x0067,0,0,0,0,0x00C5,0x00E5,0x00C6,0x00E6,0x00D8,0x00F8
+};
+
+static word _U_unaccent_02[256] = {
+0x0041,0x0061,0x0041,0x0061,0x0045,0x0065,0x0045,0x0065,0x0049,0x0069,0x0049,0x0069,0x004F,0x006F,0x004F,0x006F,
+0x0052,0x0072,0x0052,0x0072,0x0055,0x0075,0x0055,0x0075,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x0068,0x0266,0x006A,0x0072,0x0279,0x027B,0x0281,0x0077,0x0079,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x0263,0x006C,0x0073,0x0078,0x0295,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_unaccent_03[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0x0391,0,0x0395,0x0397,0x0399,0,0x039F,0,0x03A5,0x03A9,
+0x03B9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0x0399,0x03A5,0x03B1,0x03B5,0x03B7,0x03B9,
+0x03C5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0x03B9,0x03C5,0x03BF,0x03C5,0x03C9,0,
+0,0,0,0x03D2,0x03D2,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_unaccent_04[256] = {
+0,0x0415,0,0x0413,0,0,0,0x0406,0,0,0,0,0x041A,0,0x0423,0,
+0,0,0,0,0,0,0,0,0,0x0418,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0x0438,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0x0435,0,0x0433,0,0,0,0x0456,0,0,0,0,0x043A,0,0x0443,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0x0474,0x0475,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0x0416,0x0436,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x0410,0x0430,0x0410,0x0430,0x00C6,0x00E6,0x0415,0x0435,0x018F,0x0259,0x018F,0x0259,0x0416,0x0436,0x0417,0x0437,
+0x01B7,0x0292,0x0418,0x0438,0x0418,0x0438,0x041E,0x043E,0x019F,0x0275,0x019F,0x0275,0,0,0x0423,0x0443,
+0x0423,0x0443,0x0423,0x0443,0x0427,0x0447,0,0,0x042B,0x044B,0,0,0,0,0,0
+};
+
+static word _U_unaccent_1E[256] = {
+0x0041,0x0061,0x0042,0x0062,0x0042,0x0062,0x0042,0x0062,0x00C7,0x00E7,0x0044,0x0064,0x0044,0x0064,0x0044,0x0064,
+0x0044,0x0064,0x0044,0x0064,0x0112,0x0113,0x0112,0x0113,0x0045,0x0065,0x0045,0x0065,0x0114,0x0115,0x0046,0x0066,
+0x0047,0x0067,0x0048,0x0068,0x0048,0x0068,0x0048,0x0068,0x0048,0x0068,0x0048,0x0068,0x0049,0x0069,0x00CF,0x00EF,
+0x004B,0x006B,0x004B,0x006B,0x004B,0x006B,0x004C,0x006C,0x1E36,0x1E37,0x004C,0x006C,0x004C,0x006C,0x004D,0x006D,
+0x004D,0x006D,0x004D,0x006D,0x004E,0x006E,0x004E,0x006E,0x004E,0x006E,0x004E,0x006E,0x00D5,0x00F5,0x00D5,0x00F5,
+0x014C,0x014D,0x014C,0x014D,0x0050,0x0070,0x0050,0x0070,0x0052,0x0072,0x0052,0x0072,0x1E5A,0x1E5B,0x0052,0x0072,
+0x0053,0x0073,0x0053,0x0073,0x015A,0x015B,0x0160,0x0161,0x1E62,0x1E63,0x0054,0x0074,0x0054,0x0074,0x0054,0x0074,
+0x0054,0x0074,0x0055,0x0075,0x0055,0x0075,0x0055,0x0075,0x0168,0x0169,0x016A,0x016B,0x0056,0x0076,0x0056,0x0076,
+0x0057,0x0077,0x0057,0x0077,0x0057,0x0077,0x0057,0x0077,0x0057,0x0077,0x0058,0x0078,0x0058,0x0078,0x0059,0x0079,
+0x005A,0x007A,0x005A,0x007A,0x005A,0x007A,0x0068,0x0074,0x0077,0x0079,0,0x017F,0,0,0,0,
+0x0041,0x0061,0x0041,0x0061,0x00C2,0x00E2,0x00C2,0x00E2,0x00C2,0x00E2,0x00C2,0x00E2,0x00C2,0x00E2,0x0102,0x0103,
+0x0102,0x0103,0x0102,0x0103,0x0102,0x0103,0x0102,0x0103,0x0045,0x0065,0x0045,0x0065,0x0045,0x0065,0x00CA,0x00EA,
+0x00CA,0x00EA,0x00CA,0x00EA,0x00CA,0x00EA,0x00CA,0x00EA,0x0049,0x0069,0x0049,0x0069,0x004F,0x006F,0x004F,0x006F,
+0x00D4,0x00F4,0x00D4,0x00F4,0x00D4,0x00F4,0x00D4,0x00F4,0x00D4,0x00F4,0x01A0,0x01A1,0x01A0,0x01A1,0x01A0,0x01A1,
+0x01A0,0x01A1,0x01A0,0x01A1,0x0055,0x0075,0x0055,0x0075,0x01AF,0x01B0,0x01AF,0x01B0,0x01AF,0x01B0,0x01AF,0x01B0,
+0x01AF,0x01B0,0x0059,0x0079,0x0059,0x0079,0x0059,0x0079,0x0059,0x0079,0,0,0,0,0,0
+};
+
+static word _U_unaccent_1F[256] = {
+0x03B1,0x03B1,0x1F00,0x1F01,0x1F00,0x1F01,0x1F00,0x1F01,0x0391,0x0391,0x1F08,0x1F09,0x1F08,0x1F09,0x1F08,0x1F09,
+0x03B5,0x03B5,0x1F10,0x1F11,0x1F10,0x1F11,0,0,0x0395,0x0395,0x1F18,0x1F19,0x1F18,0x1F19,0,0,
+0x03B7,0x03B7,0x1F20,0x1F21,0x1F20,0x1F21,0x1F20,0x1F21,0x0397,0x0397,0x1F28,0x1F29,0x1F28,0x1F29,0x1F28,0x1F29,
+0x03B9,0x03B9,0x1F30,0x1F31,0x1F30,0x1F31,0x1F30,0x1F31,0x0399,0x0399,0x1F38,0x1F39,0x1F38,0x1F39,0x1F38,0x1F39,
+0x03BF,0x03BF,0x1F40,0x1F41,0x1F40,0x1F41,0,0,0x039F,0x039F,0x1F48,0x1F49,0x1F48,0x1F49,0,0,
+0x03C5,0x03C5,0x1F50,0x1F51,0x1F50,0x1F51,0x1F50,0x1F51,0,0x03A5,0,0x1F59,0,0x1F59,0,0x1F59,
+0x03C9,0x03C9,0x1F60,0x1F61,0x1F60,0x1F61,0x1F60,0x1F61,0x03A9,0x03A9,0x1F68,0x1F69,0x1F68,0x1F69,0x1F68,0x1F69,
+0x03B1,0x03B1,0x03B5,0x03B5,0x03B7,0x03B7,0x03B9,0x03B9,0x03BF,0x03BF,0x03C5,0x03C5,0x03C9,0x03C9,0,0,
+0x1F00,0x1F01,0x1F02,0x1F03,0x1F04,0x1F05,0x1F06,0x1F07,0x1F08,0x1F09,0x1F0A,0x1F0B,0x1F0C,0x1F0D,0x1F0E,0x1F0F,
+0x1F20,0x1F21,0x1F22,0x1F23,0x1F24,0x1F25,0x1F26,0x1F27,0x1F28,0x1F29,0x1F2A,0x1F2B,0x1F2C,0x1F2D,0x1F2E,0x1F2F,
+0x1F60,0x1F61,0x1F62,0x1F63,0x1F64,0x1F65,0x1F66,0x1F67,0x1F68,0x1F69,0x1F6A,0x1F6B,0x1F6C,0x1F6D,0x1F6E,0x1F6F,
+0x03B1,0x03B1,0x1F70,0x03B1,0x1F71,0,0x03B1,0x1FB6,0x0391,0x0391,0x0391,0x0391,0x0391,0,0x0399,0,
+0,0,0x1F74,0x03B7,0x1F75,0,0x03B7,0x1FC6,0x0395,0x0395,0x0397,0x0397,0x0397,0,0,0,
+0x03B9,0x03B9,0x03CA,0x03CA,0,0,0x03B9,0x03CA,0x0399,0x0399,0x0399,0x0399,0,0,0,0,
+0x03C5,0x03C5,0x03CB,0x03CB,0x03C1,0x03C1,0x03C5,0x03CB,0x03A5,0x03A5,0x03A5,0x03A5,0x03A1,0,0,0,
+0,0,0x1F7C,0x03C9,0x1F79,0,0x03C9,0x1FF6,0x039F,0x039F,0x03A9,0x03A9,0x03A9,0,0,0
+};
+
+static word _U_unaccent_20[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x006E,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_unaccent_21[256] = {
+0,0,0x0043,0,0,0,0,0x0190,0,0,0x0067,0x0048,0x0048,0x0048,0x0068,0x0127,
+0x0049,0x0049,0x004C,0x006C,0,0x004E,0,0,0x0050,0x0050,0x0051,0x0052,0x0052,0x0052,0,0,
+0,0,0,0,0x005A,0,0x03A9,0,0x005A,0,0x004B,0x00C5,0x0042,0x0043,0,0x0065,
+0x0045,0x0046,0,0x004D,0x006F,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x0049,0,0,0,0x0056,0,0,0,0,0x0058,0,0,0x004C,0x0043,0x0044,0x004D,
+0x0069,0,0,0,0x0076,0,0,0,0,0x0078,0,0,0x006C,0x0063,0x0064,0x006D,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_unaccent_24[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,
+0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,
+0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,
+0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_unaccent_FF[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
+0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0,0,0,0,0,
+0,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,
+0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+word *_U_unaccent[256] = {
+_U_unaccent_00,_U_unaccent_01,_U_unaccent_02,_U_unaccent_03,_U_unaccent_04,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_U_unaccent_1E,_U_unaccent_1F,
+_U_unaccent_20,_U_unaccent_21,NULL,NULL,_U_unaccent_24,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_U_unaccent_FF
+};
diff --git a/charset/U-upper.h b/charset/U-upper.h
new file mode 100644 (file)
index 0000000..8d5ae5f
--- /dev/null
@@ -0,0 +1,229 @@
+/* Generated automatically by gentab. Please don't edit. */
+
+static word _U_upper_00[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,
+0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
+0x00D0,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0,0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x0178
+};
+
+static word _U_upper_01[256] = {
+0,0x0100,0,0x0102,0,0x0104,0,0x0106,0,0x0108,0,0x010A,0,0x010C,0,0x010E,
+0,0x0110,0,0x0112,0,0x0114,0,0x0116,0,0x0118,0,0x011A,0,0x011C,0,0x011E,
+0,0x0120,0,0x0122,0,0x0124,0,0x0126,0,0x0128,0,0x012A,0,0x012C,0,0x012E,
+0,0x0049,0,0x0132,0,0x0134,0,0x0136,0,0,0x0139,0,0x013B,0,0x013D,0,
+0x013F,0,0x0141,0,0x0143,0,0x0145,0,0x0147,0,0,0x014A,0,0x014C,0,0x014E,
+0,0x0150,0,0x0152,0,0x0154,0,0x0156,0,0x0158,0,0x015A,0,0x015C,0,0x015E,
+0,0x0160,0,0x0162,0,0x0164,0,0x0166,0,0x0168,0,0x016A,0,0x016C,0,0x016E,
+0,0x0170,0,0x0172,0,0x0174,0,0x0176,0,0,0x0179,0,0x017B,0,0x017D,0x0053,
+0,0,0,0x0182,0,0x0184,0,0,0x0187,0,0,0,0x018B,0,0,0,
+0,0,0x0191,0,0,0,0,0,0,0x0198,0,0,0,0,0,0,
+0,0x01A0,0,0x01A2,0,0x01A4,0,0,0x01A7,0,0,0,0,0x01AC,0,0,
+0x01AF,0,0,0,0x01B3,0,0x01B5,0,0,0x01B8,0,0,0,0x01BC,0,0,
+0,0,0,0,0,0x01C4,0x01C4,0,0x01C7,0x01C7,0,0x01CA,0x01CA,0,0x01CD,0,
+0x01CF,0,0x01D1,0,0x01D3,0,0x01D5,0,0x01D7,0,0x01D9,0,0x01DB,0,0,0x01DE,
+0,0x01E0,0,0x01E2,0,0x01E4,0,0x01E6,0,0x01E8,0,0x01EA,0,0x01EC,0,0x01EE,
+0,0,0x01F1,0x01F1,0,0x01F4,0,0,0,0,0,0x01FA,0,0x01FC,0,0x01FE
+};
+
+static word _U_upper_02[256] = {
+0,0x0200,0,0x0202,0,0x0204,0,0x0206,0,0x0208,0,0x020A,0,0x020C,0,0x020E,
+0,0x0210,0,0x0212,0,0x0214,0,0x0216,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0x0181,0x0186,0,0x0189,0x018A,0x018E,0x018F,0,0x0190,0,0,0,0,
+0x0193,0,0,0x0194,0,0,0,0,0x0197,0x0196,0,0,0,0,0,0x019C,
+0,0,0x019D,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0x01A9,0,0,0,0,0x01AE,0,0x01B1,0x01B2,0,0,0,0,
+0,0,0x01B7,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_upper_03[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x0386,0x0388,0x0389,0x038A,
+0,0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F,
+0x03A0,0x03A1,0,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,0x03A8,0x03A9,0x03AA,0x03AB,0x038C,0x038E,0x038F,0,
+0x0392,0x0398,0,0,0,0x03A6,0x03A0,0,0,0,0,0,0,0,0,0,
+0,0,0,0x03E2,0,0x03E4,0,0x03E6,0,0x03E8,0,0x03EA,0,0x03EC,0,0x03EE,
+0x039A,0x03A1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_upper_04[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F,
+0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,
+0,0x0401,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407,0x0408,0x0409,0x040A,0x040B,0x040C,0,0x040E,0x040F,
+0,0x0460,0,0x0462,0,0x0464,0,0x0466,0,0x0468,0,0x046A,0,0x046C,0,0x046E,
+0,0x0470,0,0x0472,0,0x0474,0,0x0476,0,0x0478,0,0x047A,0,0x047C,0,0x047E,
+0,0x0480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0x0490,0,0x0492,0,0x0494,0,0x0496,0,0x0498,0,0x049A,0,0x049C,0,0x049E,
+0,0x04A0,0,0x04A2,0,0x04A4,0,0x04A6,0,0x04A8,0,0x04AA,0,0x04AC,0,0x04AE,
+0,0x04B0,0,0x04B2,0,0x04B4,0,0x04B6,0,0x04B8,0,0x04BA,0,0x04BC,0,0x04BE,
+0,0,0x04C1,0,0x04C3,0,0,0,0x04C7,0,0,0,0x04CB,0,0,0,
+0,0x04D0,0,0x04D2,0,0x04D4,0,0x04D6,0,0x04D8,0,0x04DA,0,0x04DC,0,0x04DE,
+0,0x04E0,0,0x04E2,0,0x04E4,0,0x04E6,0,0x04E8,0,0x04EA,0,0,0,0x04EE,
+0,0x04F0,0,0x04F2,0,0x04F4,0,0,0,0x04F8,0,0,0,0,0,0
+};
+
+static word _U_upper_05[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0x0531,0x0532,0x0533,0x0534,0x0535,0x0536,0x0537,0x0538,0x0539,0x053A,0x053B,0x053C,0x053D,0x053E,0x053F,
+0x0540,0x0541,0x0542,0x0543,0x0544,0x0545,0x0546,0x0547,0x0548,0x0549,0x054A,0x054B,0x054C,0x054D,0x054E,0x054F,
+0x0550,0x0551,0x0552,0x0553,0x0554,0x0555,0x0556,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_upper_1E[256] = {
+0,0x1E00,0,0x1E02,0,0x1E04,0,0x1E06,0,0x1E08,0,0x1E0A,0,0x1E0C,0,0x1E0E,
+0,0x1E10,0,0x1E12,0,0x1E14,0,0x1E16,0,0x1E18,0,0x1E1A,0,0x1E1C,0,0x1E1E,
+0,0x1E20,0,0x1E22,0,0x1E24,0,0x1E26,0,0x1E28,0,0x1E2A,0,0x1E2C,0,0x1E2E,
+0,0x1E30,0,0x1E32,0,0x1E34,0,0x1E36,0,0x1E38,0,0x1E3A,0,0x1E3C,0,0x1E3E,
+0,0x1E40,0,0x1E42,0,0x1E44,0,0x1E46,0,0x1E48,0,0x1E4A,0,0x1E4C,0,0x1E4E,
+0,0x1E50,0,0x1E52,0,0x1E54,0,0x1E56,0,0x1E58,0,0x1E5A,0,0x1E5C,0,0x1E5E,
+0,0x1E60,0,0x1E62,0,0x1E64,0,0x1E66,0,0x1E68,0,0x1E6A,0,0x1E6C,0,0x1E6E,
+0,0x1E70,0,0x1E72,0,0x1E74,0,0x1E76,0,0x1E78,0,0x1E7A,0,0x1E7C,0,0x1E7E,
+0,0x1E80,0,0x1E82,0,0x1E84,0,0x1E86,0,0x1E88,0,0x1E8A,0,0x1E8C,0,0x1E8E,
+0,0x1E90,0,0x1E92,0,0x1E94,0,0,0,0,0,0,0,0,0,0,
+0,0x1EA0,0,0x1EA2,0,0x1EA4,0,0x1EA6,0,0x1EA8,0,0x1EAA,0,0x1EAC,0,0x1EAE,
+0,0x1EB0,0,0x1EB2,0,0x1EB4,0,0x1EB6,0,0x1EB8,0,0x1EBA,0,0x1EBC,0,0x1EBE,
+0,0x1EC0,0,0x1EC2,0,0x1EC4,0,0x1EC6,0,0x1EC8,0,0x1ECA,0,0x1ECC,0,0x1ECE,
+0,0x1ED0,0,0x1ED2,0,0x1ED4,0,0x1ED6,0,0x1ED8,0,0x1EDA,0,0x1EDC,0,0x1EDE,
+0,0x1EE0,0,0x1EE2,0,0x1EE4,0,0x1EE6,0,0x1EE8,0,0x1EEA,0,0x1EEC,0,0x1EEE,
+0,0x1EF0,0,0x1EF2,0,0x1EF4,0,0x1EF6,0,0x1EF8,0,0,0,0,0,0
+};
+
+static word _U_upper_1F[256] = {
+0x1F08,0x1F09,0x1F0A,0x1F0B,0x1F0C,0x1F0D,0x1F0E,0x1F0F,0,0,0,0,0,0,0,0,
+0x1F18,0x1F19,0x1F1A,0x1F1B,0x1F1C,0x1F1D,0,0,0,0,0,0,0,0,0,0,
+0x1F28,0x1F29,0x1F2A,0x1F2B,0x1F2C,0x1F2D,0x1F2E,0x1F2F,0,0,0,0,0,0,0,0,
+0x1F38,0x1F39,0x1F3A,0x1F3B,0x1F3C,0x1F3D,0x1F3E,0x1F3F,0,0,0,0,0,0,0,0,
+0x1F48,0x1F49,0x1F4A,0x1F4B,0x1F4C,0x1F4D,0,0,0,0,0,0,0,0,0,0,
+0,0x1F59,0,0x1F5B,0,0x1F5D,0,0x1F5F,0,0,0,0,0,0,0,0,
+0x1F68,0x1F69,0x1F6A,0x1F6B,0x1F6C,0x1F6D,0x1F6E,0x1F6F,0,0,0,0,0,0,0,0,
+0x1FBA,0x1FBB,0x1FC8,0x1FC9,0x1FCA,0x1FCB,0x1FDA,0x1FDB,0x1FF8,0x1FF9,0x1FEA,0x1FEB,0x1FFA,0x1FFB,0,0,
+0x1F88,0x1F89,0x1F8A,0x1F8B,0x1F8C,0x1F8D,0x1F8E,0x1F8F,0,0,0,0,0,0,0,0,
+0x1F98,0x1F99,0x1F9A,0x1F9B,0x1F9C,0x1F9D,0x1F9E,0x1F9F,0,0,0,0,0,0,0,0,
+0x1FA8,0x1FA9,0x1FAA,0x1FAB,0x1FAC,0x1FAD,0x1FAE,0x1FAF,0,0,0,0,0,0,0,0,
+0x1FB8,0x1FB9,0,0x1FBC,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0x1FCC,0,0,0,0,0,0,0,0,0,0,0,0,
+0x1FD8,0x1FD9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x1FE8,0x1FE9,0,0,0,0x1FEC,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0x1FFC,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_upper_21[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x2160,0x2161,0x2162,0x2163,0x2164,0x2165,0x2166,0x2167,0x2168,0x2169,0x216A,0x216B,0x216C,0x216D,0x216E,0x216F,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_upper_24[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x24B6,0x24B7,0x24B8,0x24B9,0x24BA,0x24BB,0x24BC,0x24BD,0x24BE,0x24BF,0x24C0,0x24C1,0x24C2,0x24C3,0x24C4,0x24C5,
+0x24C6,0x24C7,0x24C8,0x24C9,0x24CA,0x24CB,0x24CC,0x24CD,0x24CE,0x24CF,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+static word _U_upper_FF[256] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0xFF21,0xFF22,0xFF23,0xFF24,0xFF25,0xFF26,0xFF27,0xFF28,0xFF29,0xFF2A,0xFF2B,0xFF2C,0xFF2D,0xFF2E,0xFF2F,
+0xFF30,0xFF31,0xFF32,0xFF33,0xFF34,0xFF35,0xFF36,0xFF37,0xFF38,0xFF39,0xFF3A,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+word *_U_upper[256] = {
+_U_upper_00,_U_upper_01,_U_upper_02,_U_upper_03,_U_upper_04,_U_upper_05,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_U_upper_1E,_U_upper_1F,
+NULL,_U_upper_21,NULL,NULL,_U_upper_24,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_U_upper_FF
+};
diff --git a/charset/debug.c b/charset/debug.c
new file mode 100644 (file)
index 0000000..7874856
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ *     The UniCode Library -- Debugging Support Functions
+ *
+ *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ */
+
+#include <stdio.h>
+#include <lib/lib.h>
+
+#include "unicode.h"
+
+static byte *
+get_static_buffer(uns size)
+{
+  static byte *static_debug_buffer;
+  static uns static_debug_size;
+
+  if (!static_debug_buffer)
+    {
+      if (size < 1024)
+       size = 1024;
+      static_debug_buffer = xmalloc(size);
+      static_debug_size = size;
+    }
+  else if (static_debug_size < size)
+    {
+      size = (size+1023) & ~1023;
+      static_debug_buffer = xrealloc(static_debug_buffer, size);
+      static_debug_size = size;
+    }
+  return static_debug_buffer;
+}
+
+byte *
+static_ucs2_to_utf8(word *w)
+{
+  byte *buf = get_static_buffer(Ustrlen(w) * 3 + 1);
+
+  ucs2_to_utf8(buf, w);
+  return buf;
+}
diff --git a/charset/misc/gentab b/charset/misc/gentab
new file mode 100644 (file)
index 0000000..81bbb18
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+#
+#  Generate C Language Table for UniCode Data
+#  (c) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+#
+
+$name=$ARGV[0];
+$type=$ARGV[1];
+
+while (<STDIN>) {
+       chomp;
+       ($i,$j) = split/\s+/;
+       ($i =~ /^(..)(..)$/) || die "Syntax error at $i";
+       $table{$1} = "$name" . "_$1";
+       $val{$i} = $j;
+}
+
+print "/* Generated automatically by gentab. Please don't edit. */\n\n";
+
+for($i=0; $i<256; $i++) {
+       $x = sprintf("%02X", $i);
+       if (defined($table{$x})) {
+               print "static $type $table{$x}\[256\] = \{\n";
+               for($j=0; $j<256; $j++) {
+                       $y = $x . sprintf("%02X", $j);
+                       if ($val{$y}) { print $val{$y}; }
+                       else { print "0"; }
+                       if ($j != 255) { print ","; }
+                       if ($j % 16 == 15) { print "\n"; }
+               }
+               print "\};\n\n";
+       }
+}
+
+print "$type \*$name\[256\] = \{\n";
+for($j=0; $j<256; $j++) {
+       $y = sprintf("%02X", $j);
+       if (defined $table{$y}) { print $table{$y}; }
+       else { print "NULL"; }
+       if ($j != 255) { print ","; }
+       if ($j % 16 == 15) { print "\n"; }
+}
+print "\};\n";
diff --git a/charset/misc/mksig b/charset/misc/mksig
new file mode 100644 (file)
index 0000000..f718f21
--- /dev/null
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+#
+#  Create Word Signature Table
+#  (c) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+#
+
+open (U, "misc/u-upper") || die "No uppercase map";
+while (<U>) {
+    chomp;
+    /^(....)\t0x(....)$/ || die "Syntax error";
+    $upper{$1} = $2;
+}
+close U;
+
+open (U, "misc/u-unacc") || die "No unaccent map";
+while (<U>) {
+    chomp;
+    /^(....)\t0x(....)$/ || die "Syntax error";
+    $unacc{$1} = $2;
+}
+close U;
+
+open (U, "set/sig") || die "No signature set";
+while (<U>) {
+    chomp;
+    /^(..)\t(....)\t/ || next;
+    $sigset{$2} = $1;
+}
+close U;
+
+open (U, "misc/u-cat") || die "No category map";
+while (<U>) {
+    chomp;
+    /^(....)\t/ || die "Syntax error";
+    $from = $1;
+    /_C_(UPPER|LOWER)/ || next;
+    $to = (defined $upper{$from}) ? $upper{$from} : $from;
+    $to = (defined $unacc{$to}) ? $unacc{$to} : $to;
+    if (defined $sigset{$to}) { print "$from\t0x$sigset{$to}\n"; }
+}
diff --git a/charset/misc/mkunacc b/charset/misc/mkunacc
new file mode 100644 (file)
index 0000000..e8f9528
--- /dev/null
@@ -0,0 +1,34 @@
+#!/usr/bin/perl
+#
+#  Create Unicode Unaccenting Table
+#  (c) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+#
+
+open (UNI, "/tmp/unicode") || die "No Unicode Data File";
+while (<UNI>) {
+    chomp;
+    ($num,$name,$cat,$_,$_,$exp) = split /;/;
+    if ($cat =~ /^L[ul]$/) { $letter{$num} = 1; }
+    if ($cat =~ /^Mn$/) { $accent{$num} = 1; }
+}
+close UNI;
+
+open (UNI, "/tmp/unicode") || die "No Unicode Data File";
+while (<UNI>) {
+    chomp;
+    ($num,$name,$cat,$_,$_,$exp) = split /;/;
+    if ($exp ne "") {
+       $exp =~ s/^<.*> *//g;
+       $good = 1;
+       $e = "";
+       foreach $a (split(/\s+/, $exp)) {
+           if ($accent{$a}) { }
+           elsif ($letter{$a}) {
+               if ($e ne "") { $good = 0; }
+               else { $e = $a; }
+           } else { $good = 0; }
+       }
+       if ($good && $e ne "") { print "$num\t0x$e\n"; }
+    }
+}
+close UNI;
diff --git a/charset/misc/unisplit b/charset/misc/unisplit
new file mode 100644 (file)
index 0000000..0fdc4b3
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+#
+#  Split Unicode Data File
+#  (c) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+#
+
+open(I, "/tmp/unicode") || die "Unable to open UniCode data file";
+open(C, ">misc/u-cat") || die "cat file open";
+open(U, ">misc/u-upper") || die "upper file open";
+open(L, ">misc/u-lower") || die "lower file open";
+while (<I>) {
+       chomp;
+       (/^$/ || /^#/) && next;
+       ($code,$name,$cat,$comb,$bidir,$decomp,$d0,$d1,$d2,$n0,$mirr,$cmt2,$upper,$lower,$title) = split /;/;
+       if ($cat =~ /^C/) { $ccat = "_C_CTRL"; }
+       elsif ($cat =~ /^Z/) { $ccat = "_C_BLANK"; }
+       elsif ($cat =~ /^Ll/) { $ccat = "_C_LOWER"; }
+       elsif ($cat =~ /^Lu/) { $ccat = "_C_UPPER"; }
+       elsif ($code ge "0030" && $code le "0039") { $ccat = "_C_DIGIT|_C_XDIGIT"; }
+       elsif ($code eq "005F") { $ccat = "_C_INNER"; }
+       else { $ccat = ""; }
+       if ($code ge "0041" && $code le "0046" || $code ge "0061" && $code le "0066") { $ccat = $ccat . "|_C_XDIGIT"; }
+       if ($ccat ne "") { print C "$code\t$ccat\n"; }
+       if ($upper ne "") { print U "$code\t0x$upper\n"; }
+       if ($lower ne "") { print L "$code\t0x$lower\n"; }
+}
+close I;
+close C;
+close U;
+close L;
diff --git a/charset/set/sig b/charset/set/sig
new file mode 100644 (file)
index 0000000..ca2ffa8
--- /dev/null
@@ -0,0 +1,98 @@
+# Charset File Used For Word Signatures
+# (c) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+
+20     0020    SPACE
+21     0021    EXCLAMATION MARK
+22     0022    QUOTATION MARK
+23     0023    NUMBER SIGN
+24     0024    DOLLAR SIGN
+25     0025    PERCENT SIGN
+26     0026    AMPERSAND
+27     0027    APOSTROPHE
+28     0028    LEFT PARENTHESIS
+29     0029    RIGHT PARENTHESIS
+2A     002A    ASTERISK
+2B     002B    PLUS SIGN
+2C     002C    COMMA
+2D     002D    HYPHEN-MINUS
+2E     002E    FULL STOP
+2F     002F    SOLIDUS
+30     0030    DIGIT ZERO
+31     0031    DIGIT ONE
+32     0032    DIGIT TWO
+33     0033    DIGIT THREE
+34     0034    DIGIT FOUR
+35     0035    DIGIT FIVE
+36     0036    DIGIT SIX
+37     0037    DIGIT SEVEN
+38     0038    DIGIT EIGHT
+39     0039    DIGIT NINE
+3A     003A    COLON
+3B     003B    SEMICOLON
+3C     003C    LESS-THAN SIGN
+3D     003D    EQUALS SIGN
+3E     003E    GREATER-THAN SIGN
+3F     003F    QUESTION MARK
+40     0040    COMMERCIAL AT
+41     0041    LATIN CAPITAL LETTER A
+42     0042    LATIN CAPITAL LETTER B
+43     0043    LATIN CAPITAL LETTER C
+44     0044    LATIN CAPITAL LETTER D
+45     0045    LATIN CAPITAL LETTER E
+46     0046    LATIN CAPITAL LETTER F
+47     0047    LATIN CAPITAL LETTER G
+48     0048    LATIN CAPITAL LETTER H
+49     0049    LATIN CAPITAL LETTER I
+4A     004A    LATIN CAPITAL LETTER J
+4B     004B    LATIN CAPITAL LETTER K
+4C     004C    LATIN CAPITAL LETTER L
+4D     004D    LATIN CAPITAL LETTER M
+4E     004E    LATIN CAPITAL LETTER N
+4F     004F    LATIN CAPITAL LETTER O
+50     0050    LATIN CAPITAL LETTER P
+51     0051    LATIN CAPITAL LETTER Q
+52     0052    LATIN CAPITAL LETTER R
+53     0053    LATIN CAPITAL LETTER S
+54     0054    LATIN CAPITAL LETTER T
+55     0055    LATIN CAPITAL LETTER U
+56     0056    LATIN CAPITAL LETTER V
+57     0057    LATIN CAPITAL LETTER W
+58     0058    LATIN CAPITAL LETTER X
+59     0059    LATIN CAPITAL LETTER Y
+5A     005A    LATIN CAPITAL LETTER Z
+5B     005B    LEFT SQUARE BRACKET
+5C     005C    REVERSE SOLIDUS
+5D     005D    RIGHT SQUARE BRACKET
+5E     005E    CIRCUMFLEX ACCENT
+5F     005F    LOW LINE
+60     0060    GRAVE ACCENT
+61     0061    LATIN SMALL LETTER A
+62     0062    LATIN SMALL LETTER B
+63     0063    LATIN SMALL LETTER C
+64     0064    LATIN SMALL LETTER D
+65     0065    LATIN SMALL LETTER E
+66     0066    LATIN SMALL LETTER F
+67     0067    LATIN SMALL LETTER G
+68     0068    LATIN SMALL LETTER H
+69     0069    LATIN SMALL LETTER I
+6A     006A    LATIN SMALL LETTER J
+6B     006B    LATIN SMALL LETTER K
+6C     006C    LATIN SMALL LETTER L
+6D     006D    LATIN SMALL LETTER M
+6E     006E    LATIN SMALL LETTER N
+6F     006F    LATIN SMALL LETTER O
+70     0070    LATIN SMALL LETTER P
+71     0071    LATIN SMALL LETTER Q
+72     0072    LATIN SMALL LETTER R
+73     0073    LATIN SMALL LETTER S
+74     0074    LATIN SMALL LETTER T
+75     0075    LATIN SMALL LETTER U
+76     0076    LATIN SMALL LETTER V
+77     0077    LATIN SMALL LETTER W
+78     0078    LATIN SMALL LETTER X
+79     0079    LATIN SMALL LETTER Y
+7A     007A    LATIN SMALL LETTER Z
+7B     007B    LEFT CURLY BRACKET
+7C     007C    VERTICAL LINE
+7D     007D    RIGHT CURLY BRACKET
+7E     007E    TILDE
diff --git a/charset/strlen.c b/charset/strlen.c
new file mode 100644 (file)
index 0000000..723b662
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ *     The UniCode Library -- String Length
+ *
+ *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ */
+
+#include "unicode.h"
+
+uns
+Ustrlen(word *w)
+{
+  word *z = w;
+
+  while (*z)
+    z++;
+  return z - w;
+}
diff --git a/charset/test.c b/charset/test.c
new file mode 100644 (file)
index 0000000..a39779a
--- /dev/null
@@ -0,0 +1,55 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <lib/lib.h>
+#include <charset/unicode.h>
+
+int main(void)
+{
+  byte buf[256];
+  byte *c;
+  word u[256], *w;
+
+  while (fgets(buf, sizeof(buf), stdin))
+    {
+      if (c = strchr(buf, '\n'))
+       *c = 0;
+      utf8_to_ucs2(u, buf);
+      ucs2_to_utf8(buf, u);
+      puts(buf);
+      c = buf;
+      for(w=u; *w; w++)
+       *c++ = Usig(*w);
+      *c = 0;
+      puts(buf);
+      for(w=u; *w; w++)
+       *w = Uunaccent(*w);
+      ucs2_to_utf8(buf, u);
+      puts(buf);
+      for(w=u; *w; w++)
+       *w = Utoupper(*w);
+      ucs2_to_utf8(buf, u);
+      puts(buf);
+      for(w=u; *w; w++)
+       *w = Utolower(*w);
+      ucs2_to_utf8(buf, u);
+      puts(buf);
+      for(w=u; *w; w++)
+       if (!Cprint(*w))
+         putchar('?');
+       else if (Cdigit(*w))
+         putchar('0');
+       else if (Clower(*w))
+         putchar('a');
+       else if (Cupper(*w))
+         putchar('A');
+       else if (Cblank(*w))
+         putchar('_');
+       else
+         putchar('.');
+      putchar('\n');
+    }
+
+  return 0;
+}
diff --git a/charset/tocat.c b/charset/tocat.c
new file mode 100644 (file)
index 0000000..243e2fa
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+ *     The UniCode Library -- Category Table
+ *
+ *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ */
+
+#include "unicode.h"
+
+#include "U-cat.h"
diff --git a/charset/tolower.c b/charset/tolower.c
new file mode 100644 (file)
index 0000000..75bcc9d
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+ *     The UniCode Library -- Lowercase Table
+ *
+ *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ */
+
+#include "unicode.h"
+
+#include "U-lower.h"
diff --git a/charset/tosig.c b/charset/tosig.c
new file mode 100644 (file)
index 0000000..53f4bd2
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+ *     The UniCode Library -- Signaturing Table
+ *
+ *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ */
+
+#include "unicode.h"
+
+#include "U-sig.h"
diff --git a/charset/toupper.c b/charset/toupper.c
new file mode 100644 (file)
index 0000000..f37eb60
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+ *     The UniCode Library -- Uppercase Table
+ *
+ *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ */
+
+#include "unicode.h"
+
+#include "U-upper.h"
diff --git a/charset/unaccent.c b/charset/unaccent.c
new file mode 100644 (file)
index 0000000..9345201
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+ *     The UniCode Library -- Unaccenting Table
+ *
+ *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ */
+
+#include "unicode.h"
+
+#include "U-unacc.h"
diff --git a/charset/unicode.h b/charset/unicode.h
new file mode 100644 (file)
index 0000000..5319e37
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ *     The UniCode Library
+ *
+ *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ */
+
+#ifndef _UNICODE_H
+#define _UNICODE_H
+
+#include <lib/config.h>
+#include <lib/string.h>
+
+extern byte *_U_cat[], *_U_sig[];
+extern word *_U_upper[], *_U_lower[], *_U_unaccent[];
+
+static inline uns Ucategory(word x)
+{
+  if (_U_cat[x >> 8U])
+    return _U_cat[x >> 8U][x & 0xff];
+  else
+    return 0;
+}
+
+static inline word Utoupper(word x)
+{
+  word w = (_U_upper[x >> 8U]) ? _U_upper[x >> 8U][x & 0xff] : 0;
+  return w ? w : x;
+}
+
+static inline word Utolower(word x)
+{
+  word w = (_U_lower[x >> 8U]) ? _U_lower[x >> 8U][x & 0xff] : 0;
+  return w ? w : x;
+}
+
+static inline word Uunaccent(word x)
+{
+  word w = (_U_unaccent[x >> 8U]) ? _U_unaccent[x >> 8U][x & 0xff] : 0;
+  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)
+#define Ulower(x) UCat(x, _C_LOWER)
+#define Ualpha(x) UCat(x, _C_ALPHA)
+#define Ualnum(x) UCat(x, _C_ALNUM)
+#define Uprint(x) !Uctrl(x)
+#define Udigit(x) UCat(x, _C_DIGIT)
+#define Uxdigit(x) UCat(x, _C_XDIGIT)
+#define Uword(x) UCat(x, _C_WORD)
+#define Ublank(x) UCat(x, _C_BLANK)
+#define Uctrl(x) UCat(x, _C_CTRL)
+#define Uspace(x) Ublank(x)
+
+#define UNI_REPLACEMENT 0xfffc
+
+#define PUT_UTF8(p,u) do {             \
+  if (u < 0x80)                                \
+    *p++ = u;                          \
+  else if (u < 0x800)                  \
+    {                                  \
+      *p++ = 0xc0 | (u >> 6);          \
+      *p++ = 0x80 | (u & 0x3f);                \
+    }                                  \
+  else                                 \
+    {                                  \
+      *p++ = 0xe0 | (u >> 12);         \
+      *p++ = 0x80 | ((u >> 6) & 0x3f); \
+      *p++ = 0x80 | (u & 0x3f);                \
+    }                                  \
+  } while(0)
+
+#define IS_UTF8(c) ((c) >= 0xc0)
+
+#define GET_UTF8_CHAR(p,u) do {                \
+    if (*p >= 0xf0)                    \
+      {        /* Too large, use replacement char */   \
+       p++;                            \
+       while ((*p & 0xc0) == 0x80)     \
+         p++;                          \
+       u = UNI_REPLACEMENT;            \
+      }                                        \
+    else if (*p >= 0xe0)               \
+      {                                        \
+       u = *p++ & 0x0f;                \
+       if ((*p & 0xc0) == 0x80)        \
+         u = (u << 6) | (*p++ & 0x3f); \
+       if ((*p & 0xc0) == 0x80)        \
+         u = (u << 6) | (*p++ & 0x3f); \
+      }                                        \
+    else                               \
+      {                                        \
+       u = *p++ & 0x1f;                \
+       if ((*p & 0xc0) == 0x80)        \
+         u = (u << 6) | (*p++ & 0x3f); \
+      }                                        \
+  } while (0)                          \
+
+#define GET_UTF8(p,u)                  \
+    if (IS_UTF8(*p))                   \
+      GET_UTF8_CHAR(p,u);              \
+    else                               \
+      u = *p++
+
+#define UTF8_SPACE(u) ((u) < 0x80 ? 1 : (u) < 0x800 ? 2 : 3)
+
+uns ucs2_to_utf8(byte *, word *);
+uns utf8_to_ucs2(word *, byte *);
+byte *static_ucs2_to_utf8(word *);
+uns Ustrlen(word *);
+
+#endif
diff --git a/charset/utf8.c b/charset/utf8.c
new file mode 100644 (file)
index 0000000..915adde
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ *     The UniCode Library -- UTF-8 Functions
+ *
+ *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ */
+
+#include "unicode.h"
+
+uns
+ucs2_to_utf8(byte *d, word *s)
+{
+  byte *d0 = d;
+
+  while (*s)
+    {
+      uns u = *s++;
+      PUT_UTF8(d,u);
+    }
+  *d = 0;
+  return d - d0;
+}
+
+uns
+utf8_to_ucs2(word *d, byte *s)
+{
+  word *d0 = d;
+
+  while (*s)
+    if (IS_UTF8(*s))
+      {
+       uns u;
+       GET_UTF8_CHAR(s,u);
+       *d++ = u;
+      }
+    else if (*s >= 0x80)
+      *d++ = UNI_REPLACEMENT;
+    else
+      *d++ = *s++;
+  *d = 0;
+  return d0 - d;
+}
index e9b84fc38ba20a1b141528e02f490a712ddd2dfa..3c06a4700efe87ab55ef2d534ddcdc81f5976540 100644 (file)
@@ -4,9 +4,12 @@
  *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
  */
 
+#ifndef _SHERLOCK_CONFIG_H
+#define _SHERLOCK_CONFIG_H
+
 /* Version */
 
-#define SHER_VER "0.1"
+#define SHER_VER "1.0"
 
 /* Types */
 
@@ -18,6 +21,10 @@ typedef unsigned int ulg;            /* exactly 32 bits, unsigned */
 typedef int slg;                       /* exactly 32 bits, signed */
 typedef unsigned int uns;              /* at least 32 bits */
 
+#ifndef NULL
+#define NULL (void *)0
+#endif
+
 /* CPU characteristics */
 
 #define CPU_LITTLE_ENDIAN
@@ -39,3 +46,5 @@ typedef unsigned int uns;             /* at least 32 bits */
 #define NONRET
 
 #endif
+
+#endif
index 4c0bf6db01530482dc40f2b4ff5e91e929ebfc31..e5f1a873ae4a3d36436a1c6f555bb39a2da0f528 100644 (file)
@@ -78,7 +78,7 @@ wrbuf(struct fastbuf *f)
   if (l)
     {
       if (write(f->fd, f->buffer, l) != l)
-       die("Error writing %s: %m");
+       die("Error writing %s: %m", f->name);
       f->bptr = f->buffer;
       f->fdpos += l;
       f->pos = f->fdpos;
@@ -295,7 +295,7 @@ void bbcopy(struct fastbuf *f, struct fastbuf *t, uns l)
   while (l >= t->buflen)
     {
       wrbuf(t);
-      if (read(f->fd, t->buffer, t->buflen) != t->buflen)
+      if ((uns) read(f->fd, t->buffer, t->buflen) != t->buflen)
        die("bbcopy: %s exhausted", f->name);
       f->fdpos += t->buflen;
       t->bptr = t->bufend;
index 59cb662143e95434a62e1e04049fc5e6716578db..2e1225f8dd30e379f50e9bce17b0f14cb85a5ed8 100644 (file)
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -4,6 +4,9 @@
  *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
  */
 
+#ifndef _SHERLOCK_LIB_H
+#define _SHERLOCK_LIB_H
+
 #include <lib/config.h>
 
 /* Temporary Files */
@@ -60,6 +63,7 @@ void open_log_file(byte *);
 /* Allocation */
 
 void *xmalloc(uns);
+void *xrealloc(void *, uns);
 byte *stralloc(byte *);
 
 /* Content-Type pattern matching and filters */
@@ -107,6 +111,9 @@ struct oattr *prepend_attr(struct odes *, uns, byte *);
 
 /* oname.c */
 
+#define OID_MIN 0x10000                /* Values less than this have special meaning */
+
+ulg new_oid(uns);
 void mk_obj_name(byte *, ulg, byte *);
 int dump_obj_to_file(byte *, ulg, struct odes *, int);
 
@@ -145,3 +152,5 @@ regex *rx_compile(byte *r);
 void rx_free(regex *r);
 int rx_match(regex *r, byte *s);
 int rx_subst(regex *r, byte *by, byte *src, byte *dest, uns destlen);
+
+#endif
diff --git a/lib/realloc.c b/lib/realloc.c
new file mode 100644 (file)
index 0000000..78c6b19
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ *     Sherlock Library -- Memory Re-allocation
+ *
+ *     (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "lib.h"
+
+void *
+xrealloc(void *old, uns size)
+{
+  void *x = realloc(old, size);
+  if (!x)
+    die("Cannot reallocate %d bytes of memory", size);
+  return x;
+}
index 524591ea03a3d5b496a63d1692c597263fba925d..888f36b918bb4a422f234647ae891596674f936a 100644 (file)
@@ -44,7 +44,7 @@ rx_free(regex *r)
 int
 rx_match(regex *r, byte *s)
 {
-  uns len = strlen(s);
+  int len = strlen(s);
 
   r->len_cache = len;
   if (re_match(&r->buf, s, len, 0, &r->regs) < 0)
@@ -69,7 +69,7 @@ rx_subst(regex *r, byte *by, byte *src, byte *dest, uns destlen)
          by++;
          if (*by >= '0' && *by <= '9') /* \0 gets replaced by entire pattern */
            {
-             int j = *by++ - '0';
+             uns j = *by++ - '0';
              if (j < r->regs.num_regs)
                {
                  byte *s = src + r->regs.start[j];
index bf08e62b9e9a619cde96df6899128baa1ff98e67..9e428c0a4bccd330ad9793737995333c13b982fb 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -258,7 +258,7 @@ url_normalize(struct url *u, struct url *b)
       && u->rest && (k = strchr(u->rest, '#')))
     *k = 0;                            /* Kill fragment reference */
 
-  if (u->port == ~0)
+  if (u->port == ~0U)
     u->port = std_ports[u->protoid];
 
   if (   u->protocol && !u->host
@@ -365,7 +365,7 @@ url_pack(struct url *u, byte *d)
          d = append(d, "@", e);
        }
       d = append(d, u->host, e);
-      if (u->port != std_ports[u->protoid] && u->port != ~0)
+      if (u->port != std_ports[u->protoid] && u->port != ~0U)
        {
          char z[10];
          sprintf(z, "%d", u->port);
index eea9476230166816e39b152ec79d8925df7593d7..fe657fc729387b0ce623b395f18e86f235caf442 100644 (file)
@@ -12,7 +12,7 @@
 int
 wordsplit(byte *src, byte **dst, uns max)
 {
-  int cnt = 0;
+  uns cnt = 0;
 
   for(;;)
     {