This commit was manufactured by cvs2svn to create branch 'mono-1-0'.
[mono.git] / mcs / class / I18N / Common / Handlers.cs
1 /*
2  * Handlers.cs - Implementation of the "I18N.Common.Handlers" class.
3  *
4  * Copyright (c) 2002  Southern Storm Software, Pty Ltd
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining
7  * a copy of this software and associated documentation files (the "Software"),
8  * to deal in the Software without restriction, including without limitation
9  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10  * and/or sell copies of the Software, and to permit persons to whom the
11  * Software is furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included
14  * in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22  * OTHER DEALINGS IN THE SOFTWARE.
23  */
24
25 namespace I18N.Common
26 {
27
28 using System;
29 using System.Collections;
30
31 // This class provides an internal list of handlers, for runtime
32 // engines that do not implement the altered "GetFile" semantics.
33 // The list must be kept up to date manually.
34
35 public sealed class Handlers
36 {
37     public static readonly String[] List = {
38         "I18N.CJK.CP932",
39         "I18N.CJK.CP936",
40         "I18N.CJK.CP949",
41         "I18N.CJK.CP950",
42         "I18N.CJK.CP51932",
43         "I18N.CJK.ENCbig5",
44         "I18N.CJK.ENCgb2312",
45         "I18N.CJK.ENCshift_jis",
46         "I18N.CJK.ENCeuc_jp",
47         "I18N.CJK.ENCuhc",
48         "I18N.MidEast.CP1254",
49         "I18N.MidEast.ENCwindows_1254",
50         "I18N.MidEast.CP1255",
51         "I18N.MidEast.ENCwindows_1255",
52         "I18N.MidEast.CP1256",
53         "I18N.MidEast.ENCwindows_1256",
54         "I18N.MidEast.CP28596",
55         "I18N.MidEast.ENCiso_8859_6",
56         "I18N.MidEast.CP28598",
57         "I18N.MidEast.ENCiso_8859_8",
58         "I18N.MidEast.CP28599",
59         "I18N.MidEast.ENCiso_8859_9",
60         "I18N.MidEast.CP38598",
61         "I18N.MidEast.ENCwindows_38598",
62         "I18N.Other.CP1251",
63         "I18N.Other.ENCwindows_1251",
64         "I18N.Other.CP1257",
65         "I18N.Other.ENCwindows_1257",
66         "I18N.Other.CP1258",
67         "I18N.Other.ENCwindows_1258",
68         "I18N.Other.CP20866",
69         "I18N.Other.ENCkoi8_r",
70         "I18N.Other.CP21866",
71         "I18N.Other.ENCkoi8_u",
72         "I18N.Other.CP28594",
73         "I18N.Other.ENCiso_8859_4",
74         "I18N.Other.CP28595",
75         "I18N.Other.ENCiso_8859_5",
76         "I18N.Other.ISCIIEncoding",
77         "I18N.Other.CP57002",
78         "I18N.Other.CP57003",
79         "I18N.Other.CP57004",
80         "I18N.Other.CP57005",
81         "I18N.Other.CP57006",
82         "I18N.Other.CP57007",
83         "I18N.Other.CP57008",
84         "I18N.Other.CP57009",
85         "I18N.Other.CP57010",
86         "I18N.Other.CP57011",
87         "I18N.Other.ENCx_iscii_de",
88         "I18N.Other.ENCx_iscii_be",
89         "I18N.Other.ENCx_iscii_ta",
90         "I18N.Other.ENCx_iscii_te",
91         "I18N.Other.ENCx_iscii_as",
92         "I18N.Other.ENCx_iscii_or",
93         "I18N.Other.ENCx_iscii_ka",
94         "I18N.Other.ENCx_iscii_ma",
95         "I18N.Other.ENCx_iscii_gu",
96         "I18N.Other.ENCx_iscii_pa",
97         "I18N.Other.CP874",
98         "I18N.Other.ENCwindows_874",
99         "I18N.Rare.CP1026",
100         "I18N.Rare.ENCibm1026",
101         "I18N.Rare.CP1047",
102         "I18N.Rare.ENCibm1047",
103         "I18N.Rare.CP1140",
104         "I18N.Rare.ENCibm01140",
105         "I18N.Rare.CP1141",
106         "I18N.Rare.ENCibm01141",
107         "I18N.Rare.CP1142",
108         "I18N.Rare.ENCibm01142",
109         "I18N.Rare.CP1143",
110         "I18N.Rare.ENCibm01143",
111         "I18N.Rare.CP1144",
112         "I18N.Rare.ENCibm1144",
113         "I18N.Rare.CP1145",
114         "I18N.Rare.ENCibm1145",
115         "I18N.Rare.CP1146",
116         "I18N.Rare.ENCibm1146",
117         "I18N.Rare.CP1147",
118         "I18N.Rare.ENCibm1147",
119         "I18N.Rare.CP1148",
120         "I18N.Rare.ENCibm1148",
121         "I18N.Rare.CP1149",
122         "I18N.Rare.ENCibm1149",
123         "I18N.Rare.CP20273",
124         "I18N.Rare.ENCibm273",
125         "I18N.Rare.CP20277",
126         "I18N.Rare.ENCibm277",
127         "I18N.Rare.CP20278",
128         "I18N.Rare.ENCibm278",
129         "I18N.Rare.CP20280",
130         "I18N.Rare.ENCibm280",
131         "I18N.Rare.CP20284",
132         "I18N.Rare.ENCibm284",
133         "I18N.Rare.CP20285",
134         "I18N.Rare.ENCibm285",
135         "I18N.Rare.CP20290",
136         "I18N.Rare.ENCibm290",
137         "I18N.Rare.CP20297",
138         "I18N.Rare.ENCibm297",
139         "I18N.Rare.CP20420",
140         "I18N.Rare.ENCibm420",
141         "I18N.Rare.CP20424",
142         "I18N.Rare.ENCibm424",
143         "I18N.Rare.CP20871",
144         "I18N.Rare.ENCibm871",
145         "I18N.Rare.CP21025",
146         "I18N.Rare.ENCibm1025",
147         "I18N.Rare.CP37",
148         "I18N.Rare.ENCibm037",
149         "I18N.Rare.CP500",
150         "I18N.Rare.ENCibm500",
151         "I18N.Rare.CP708",
152         "I18N.Rare.ENCasmo_708",
153         "I18N.Rare.CP852",
154         "I18N.Rare.ENCibm852",
155         "I18N.Rare.CP855",
156         "I18N.Rare.ENCibm855",
157         "I18N.Rare.CP857",
158         "I18N.Rare.ENCibm857",
159         "I18N.Rare.CP858",
160         "I18N.Rare.ENCibm00858",
161         "I18N.Rare.CP862",
162         "I18N.Rare.ENCibm862",
163         "I18N.Rare.CP864",
164         "I18N.Rare.ENCibm864",
165         "I18N.Rare.CP866",
166         "I18N.Rare.ENCibm866",
167         "I18N.Rare.CP869",
168         "I18N.Rare.ENCibm869",
169         "I18N.Rare.CP870",
170         "I18N.Rare.ENCibm870",
171         "I18N.Rare.CP875",
172         "I18N.Rare.ENCibm875",
173         "I18N.West.CP10000",
174         "I18N.West.ENCmacintosh",
175         "I18N.West.CP10079",
176         "I18N.West.ENCx_mac_icelandic",
177         "I18N.West.CP1250",
178         "I18N.West.ENCwindows_1250",
179         "I18N.West.CP1252",
180         "I18N.West.ENCwindows_1252",
181         "I18N.West.CP1253",
182         "I18N.West.ENCwindows_1253",
183         "I18N.West.CP28592",
184         "I18N.West.ENCiso_8859_2",
185         "I18N.West.CP28593",
186         "I18N.West.ENCiso_8859_3",
187         "I18N.West.CP28597",
188         "I18N.West.ENCiso_8859_7",
189         "I18N.West.CP28605",
190         "I18N.West.ENCiso_8859_15",
191         "I18N.West.CP437",
192         "I18N.West.ENCibm437",
193         "I18N.West.CP850",
194         "I18N.West.ENCibm850",
195         "I18N.West.CP860",
196         "I18N.West.ENCibm860",
197         "I18N.West.CP861",
198         "I18N.West.ENCibm861",
199         "I18N.West.CP863",
200         "I18N.West.ENCibm863",
201         "I18N.West.CP865",
202         "I18N.West.ENCibm865"
203     };
204         
205         static Hashtable aliases;
206         public static string GetAlias (string name)
207         {
208                 if (aliases == null)
209                         BuildHash ();
210
211                 return aliases [name] as string;
212         }
213
214         static void BuildHash ()
215         {
216                 aliases = new Hashtable (new CaseInsensitiveHashCodeProvider (),
217                                          new CaseInsensitiveComparer ());
218
219                 aliases.Add ("arabic", "iso_8859_6");
220                 aliases.Add ("csISOLatinArabic", "iso_8859_6");
221                 aliases.Add ("ECMA_114", "iso_8859_6");
222                 aliases.Add ("ISO_8859_6:1987", "iso_8859_6");
223                 aliases.Add ("iso_ir_127", "iso_8859_6");
224
225                 aliases.Add ("cp1256" ,"windows_1256");
226
227                 aliases.Add ("csISOLatin4", "iso_8859_4");
228                 aliases.Add ("ISO_8859_4:1988", "iso_8859_4");
229                 aliases.Add ("iso_ir_110", "iso_8859_4");
230                 aliases.Add ("l4", "iso_8859_4");
231                 aliases.Add ("latin4", "iso_8859_4");
232
233                 aliases.Add ("cp852" ,"ibm852");
234
235                 aliases.Add ("csISOLatin2", "iso_8859_2");
236                 aliases.Add ("iso_8859_2:1987", "iso_8859_2");
237                 aliases.Add ("iso8859_2", "iso_8859_2");
238                 aliases.Add ("iso_ir_101", "iso_8859_2");
239                 aliases.Add ("l2", "iso_8859_2");
240                 aliases.Add ("latin2", "iso_8859_2");
241
242                 aliases.Add ("x-cp1250", "windows_1250");
243
244                 aliases.Add ("chinese", "gb2312");
245                 aliases.Add ("CN-GB", "gb2312");
246                 aliases.Add ("csGB2312", "gb2312");
247                 aliases.Add ("csGB231280", "gb2312");
248                 aliases.Add ("csISO58GB231280", "gb2312");
249                 aliases.Add ("GB_2312_80", "gb2312");
250                 aliases.Add ("GB231280", "gb2312");
251                 aliases.Add ("GB2312_80", "gb2312");
252                 aliases.Add ("GBK", "gb2312");
253                 aliases.Add ("iso_ir_58", "gb2312");
254
255                 aliases.Add ("cn-big5", "big5");
256                 aliases.Add ("csbig5", "big5");
257                 aliases.Add ("x-x-big5", "big5");
258
259                 aliases.Add ("cp866", "ibm866");
260
261                 aliases.Add ("csISOLatin5", "iso_8859_5");
262                 aliases.Add ("csISOLatinCyrillic", "iso_8859_5");
263                 aliases.Add ("cyrillic", "iso_8859_5");
264                 aliases.Add ("ISO_8859_5:1988", "iso_8859_5");
265                 aliases.Add ("iso_ir_144", "iso_8859_5");
266                 aliases.Add ("l5", "iso_8859_5");
267
268                 aliases.Add ("csKOI8R", "koi8_r");
269                 aliases.Add ("koi", "koi8_r");
270                 aliases.Add ("koi8", "koi8_r");
271                 aliases.Add ("koi8r", "koi8_r");
272
273                 aliases.Add ("koi8ru", "koi8_u");
274
275                 aliases.Add ("x-cp1251", "windows_1251");
276
277                 aliases.Add ("csISOLatinGreek", "iso_8859_7");
278                 aliases.Add ("ECMA_118", "iso_8859_7");
279                 aliases.Add ("ELOT_928", "iso_8859_7");
280                 aliases.Add ("greek", "iso_8859_7");
281                 aliases.Add ("greek8", "iso_8859_7");
282                 aliases.Add ("ISO_8859_7:1987", "iso_8859_7");
283                 aliases.Add ("iso_ir_126", "iso_8859_7");
284
285                 aliases.Add ("csISOLatinHebrew", "iso_8859_8");
286                 aliases.Add ("hebrew", "iso_8859_8");
287                 aliases.Add ("ISO_8859_8:1988", "iso_8859_8");
288                 aliases.Add ("iso_ir_138", "iso_8859_8");
289
290                 aliases.Add ("csShiftJIS", "shift_jis");
291                 aliases.Add ("csWindows31J", "shift_jis");
292                 aliases.Add ("ms_Kanji", "shift_jis");
293                 aliases.Add ("shift-jis", "shift_jis");
294                 aliases.Add ("x-ms-cp932", "shift_jis");
295                 aliases.Add ("x-sjis", "shift_jis");
296
297                 aliases.Add ("csISOLatin3", "iso_8859_3");
298                 aliases.Add ("ISO_8859_3:1988", "iso_8859_3");
299                 aliases.Add ("iso_ir_109", "iso_8859_3");
300                 aliases.Add ("l3", "iso_8859_3");
301                 aliases.Add ("latin3", "iso_8859_3");
302
303                 aliases.Add ("csISOLatin9", "iso_8859_15");
304                 aliases.Add ("l9", "iso_8859_15");
305                 aliases.Add ("latin9", "iso_8859_15");
306
307                 aliases.Add ("cp437", "ibm437");
308                 aliases.Add ("csPC8", "ibm437");
309                 aliases.Add ("CodePage437", "ibm437");
310
311                 aliases.Add ("DOS_874", "windows_874");
312                 aliases.Add ("iso_8859_11", "windows_874");
313                 aliases.Add ("TIS_620", "windows_874");
314         }
315
316         
317 }; // class Handlers
318
319 }; // namespace I18N.Common