4805ee69c0e728cdc29045e3aad0cc28c02b2726
[reactos.git] / lib / kernel32 / nls / cptable.c
1 /*
2  * nls/cptable.c
3  * Copyright (C) 1996, Onno Hovers
4  * 
5  */
6
7 #include <windows.h>
8 #include <kernel32/lctable.h>
9 #include <kernel32/cptable.h>
10
11 extern CODEPAGE __CP37;
12 extern WCHAR  *__CP37_ToUnicode;
13 extern CHAR  **__CP37_FromUnicode;
14
15 extern CODEPAGE __CP437;
16 extern WCHAR  *__CP437_ToUnicode;
17 extern WCHAR  *__CP437_ToUnicodeGlyph;
18 extern CHAR  **__CP437_FromUnicode;
19
20 extern CODEPAGE __CP500;
21 extern WCHAR  *__CP500_ToUnicode;
22 extern CHAR  **__CP500_FromUnicode;
23
24 extern CODEPAGE __CP737;
25 extern WCHAR  *__CP737_ToUnicode;
26 extern WCHAR  *__CP737_ToUnicodeGlyph;
27 extern CHAR  **__CP737_FromUnicode;
28
29 extern CODEPAGE __CP775;
30 extern WCHAR  *__CP775_ToUnicode;
31 extern WCHAR  *__CP775_ToUnicodeGlyph;
32 extern CHAR  **__CP775_FromUnicode;
33
34 extern CODEPAGE __CP850;
35 extern WCHAR  *__CP850_ToUnicode;
36 extern WCHAR  *__CP850_ToUnicodeGlyph;
37 extern CHAR  **__CP850_FromUnicode;
38
39 extern CODEPAGE __CP852;
40 extern WCHAR  *__CP852_ToUnicode;
41 extern WCHAR  *__CP852_ToUnicodeGlyph;
42 extern CHAR  **__CP852_FromUnicode;
43
44 extern CODEPAGE __CP855;
45 extern WCHAR  *__CP855_ToUnicode;
46 extern WCHAR  *__CP855_ToUnicodeGlyph;
47 extern CHAR  **__CP855_FromUnicode;
48
49 extern CODEPAGE __CP857;
50 extern WCHAR  *__CP857_ToUnicode;
51 extern WCHAR  *__CP857_ToUnicodeGlyph;
52 extern CHAR  **__CP857_FromUnicode;
53
54 extern CODEPAGE __CP860;
55 extern WCHAR  *__CP860_ToUnicode;
56 extern WCHAR  *__CP860_ToUnicodeGlyph;
57 extern CHAR  **__CP860_FromUnicode;
58
59 extern CODEPAGE __CP861;
60 extern WCHAR  *__CP861_ToUnicode;
61 extern WCHAR  *__CP861_ToUnicodeGlyph;
62 extern CHAR  **__CP861_FromUnicode;
63
64 extern CODEPAGE __CP863;
65 extern WCHAR  *__CP863_ToUnicode;
66 extern WCHAR  *__CP863_ToUnicodeGlyph;
67 extern CHAR  **__CP863_FromUnicode;
68
69 extern CODEPAGE __CP865;
70 extern WCHAR  *__CP865_ToUnicode;
71 extern WCHAR  *__CP865_ToUnicodeGlyph;
72 extern CHAR  **__CP865_FromUnicode;
73
74 extern CODEPAGE __CP866;
75 extern WCHAR  *__CP866_ToUnicode;
76 extern WCHAR  *__CP866_ToUnicodeGlyph;
77 extern CHAR  **__CP866_FromUnicode;
78
79 extern CODEPAGE __CP869;
80 extern WCHAR  *__CP869_ToUnicode;
81 extern WCHAR  *__CP869_ToUnicodeGlyph;
82 extern CHAR  **__CP869_FromUnicode;
83
84 extern CODEPAGE __CP875;
85 extern WCHAR  *__CP875_ToUnicode;
86 extern CHAR  **__CP875_FromUnicode;
87
88 extern CODEPAGE __CP1026;
89 extern WCHAR  *__CP1026_ToUnicode;
90 extern CHAR  **__CP1026_FromUnicode;
91
92 extern CODEPAGE __CP1250;
93 extern WCHAR  *__CP1250_ToUnicode;
94 extern CHAR  **__CP1250_FromUnicode;
95
96 extern CODEPAGE __CP1251;
97 extern WCHAR  *__CP1251_ToUnicode;
98 extern CHAR  **__CP1251_FromUnicode;
99
100 extern CODEPAGE __CP1252;
101 extern WCHAR  *__CP1252_ToUnicode;
102 extern CHAR  **__CP1252_FromUnicode;
103
104 extern CODEPAGE __CP1253;
105 extern WCHAR  *__CP1253_ToUnicode;
106 extern CHAR  **__CP1253_FromUnicode;
107
108 extern CODEPAGE __CP1254;
109 extern WCHAR  *__CP1254_ToUnicode;
110 extern CHAR  **__CP1254_FromUnicode;
111
112 extern CODEPAGE __CP1255;
113 extern WCHAR  *__CP1255_ToUnicode;
114 extern CHAR  **__CP1255_FromUnicode;
115
116 extern CODEPAGE __CP1256;
117 extern WCHAR  *__CP1256_ToUnicode;
118 extern CHAR  **__CP1256_FromUnicode;
119
120 extern CODEPAGE __CP1257;
121 extern WCHAR  *__CP1257_ToUnicode;
122 extern CHAR  **__CP1257_FromUnicode;
123
124 extern CODEPAGE __CP1258;
125 extern WCHAR  *__CP1258_ToUnicode;
126 extern CHAR  **__CP1258_FromUnicode;
127
128 extern CODEPAGE __CP10000;
129 extern WCHAR  *__CP10000_ToUnicode;
130 extern CHAR  **__CP10000_FromUnicode;
131
132 extern CODEPAGE __CP10006;
133 extern WCHAR  *__CP10006_ToUnicode;
134 extern CHAR  **__CP10006_FromUnicode;
135
136 extern CODEPAGE __CP10007;
137 extern WCHAR  *__CP10007_ToUnicode;
138 extern CHAR  **__CP10007_FromUnicode;
139
140 extern CODEPAGE __CP10029;
141 extern WCHAR  *__CP10029_ToUnicode;
142 extern CHAR  **__CP10029_FromUnicode;
143
144 extern CODEPAGE __CP10079;
145 extern WCHAR  *__CP10079_ToUnicode;
146 extern CHAR  **__CP10079_FromUnicode;
147
148 extern CODEPAGE __CP10081;
149 extern WCHAR  *__CP10081_ToUnicode;
150 extern CHAR  **__CP10081_FromUnicode;
151
152 CPINFO __CPGenInfo={1, {'?',0}, { 0,0,0,0, 0,0,0,0, 0,0,0,0 }};
153
154 PCODEPAGE __CPFirst = &__CP37;
155
156 /* EBCDIC */
157 CODEPAGE __CP37 =
158 {
159    &__CP437, 37, CODEPAGE_EBCDIC, &__CP37_ToUnicode, 
160    &__CP37_ToUnicode, &__CP37_FromUnicode,
161    &__CPGenInfo
162 };
163
164 /* MS-DOS U.S. */
165 CODEPAGE __CP437 =
166 {
167    &__CP500, 437, CODEPAGE_OEM, &__CP437_ToUnicode, 
168    &__CP437_ToUnicodeGlyph, &__CP437_FromUnicode,
169    &__CPGenInfo
170 };
171
172 /* EBCDIC */
173 CODEPAGE __CP500 =
174 {
175    &__CP737, 500, CODEPAGE_EBCDIC, &__CP500_ToUnicode, 
176    &__CP500_ToUnicode, &__CP500_FromUnicode,
177    &__CPGenInfo
178 };
179
180 /* MS-DOS Greek */
181 CODEPAGE __CP737 =
182 {
183    &__CP775, 737, CODEPAGE_OEM, &__CP737_ToUnicode, 
184    &__CP737_ToUnicodeGlyph, &__CP737_FromUnicode,
185    &__CPGenInfo
186 };
187
188 /* MS-DOS Baltic Rim */
189 CODEPAGE __CP775 =
190 {
191    &__CP850, 775, CODEPAGE_OEM, &__CP775_ToUnicode, 
192    &__CP775_ToUnicodeGlyph, &__CP775_FromUnicode,
193    &__CPGenInfo
194 };
195
196 /* MS-DOS Latin 1 */
197 CODEPAGE __CP850 =
198 {
199    &__CP852, 850, CODEPAGE_OEM, &__CP850_ToUnicode, 
200    &__CP850_ToUnicodeGlyph, &__CP850_FromUnicode,
201    &__CPGenInfo
202 };
203
204 /* MS-DOS Latin 2 */
205 CODEPAGE __CP852 =
206 {
207    &__CP855, 852, CODEPAGE_OEM, &__CP852_ToUnicode, 
208    &__CP852_ToUnicodeGlyph, &__CP852_FromUnicode,
209    &__CPGenInfo
210 };
211
212 /* MS-DOS Cyrillic */
213 CODEPAGE __CP855 =
214 {
215    &__CP857, 855, CODEPAGE_OEM, &__CP855_ToUnicode, 
216    &__CP855_ToUnicodeGlyph, &__CP855_FromUnicode,
217    &__CPGenInfo
218 };
219
220 /* MS-DOS Turkish */
221 CODEPAGE __CP857 =
222 {
223    &__CP860, 857, CODEPAGE_OEM, &__CP857_ToUnicode, 
224    &__CP857_ToUnicodeGlyph, &__CP857_FromUnicode,
225    &__CPGenInfo
226 };
227
228 /* MS-DOS Portugese */
229 CODEPAGE __CP860 =
230 {
231    &__CP861, 860, CODEPAGE_OEM, &__CP860_ToUnicode, 
232    &__CP860_ToUnicodeGlyph, &__CP860_FromUnicode,
233    &__CPGenInfo
234 };
235
236 /* MS-DOS Icelandic */
237 CODEPAGE __CP861 =
238 {
239    &__CP863, 861, CODEPAGE_OEM, &__CP861_ToUnicode, 
240    &__CP861_ToUnicodeGlyph, &__CP861_FromUnicode,
241    &__CPGenInfo
242 };
243
244 /* MS-DOS French Canada */
245 CODEPAGE __CP863 =
246 {
247    &__CP865, 863, CODEPAGE_OEM, &__CP863_ToUnicode, 
248    &__CP863_ToUnicodeGlyph, &__CP863_FromUnicode,
249    &__CPGenInfo
250 };
251
252 /* MS-DOS Nordic */
253 CODEPAGE __CP865 =
254 {
255    &__CP866, 865, CODEPAGE_OEM, &__CP865_ToUnicode, 
256    &__CP865_ToUnicodeGlyph, &__CP865_FromUnicode,
257    &__CPGenInfo
258 };
259
260 /* MS-DOS Cyrillic CIS-1 */
261 CODEPAGE __CP866 =
262 {
263    &__CP869, 866, CODEPAGE_OEM, &__CP866_ToUnicode, 
264    &__CP866_ToUnicodeGlyph, &__CP866_FromUnicode,
265    &__CPGenInfo
266 };
267
268 /* MS-DOS Greek 2 */
269 CODEPAGE __CP869 =
270 {
271    &__CP875, 869, CODEPAGE_OEM, &__CP869_ToUnicode, 
272    &__CP869_ToUnicodeGlyph, &__CP869_FromUnicode,
273    &__CPGenInfo
274 };
275
276 /* EBCDIC codepage */
277 CODEPAGE __CP875 =
278 {
279    &__CP1026, 875, CODEPAGE_EBCDIC, &__CP875_ToUnicode, 
280    &__CP875_ToUnicode, &__CP875_FromUnicode,
281    &__CPGenInfo
282 };
283
284 /* EBCDIC codepage */
285 CODEPAGE __CP1026 =
286 {
287    &__CP1250, 1026, CODEPAGE_EBCDIC, &__CP1026_ToUnicode, 
288    &__CP1026_ToUnicode, &__CP1026_FromUnicode,
289    &__CPGenInfo
290 };
291
292 /* Windows Latin 2 (Central Europe) */
293 CODEPAGE __CP1250 =
294 {
295    &__CP1251, 1250, CODEPAGE_ANSI, &__CP1250_ToUnicode, 
296    &__CP1250_ToUnicode, &__CP1250_FromUnicode,
297    &__CPGenInfo
298 };
299
300 /* Windows Cyrillic */
301 CODEPAGE __CP1251 =
302 {
303    &__CP1252, 1251, CODEPAGE_ANSI, &__CP1251_ToUnicode, 
304    &__CP1251_ToUnicode, &__CP1251_FromUnicode,
305    &__CPGenInfo
306 };
307
308 /* Windows Latin 1 */
309 CODEPAGE __CP1252 =
310 {
311    &__CP1253, 1252, CODEPAGE_ANSI, &__CP1252_ToUnicode, 
312    &__CP1252_ToUnicode, &__CP1252_FromUnicode,
313    &__CPGenInfo
314 };
315
316 /* Windows Greek */
317 CODEPAGE __CP1253 =
318 {
319    &__CP1254, 1253, CODEPAGE_ANSI, &__CP1253_ToUnicode, 
320    &__CP1253_ToUnicode, &__CP1253_FromUnicode,
321    &__CPGenInfo
322 };
323
324 /* Windows Latin 5 (Turkish) */
325 CODEPAGE __CP1254 =
326 {
327   &__CP1255, 1254, CODEPAGE_ANSI, &__CP1254_ToUnicode, 
328    &__CP1254_ToUnicode, &__CP1254_FromUnicode,
329    &__CPGenInfo
330 };
331
332 /* Windows Hebrew */
333 CODEPAGE __CP1255 =
334 {
335    &__CP1256, 1255, CODEPAGE_ANSI, &__CP1255_ToUnicode, 
336    &__CP1255_ToUnicode, &__CP1255_FromUnicode,
337    &__CPGenInfo
338 };
339
340 /* Windows Arabic */
341 CODEPAGE __CP1256 =
342 {
343    &__CP1257, 1256, CODEPAGE_ANSI, &__CP1256_ToUnicode, 
344    &__CP1256_ToUnicode, &__CP1256_FromUnicode,
345    &__CPGenInfo
346 };
347
348 /* Windows Baltic Rim */
349 CODEPAGE __CP1257 =
350 {
351    &__CP10000, 1257, CODEPAGE_ANSI, &__CP1257_ToUnicode, 
352    &__CP1257_ToUnicode, &__CP1257_FromUnicode,
353    &__CPGenInfo
354 };
355
356 /* Macintosh Roman */
357 CODEPAGE __CP10000 =
358 {
359    &__CP10006, 10000, CODEPAGE_MAC, &__CP10000_ToUnicode, 
360    &__CP10000_ToUnicode, &__CP10000_FromUnicode,
361    &__CPGenInfo
362 };
363
364 /* Macintosh Greek 1 */
365 CODEPAGE __CP10006 =
366 {
367    &__CP10007, 10006, CODEPAGE_MAC, &__CP10006_ToUnicode, 
368    &__CP10006_ToUnicode, &__CP10006_FromUnicode,
369    &__CPGenInfo
370 };
371
372 /* Macintosh Cyrillic */
373 CODEPAGE __CP10007 =
374 {
375    &__CP10029, 10007, CODEPAGE_MAC, &__CP10007_ToUnicode, 
376    &__CP10007_ToUnicode, &__CP10007_FromUnicode,
377    &__CPGenInfo
378 };
379
380 /* Macintosh Latin 2 */
381 CODEPAGE __CP10029 =
382 {
383    &__CP10079, 10029, CODEPAGE_MAC, &__CP10029_ToUnicode, 
384    &__CP10029_ToUnicode, &__CP10029_FromUnicode,
385    &__CPGenInfo
386 };
387
388 /* Macintosh Icelandic */
389 CODEPAGE __CP10079 =
390 {
391    &__CP10081, 10079, CODEPAGE_MAC, &__CP10079_ToUnicode, 
392    &__CP10079_ToUnicode, &__CP10079_FromUnicode,
393    &__CPGenInfo
394 };
395
396 /* Macintosh Turkish */
397 CODEPAGE __CP10081 =
398 {
399    NULL, 10081, CODEPAGE_MAC, &__CP10081_ToUnicode, 
400    &__CP10081_ToUnicode, &__CP10081_FromUnicode,
401    &__CPGenInfo
402 };