Implement weak pointers
[libs/core.git] / jis.py
1 #!/usr/bin/python
2
3 import sys
4 import os
5
6 in_fn = sys.argv[1]
7 out_fn = os.path.splitext(in_fn)[0]+".table"
8
9 data = []
10 for line in file(in_fn):
11         line = line.strip()
12         if line[0]=='#':
13                 continue
14         parts = line.split(None, 3)
15         code = eval(parts[1])-0x2020
16         code2 = (code&0xFF)+((code>>8)&0xFF)*94-95
17         data.append((code, eval(parts[2]), code2))
18
19 out = file(out_fn, "w")
20 out.write("namespace {\n\n")
21
22 data.sort(lambda x,y: cmp(x[0],y[0]))
23 out.write("const unsigned short jisx0208_to_ucs_table[94*94] =\n{\n\t")
24 i = 0
25 for code in xrange(94*94):
26         if code>0:
27                 out.write(", ")
28                 if (code%94%12)==0 or (code%94)==0:
29                         out.write("\n\t")
30         if i<len(data) and data[i][2]==code:
31                 out.write("0x%04X"%data[i][1])
32                 i += 1
33         else:
34                 out.write("0     ")
35 out.write("\n};\n\n")
36
37 data.sort(lambda x,y: cmp(x[1],y[1]))
38 out.write("struct UcsToJis\n{\n\tunsigned short ucs;\n\tunsigned short jis;\n};\nconst UcsToJis ucs_to_jisx0208_table[] =\n{\n\t")
39 for i in xrange(len(data)):
40         if i>0:
41                 out.write(", ")
42                 if (i%6)==0:
43                         out.write("\n\t")
44         out.write("{ 0x%04X, 0x%04X }"%(data[i][1], data[i][0]))
45 out.write("\n};\n\n")
46
47 out.write("unsigned ucs_to_jisx0208_table_size=%d;\n\n"%len(data))
48
49 out.write("}\n")