]> git.saurik.com Git - wxWidgets.git/blame - misc/unictabl/mk_ctable.c
quite ugly workaround, but even the engineers at WWDC couldn't give me a better alter...
[wxWidgets.git] / misc / unictabl / mk_ctable.c
CommitLineData
045c4fab
VS
1
2/* CVS-ID: $Id$ */
3
4#include <stdio.h>
5
6typedef struct {
7 unsigned char c;
8 unsigned short u;
9 } charsetItem;
10
11
12
13int cmpt(const void *i1, const void *i2)
14{
15 unsigned short u1 = ((charsetItem*)i1) -> u;
16 unsigned short u2 = ((charsetItem*)i2) -> u;
17 return (u1 - u2);
18}
19
20
21
22int main(int argc, char *argv[])
23{
24 unsigned enc, unic;
25 unsigned i;
26 charsetItem table[256];
27
28 for (i = 0; i < 256; i++) { table[i].c = i, table[i].u = 0; /* unknown */}
29
30 while (!feof(stdin))
31 {
32 scanf("%i\t%i\n", &enc, &unic);
33 table[enc].u = unic;
34 table[enc].c = enc;
35 if (enc < 128 && enc != unic)
36 fprintf(stderr, "7bit ASCII incompatibilit (%s): %i->%i\n",
37 argv[2], enc, unic);
38 }
39
40 /* dump it: */
41
42 printf("\n\n"
c260cbf8
MR
43 "/*\n"
44 " * %s to Unicode recoding table\n"
045c4fab
VS
45 " * based on file %s by Unicode Consortium\n"
46 " */\n\n"
cd1a22d1 47 "static const wxUint16 encoding_table__%s[128] = {",
045c4fab
VS
48 argv[2], argv[1], argv[2]);
49
50 for (i = 128; i < 256; i++)
51 {
52 if (i % 8 == 0)
c260cbf8
MR
53 printf("\n ");
54 printf(" 0x%04X%c", table[i].u, (i == 255) ? '\n' : ',');
045c4fab 55 }
c260cbf8 56 printf(" };\n");
045c4fab
VS
57
58 qsort(table + 128, 128, sizeof(table[0]), cmpt);
59
60
61/*
62 NO, WE DON'T NEED REVERSE TABLE, WE CAN BUILD IT AT RUNTIME
63 (won't take that much time, after all you don't init
64 conversion so often...)
65
66 printf("\n"
67 "static wxUint16 encoding_table_rev__%s[128] = {",
68 argv[2]);
69
70 for (i = 128; i < 256; i++)
71 {
72 if (i % 4 == 0)
73 printf("\n ");
74 printf("{c:0x%02X,u:0x%04X}%c ", table[i].c, table[i].u, (i == 255) ? '\n' : ',');
75 }
76 printf("};\n");
77*/
78
79 return 1;
80}