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