2005-02-20 22:20:23 +00:00
|
|
|
#!/usr/bin/awk -f
|
|
|
|
#
|
|
|
|
# $Id$
|
|
|
|
#
|
|
|
|
# Description: a script that generates a single byte code set to Unicode
|
|
|
|
# mapping table.
|
|
|
|
#
|
2005-02-21 07:57:08 +00:00
|
|
|
|
|
|
|
function conv(str) {
|
|
|
|
if (!match(str, "^0[xX]")) {
|
|
|
|
return 0 + str
|
|
|
|
}
|
|
|
|
|
|
|
|
retval = 0
|
|
|
|
|
|
|
|
for (i = 3; i <= length(str); i++) {
|
|
|
|
n = index("0123456789abcdefABCDEF", substr(str, i, 1)) - 1
|
|
|
|
|
|
|
|
if (n < 0) {
|
|
|
|
return 0 + str;
|
|
|
|
} else if (n >= 16) {
|
|
|
|
n -= 6;
|
|
|
|
}
|
|
|
|
|
|
|
|
retval = retval * 16 + n
|
|
|
|
}
|
|
|
|
|
|
|
|
return retval
|
|
|
|
}
|
|
|
|
|
2005-02-20 22:20:23 +00:00
|
|
|
BEGIN {
|
|
|
|
FS="[ \t#]"
|
|
|
|
}
|
|
|
|
|
|
|
|
/^#/ {
|
|
|
|
# Do nothing
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
2005-02-21 07:57:08 +00:00
|
|
|
tbl[conv($1)] = conv($2)
|
2005-02-20 22:20:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
END {
|
|
|
|
print "/* This file is automatically generated. Do not edit! */"
|
|
|
|
if (IFNDEF_NAME) {
|
|
|
|
print "#ifndef " IFNDEF_NAME
|
|
|
|
}
|
|
|
|
|
2005-02-21 07:57:08 +00:00
|
|
|
print "static const int " TABLE_NAME "[] = {"
|
2005-02-20 22:20:23 +00:00
|
|
|
i = 160;
|
|
|
|
for (;;) {
|
|
|
|
printf("\t0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x", tbl[i++], tbl[i++], tbl[i++], tbl[i++], tbl[i++], tbl[i++], tbl[i++], tbl[i++]);
|
|
|
|
if (i != 256) {
|
|
|
|
printf(",\n");
|
|
|
|
} else {
|
2005-02-21 07:57:08 +00:00
|
|
|
print ""
|
2005-02-20 22:20:23 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
print "};"
|
|
|
|
|
|
|
|
if (IFNDEF_NAME) {
|
|
|
|
print "#endif /* " IFNDEF_NAME " */"
|
|
|
|
}
|
|
|
|
}
|