1#!/usr/bin/awk -f
2#
3# $Id$
4#
5# Description: a script that generates a single byte code set to Unicode
6# mapping table.
7#
8
9function 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
31BEGIN {
32	FS="[ \t#]"
33}
34
35/^#/ {
36	# Do nothing
37}
38
39{
40	tbl[conv($1)] = conv($2)
41}
42
43END {
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}
66