]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | #include "duktape.h" |
2 | #include "duk_codepage_conv.h" | |
3 | ||
4 | /* http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT */ | |
5 | unsigned int cp1252[256] = { | |
6 | (unsigned int) 0x0000, | |
7 | (unsigned int) 0x0001, | |
8 | (unsigned int) 0x0002, | |
9 | (unsigned int) 0x0003, | |
10 | (unsigned int) 0x0004, | |
11 | (unsigned int) 0x0005, | |
12 | (unsigned int) 0x0006, | |
13 | (unsigned int) 0x0007, | |
14 | (unsigned int) 0x0008, | |
15 | (unsigned int) 0x0009, | |
16 | (unsigned int) 0x000A, | |
17 | (unsigned int) 0x000B, | |
18 | (unsigned int) 0x000C, | |
19 | (unsigned int) 0x000D, | |
20 | (unsigned int) 0x000E, | |
21 | (unsigned int) 0x000F, | |
22 | (unsigned int) 0x0010, | |
23 | (unsigned int) 0x0011, | |
24 | (unsigned int) 0x0012, | |
25 | (unsigned int) 0x0013, | |
26 | (unsigned int) 0x0014, | |
27 | (unsigned int) 0x0015, | |
28 | (unsigned int) 0x0016, | |
29 | (unsigned int) 0x0017, | |
30 | (unsigned int) 0x0018, | |
31 | (unsigned int) 0x0019, | |
32 | (unsigned int) 0x001A, | |
33 | (unsigned int) 0x001B, | |
34 | (unsigned int) 0x001C, | |
35 | (unsigned int) 0x001D, | |
36 | (unsigned int) 0x001E, | |
37 | (unsigned int) 0x001F, | |
38 | (unsigned int) 0x0020, | |
39 | (unsigned int) 0x0021, | |
40 | (unsigned int) 0x0022, | |
41 | (unsigned int) 0x0023, | |
42 | (unsigned int) 0x0024, | |
43 | (unsigned int) 0x0025, | |
44 | (unsigned int) 0x0026, | |
45 | (unsigned int) 0x0027, | |
46 | (unsigned int) 0x0028, | |
47 | (unsigned int) 0x0029, | |
48 | (unsigned int) 0x002A, | |
49 | (unsigned int) 0x002B, | |
50 | (unsigned int) 0x002C, | |
51 | (unsigned int) 0x002D, | |
52 | (unsigned int) 0x002E, | |
53 | (unsigned int) 0x002F, | |
54 | (unsigned int) 0x0030, | |
55 | (unsigned int) 0x0031, | |
56 | (unsigned int) 0x0032, | |
57 | (unsigned int) 0x0033, | |
58 | (unsigned int) 0x0034, | |
59 | (unsigned int) 0x0035, | |
60 | (unsigned int) 0x0036, | |
61 | (unsigned int) 0x0037, | |
62 | (unsigned int) 0x0038, | |
63 | (unsigned int) 0x0039, | |
64 | (unsigned int) 0x003A, | |
65 | (unsigned int) 0x003B, | |
66 | (unsigned int) 0x003C, | |
67 | (unsigned int) 0x003D, | |
68 | (unsigned int) 0x003E, | |
69 | (unsigned int) 0x003F, | |
70 | (unsigned int) 0x0040, | |
71 | (unsigned int) 0x0041, | |
72 | (unsigned int) 0x0042, | |
73 | (unsigned int) 0x0043, | |
74 | (unsigned int) 0x0044, | |
75 | (unsigned int) 0x0045, | |
76 | (unsigned int) 0x0046, | |
77 | (unsigned int) 0x0047, | |
78 | (unsigned int) 0x0048, | |
79 | (unsigned int) 0x0049, | |
80 | (unsigned int) 0x004A, | |
81 | (unsigned int) 0x004B, | |
82 | (unsigned int) 0x004C, | |
83 | (unsigned int) 0x004D, | |
84 | (unsigned int) 0x004E, | |
85 | (unsigned int) 0x004F, | |
86 | (unsigned int) 0x0050, | |
87 | (unsigned int) 0x0051, | |
88 | (unsigned int) 0x0052, | |
89 | (unsigned int) 0x0053, | |
90 | (unsigned int) 0x0054, | |
91 | (unsigned int) 0x0055, | |
92 | (unsigned int) 0x0056, | |
93 | (unsigned int) 0x0057, | |
94 | (unsigned int) 0x0058, | |
95 | (unsigned int) 0x0059, | |
96 | (unsigned int) 0x005A, | |
97 | (unsigned int) 0x005B, | |
98 | (unsigned int) 0x005C, | |
99 | (unsigned int) 0x005D, | |
100 | (unsigned int) 0x005E, | |
101 | (unsigned int) 0x005F, | |
102 | (unsigned int) 0x0060, | |
103 | (unsigned int) 0x0061, | |
104 | (unsigned int) 0x0062, | |
105 | (unsigned int) 0x0063, | |
106 | (unsigned int) 0x0064, | |
107 | (unsigned int) 0x0065, | |
108 | (unsigned int) 0x0066, | |
109 | (unsigned int) 0x0067, | |
110 | (unsigned int) 0x0068, | |
111 | (unsigned int) 0x0069, | |
112 | (unsigned int) 0x006A, | |
113 | (unsigned int) 0x006B, | |
114 | (unsigned int) 0x006C, | |
115 | (unsigned int) 0x006D, | |
116 | (unsigned int) 0x006E, | |
117 | (unsigned int) 0x006F, | |
118 | (unsigned int) 0x0070, | |
119 | (unsigned int) 0x0071, | |
120 | (unsigned int) 0x0072, | |
121 | (unsigned int) 0x0073, | |
122 | (unsigned int) 0x0074, | |
123 | (unsigned int) 0x0075, | |
124 | (unsigned int) 0x0076, | |
125 | (unsigned int) 0x0077, | |
126 | (unsigned int) 0x0078, | |
127 | (unsigned int) 0x0079, | |
128 | (unsigned int) 0x007A, | |
129 | (unsigned int) 0x007B, | |
130 | (unsigned int) 0x007C, | |
131 | (unsigned int) 0x007D, | |
132 | (unsigned int) 0x007E, | |
133 | (unsigned int) 0x007F, | |
134 | (unsigned int) 0x20AC, | |
135 | (unsigned int) 0xFFFD, /* undefined */ | |
136 | (unsigned int) 0x201A, | |
137 | (unsigned int) 0x0192, | |
138 | (unsigned int) 0x201E, | |
139 | (unsigned int) 0x2026, | |
140 | (unsigned int) 0x2020, | |
141 | (unsigned int) 0x2021, | |
142 | (unsigned int) 0x02C6, | |
143 | (unsigned int) 0x2030, | |
144 | (unsigned int) 0x0160, | |
145 | (unsigned int) 0x2039, | |
146 | (unsigned int) 0x0152, | |
147 | (unsigned int) 0xFFFD, /* undefined */ | |
148 | (unsigned int) 0x017D, | |
149 | (unsigned int) 0xFFFD, /* undefined */ | |
150 | (unsigned int) 0xFFFD, /* undefined */ | |
151 | (unsigned int) 0x2018, | |
152 | (unsigned int) 0x2019, | |
153 | (unsigned int) 0x201C, | |
154 | (unsigned int) 0x201D, | |
155 | (unsigned int) 0x2022, | |
156 | (unsigned int) 0x2013, | |
157 | (unsigned int) 0x2014, | |
158 | (unsigned int) 0x02DC, | |
159 | (unsigned int) 0x2122, | |
160 | (unsigned int) 0x0161, | |
161 | (unsigned int) 0x203A, | |
162 | (unsigned int) 0x0153, | |
163 | (unsigned int) 0xFFFD, /* undefined */ | |
164 | (unsigned int) 0x017E, | |
165 | (unsigned int) 0x0178, | |
166 | (unsigned int) 0x00A0, | |
167 | (unsigned int) 0x00A1, | |
168 | (unsigned int) 0x00A2, | |
169 | (unsigned int) 0x00A3, | |
170 | (unsigned int) 0x00A4, | |
171 | (unsigned int) 0x00A5, | |
172 | (unsigned int) 0x00A6, | |
173 | (unsigned int) 0x00A7, | |
174 | (unsigned int) 0x00A8, | |
175 | (unsigned int) 0x00A9, | |
176 | (unsigned int) 0x00AA, | |
177 | (unsigned int) 0x00AB, | |
178 | (unsigned int) 0x00AC, | |
179 | (unsigned int) 0x00AD, | |
180 | (unsigned int) 0x00AE, | |
181 | (unsigned int) 0x00AF, | |
182 | (unsigned int) 0x00B0, | |
183 | (unsigned int) 0x00B1, | |
184 | (unsigned int) 0x00B2, | |
185 | (unsigned int) 0x00B3, | |
186 | (unsigned int) 0x00B4, | |
187 | (unsigned int) 0x00B5, | |
188 | (unsigned int) 0x00B6, | |
189 | (unsigned int) 0x00B7, | |
190 | (unsigned int) 0x00B8, | |
191 | (unsigned int) 0x00B9, | |
192 | (unsigned int) 0x00BA, | |
193 | (unsigned int) 0x00BB, | |
194 | (unsigned int) 0x00BC, | |
195 | (unsigned int) 0x00BD, | |
196 | (unsigned int) 0x00BE, | |
197 | (unsigned int) 0x00BF, | |
198 | (unsigned int) 0x00C0, | |
199 | (unsigned int) 0x00C1, | |
200 | (unsigned int) 0x00C2, | |
201 | (unsigned int) 0x00C3, | |
202 | (unsigned int) 0x00C4, | |
203 | (unsigned int) 0x00C5, | |
204 | (unsigned int) 0x00C6, | |
205 | (unsigned int) 0x00C7, | |
206 | (unsigned int) 0x00C8, | |
207 | (unsigned int) 0x00C9, | |
208 | (unsigned int) 0x00CA, | |
209 | (unsigned int) 0x00CB, | |
210 | (unsigned int) 0x00CC, | |
211 | (unsigned int) 0x00CD, | |
212 | (unsigned int) 0x00CE, | |
213 | (unsigned int) 0x00CF, | |
214 | (unsigned int) 0x00D0, | |
215 | (unsigned int) 0x00D1, | |
216 | (unsigned int) 0x00D2, | |
217 | (unsigned int) 0x00D3, | |
218 | (unsigned int) 0x00D4, | |
219 | (unsigned int) 0x00D5, | |
220 | (unsigned int) 0x00D6, | |
221 | (unsigned int) 0x00D7, | |
222 | (unsigned int) 0x00D8, | |
223 | (unsigned int) 0x00D9, | |
224 | (unsigned int) 0x00DA, | |
225 | (unsigned int) 0x00DB, | |
226 | (unsigned int) 0x00DC, | |
227 | (unsigned int) 0x00DD, | |
228 | (unsigned int) 0x00DE, | |
229 | (unsigned int) 0x00DF, | |
230 | (unsigned int) 0x00E0, | |
231 | (unsigned int) 0x00E1, | |
232 | (unsigned int) 0x00E2, | |
233 | (unsigned int) 0x00E3, | |
234 | (unsigned int) 0x00E4, | |
235 | (unsigned int) 0x00E5, | |
236 | (unsigned int) 0x00E6, | |
237 | (unsigned int) 0x00E7, | |
238 | (unsigned int) 0x00E8, | |
239 | (unsigned int) 0x00E9, | |
240 | (unsigned int) 0x00EA, | |
241 | (unsigned int) 0x00EB, | |
242 | (unsigned int) 0x00EC, | |
243 | (unsigned int) 0x00ED, | |
244 | (unsigned int) 0x00EE, | |
245 | (unsigned int) 0x00EF, | |
246 | (unsigned int) 0x00F0, | |
247 | (unsigned int) 0x00F1, | |
248 | (unsigned int) 0x00F2, | |
249 | (unsigned int) 0x00F3, | |
250 | (unsigned int) 0x00F4, | |
251 | (unsigned int) 0x00F5, | |
252 | (unsigned int) 0x00F6, | |
253 | (unsigned int) 0x00F7, | |
254 | (unsigned int) 0x00F8, | |
255 | (unsigned int) 0x00F9, | |
256 | (unsigned int) 0x00FA, | |
257 | (unsigned int) 0x00FB, | |
258 | (unsigned int) 0x00FC, | |
259 | (unsigned int) 0x00FD, | |
260 | (unsigned int) 0x00FE, | |
261 | (unsigned int) 0x00FF | |
262 | }; | |
263 | ||
264 | /* Exercise all 3 byte lengths: any ASCII character is 1 byte, 0xFC maps to | |
265 | * U+00FC which is 2 bytes, and 0x80 maps to U+20AC which is 3 bytes. | |
266 | */ | |
267 | static const char *example_source = "print('Hello w\xfcrld - \x80');"; | |
268 | ||
269 | /* Example: compile and run test source encoded in Windows codepage 1252. */ | |
270 | int main(int argc, char *argv[]) { | |
271 | duk_context *ctx; | |
272 | ||
273 | (void) argc; (void) argv; | |
274 | ||
275 | ctx = duk_create_heap_default(); | |
276 | if (!ctx) { | |
277 | printf("Failed to create Duktape heap.\n"); | |
278 | return 1; | |
279 | } | |
280 | ||
281 | duk_decode_string_codepage(ctx, example_source, strlen(example_source), cp1252); | |
282 | duk_eval_noresult(ctx); | |
283 | ||
284 | duk_destroy_heap(ctx); | |
285 | return 0; | |
286 | } |