![]() ![]() | ![]() |
1.1 misho 1: #!/usr/bin/awk -f
2: #
1.1.1.2 ! misho 3: # $Id$
1.1 misho 4: #
5: # Description: a script that generates a single byte code set to Unicode
6: # mapping table.
7: #
8:
9: function conv(str) {
10: if (!match(str, "^0[xX]")) {
11: return 0 + str
12: }
13:
14: retval = 0
15:
16: for (i = 3; i <= length(str); i++) {
17: n = index("0123456789abcdefABCDEF", substr(str, i, 1)) - 1
18:
19: if (n < 0) {
20: return 0 + str;
21: } else if (n >= 16) {
22: n -= 6;
23: }
24:
25: retval = retval * 16 + n
26: }
27:
28: return retval
29: }
30:
31: BEGIN {
32: FS="[ \t#]"
33: }
34:
35: /^#/ {
36: # Do nothing
37: }
38:
39: {
40: tbl[conv($1)] = conv($2)
41: }
42:
43: END {
44: print "/* This file is automatically generated. Do not edit! */"
45: if (IFNDEF_NAME) {
46: print "#ifndef " IFNDEF_NAME
47: }
48:
49: print "static const int " TABLE_NAME "[] = {"
50: i = 160;
51: for (;;) {
52: 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++]);
53: if (i != 256) {
54: printf(",\n");
55: } else {
56: print ""
57: break;
58: }
59: }
60: print "};"
61:
62: if (IFNDEF_NAME) {
63: print "#endif /* " IFNDEF_NAME " */"
64: }
65: }