xref: /php-src/ext/dom/lexbor/lexbor/encoding/decode.h (revision f0934090)
1 /*
2  * Copyright (C) 2019 Alexander Borisov
3  *
4  * Author: Alexander Borisov <borisov@lexbor.com>
5  */
6 
7 #ifndef LEXBOR_ENCODING_DECODE_H
8 #define LEXBOR_ENCODING_DECODE_H
9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 
15 #include "lexbor/encoding/base.h"
16 
17 
18 LXB_API lxb_status_t
19 lxb_encoding_decode_default(lxb_encoding_decode_t *ctx,
20                             const lxb_char_t **data, const lxb_char_t *end);
21 
22 LXB_API lxb_status_t
23 lxb_encoding_decode_auto(lxb_encoding_decode_t *ctx,
24                          const lxb_char_t **data, const lxb_char_t *end);
25 
26 LXB_API lxb_status_t
27 lxb_encoding_decode_undefined(lxb_encoding_decode_t *ctx,
28                               const lxb_char_t **data, const lxb_char_t *end);
29 
30 LXB_API lxb_status_t
31 lxb_encoding_decode_big5(lxb_encoding_decode_t *ctx,
32                          const lxb_char_t **data, const lxb_char_t *end);
33 
34 LXB_API lxb_status_t
35 lxb_encoding_decode_euc_jp(lxb_encoding_decode_t *ctx,
36                            const lxb_char_t **data, const lxb_char_t *end);
37 
38 LXB_API lxb_status_t
39 lxb_encoding_decode_euc_kr(lxb_encoding_decode_t *ctx,
40                            const lxb_char_t **data, const lxb_char_t *end);
41 
42 LXB_API lxb_status_t
43 lxb_encoding_decode_gbk(lxb_encoding_decode_t *ctx,
44                         const lxb_char_t **data, const lxb_char_t *end);
45 
46 LXB_API lxb_status_t
47 lxb_encoding_decode_ibm866(lxb_encoding_decode_t *ctx,
48                            const lxb_char_t **data, const lxb_char_t *end);
49 
50 LXB_API lxb_status_t
51 lxb_encoding_decode_iso_2022_jp(lxb_encoding_decode_t *ctx,
52                                 const lxb_char_t **data, const lxb_char_t *end);
53 
54 LXB_API lxb_status_t
55 lxb_encoding_decode_iso_8859_10(lxb_encoding_decode_t *ctx,
56                                 const lxb_char_t **data, const lxb_char_t *end);
57 
58 LXB_API lxb_status_t
59 lxb_encoding_decode_iso_8859_13(lxb_encoding_decode_t *ctx,
60                                 const lxb_char_t **data, const lxb_char_t *end);
61 
62 LXB_API lxb_status_t
63 lxb_encoding_decode_iso_8859_14(lxb_encoding_decode_t *ctx,
64                                 const lxb_char_t **data, const lxb_char_t *end);
65 
66 LXB_API lxb_status_t
67 lxb_encoding_decode_iso_8859_15(lxb_encoding_decode_t *ctx,
68                                 const lxb_char_t **data, const lxb_char_t *end);
69 
70 LXB_API lxb_status_t
71 lxb_encoding_decode_iso_8859_16(lxb_encoding_decode_t *ctx,
72                                 const lxb_char_t **data, const lxb_char_t *end);
73 
74 LXB_API lxb_status_t
75 lxb_encoding_decode_iso_8859_2(lxb_encoding_decode_t *ctx,
76                                const lxb_char_t **data, const lxb_char_t *end);
77 
78 LXB_API lxb_status_t
79 lxb_encoding_decode_iso_8859_3(lxb_encoding_decode_t *ctx,
80                                const lxb_char_t **data, const lxb_char_t *end);
81 
82 LXB_API lxb_status_t
83 lxb_encoding_decode_iso_8859_4(lxb_encoding_decode_t *ctx,
84                                const lxb_char_t **data, const lxb_char_t *end);
85 
86 LXB_API lxb_status_t
87 lxb_encoding_decode_iso_8859_5(lxb_encoding_decode_t *ctx,
88                                const lxb_char_t **data, const lxb_char_t *end);
89 
90 LXB_API lxb_status_t
91 lxb_encoding_decode_iso_8859_6(lxb_encoding_decode_t *ctx,
92                                const lxb_char_t **data, const lxb_char_t *end);
93 
94 LXB_API lxb_status_t
95 lxb_encoding_decode_iso_8859_7(lxb_encoding_decode_t *ctx,
96                                const lxb_char_t **data, const lxb_char_t *end);
97 
98 LXB_API lxb_status_t
99 lxb_encoding_decode_iso_8859_8(lxb_encoding_decode_t *ctx,
100                                const lxb_char_t **data, const lxb_char_t *end);
101 
102 LXB_API lxb_status_t
103 lxb_encoding_decode_iso_8859_8_i(lxb_encoding_decode_t *ctx,
104                                  const lxb_char_t **data, const lxb_char_t *end);
105 
106 LXB_API lxb_status_t
107 lxb_encoding_decode_koi8_r(lxb_encoding_decode_t *ctx,
108                            const lxb_char_t **data, const lxb_char_t *end);
109 
110 LXB_API lxb_status_t
111 lxb_encoding_decode_koi8_u(lxb_encoding_decode_t *ctx,
112                            const lxb_char_t **data, const lxb_char_t *end);
113 
114 LXB_API lxb_status_t
115 lxb_encoding_decode_shift_jis(lxb_encoding_decode_t *ctx,
116                               const lxb_char_t **data, const lxb_char_t *end);
117 
118 LXB_API lxb_status_t
119 lxb_encoding_decode_utf_16be(lxb_encoding_decode_t *ctx,
120                              const lxb_char_t **data, const lxb_char_t *end);
121 
122 LXB_API lxb_status_t
123 lxb_encoding_decode_utf_16le(lxb_encoding_decode_t *ctx,
124                              const lxb_char_t **data, const lxb_char_t *end);
125 
126 LXB_API lxb_status_t
127 lxb_encoding_decode_utf_8(lxb_encoding_decode_t *ctx,
128                           const lxb_char_t **data, const lxb_char_t *end);
129 
130 LXB_API lxb_status_t
131 lxb_encoding_decode_gb18030(lxb_encoding_decode_t *ctx,
132                             const lxb_char_t **data, const lxb_char_t *end);
133 
134 LXB_API lxb_status_t
135 lxb_encoding_decode_macintosh(lxb_encoding_decode_t *ctx,
136                               const lxb_char_t **data, const lxb_char_t *end);
137 
138 LXB_API lxb_status_t
139 lxb_encoding_decode_replacement(lxb_encoding_decode_t *ctx,
140                                 const lxb_char_t **data, const lxb_char_t *end);
141 
142 LXB_API lxb_status_t
143 lxb_encoding_decode_windows_1250(lxb_encoding_decode_t *ctx,
144                                  const lxb_char_t **data, const lxb_char_t *end);
145 
146 LXB_API lxb_status_t
147 lxb_encoding_decode_windows_1251(lxb_encoding_decode_t *ctx,
148                                  const lxb_char_t **data, const lxb_char_t *end);
149 
150 LXB_API lxb_status_t
151 lxb_encoding_decode_windows_1252(lxb_encoding_decode_t *ctx,
152                                  const lxb_char_t **data, const lxb_char_t *end);
153 
154 LXB_API lxb_status_t
155 lxb_encoding_decode_windows_1253(lxb_encoding_decode_t *ctx,
156                                  const lxb_char_t **data, const lxb_char_t *end);
157 
158 LXB_API lxb_status_t
159 lxb_encoding_decode_windows_1254(lxb_encoding_decode_t *ctx,
160                                  const lxb_char_t **data, const lxb_char_t *end);
161 
162 LXB_API lxb_status_t
163 lxb_encoding_decode_windows_1255(lxb_encoding_decode_t *ctx,
164                                  const lxb_char_t **data, const lxb_char_t *end);
165 
166 LXB_API lxb_status_t
167 lxb_encoding_decode_windows_1256(lxb_encoding_decode_t *ctx,
168                                  const lxb_char_t **data, const lxb_char_t *end);
169 
170 LXB_API lxb_status_t
171 lxb_encoding_decode_windows_1257(lxb_encoding_decode_t *ctx,
172                                  const lxb_char_t **data, const lxb_char_t *end);
173 
174 LXB_API lxb_status_t
175 lxb_encoding_decode_windows_1258(lxb_encoding_decode_t *ctx,
176                                  const lxb_char_t **data, const lxb_char_t *end);
177 
178 LXB_API lxb_status_t
179 lxb_encoding_decode_windows_874(lxb_encoding_decode_t *ctx,
180                                 const lxb_char_t **data, const lxb_char_t *end);
181 
182 LXB_API lxb_status_t
183 lxb_encoding_decode_x_mac_cyrillic(lxb_encoding_decode_t *ctx,
184                                    const lxb_char_t **data, const lxb_char_t *end);
185 
186 LXB_API lxb_status_t
187 lxb_encoding_decode_x_user_defined(lxb_encoding_decode_t *ctx,
188                                    const lxb_char_t **data, const lxb_char_t *end);
189 
190 /*
191  * Single
192  */
193 LXB_API lxb_codepoint_t
194 lxb_encoding_decode_default_single(lxb_encoding_decode_t *ctx,
195                                 const lxb_char_t **data, const lxb_char_t *end);
196 
197 LXB_API lxb_codepoint_t
198 lxb_encoding_decode_auto_single(lxb_encoding_decode_t *ctx,
199                                 const lxb_char_t **data, const lxb_char_t *end);
200 
201 LXB_API lxb_codepoint_t
202 lxb_encoding_decode_undefined_single(lxb_encoding_decode_t *ctx,
203                                 const lxb_char_t **data, const lxb_char_t *end);
204 
205 LXB_API lxb_codepoint_t
206 lxb_encoding_decode_big5_single(lxb_encoding_decode_t *ctx,
207                                 const lxb_char_t **data, const lxb_char_t *end);
208 
209 LXB_API lxb_codepoint_t
210 lxb_encoding_decode_euc_jp_single(lxb_encoding_decode_t *ctx,
211                                 const lxb_char_t **data, const lxb_char_t *end);
212 
213 LXB_API lxb_codepoint_t
214 lxb_encoding_decode_euc_kr_single(lxb_encoding_decode_t *ctx,
215                                 const lxb_char_t **data, const lxb_char_t *end);
216 
217 LXB_API lxb_codepoint_t
218 lxb_encoding_decode_gbk_single(lxb_encoding_decode_t *ctx,
219                                const lxb_char_t **data, const lxb_char_t *end);
220 
221 LXB_API lxb_codepoint_t
222 lxb_encoding_decode_ibm866_single(lxb_encoding_decode_t *ctx,
223                                 const lxb_char_t **data, const lxb_char_t *end);
224 
225 LXB_API lxb_codepoint_t
226 lxb_encoding_decode_iso_2022_jp_single(lxb_encoding_decode_t *ctx,
227                                 const lxb_char_t **data, const lxb_char_t *end);
228 
229 LXB_API lxb_codepoint_t
230 lxb_encoding_decode_iso_8859_10_single(lxb_encoding_decode_t *ctx,
231                                 const lxb_char_t **data, const lxb_char_t *end);
232 
233 LXB_API lxb_codepoint_t
234 lxb_encoding_decode_iso_8859_13_single(lxb_encoding_decode_t *ctx,
235                                 const lxb_char_t **data, const lxb_char_t *end);
236 
237 LXB_API lxb_codepoint_t
238 lxb_encoding_decode_iso_8859_14_single(lxb_encoding_decode_t *ctx,
239                                 const lxb_char_t **data, const lxb_char_t *end);
240 
241 LXB_API lxb_codepoint_t
242 lxb_encoding_decode_iso_8859_15_single(lxb_encoding_decode_t *ctx,
243                                 const lxb_char_t **data, const lxb_char_t *end);
244 
245 LXB_API lxb_codepoint_t
246 lxb_encoding_decode_iso_8859_16_single(lxb_encoding_decode_t *ctx,
247                                 const lxb_char_t **data, const lxb_char_t *end);
248 
249 LXB_API lxb_codepoint_t
250 lxb_encoding_decode_iso_8859_2_single(lxb_encoding_decode_t *ctx,
251                                 const lxb_char_t **data, const lxb_char_t *end);
252 
253 LXB_API lxb_codepoint_t
254 lxb_encoding_decode_iso_8859_3_single(lxb_encoding_decode_t *ctx,
255                                 const lxb_char_t **data, const lxb_char_t *end);
256 
257 LXB_API lxb_codepoint_t
258 lxb_encoding_decode_iso_8859_4_single(lxb_encoding_decode_t *ctx,
259                                 const lxb_char_t **data, const lxb_char_t *end);
260 
261 LXB_API lxb_codepoint_t
262 lxb_encoding_decode_iso_8859_5_single(lxb_encoding_decode_t *ctx,
263                                 const lxb_char_t **data, const lxb_char_t *end);
264 
265 LXB_API lxb_codepoint_t
266 lxb_encoding_decode_iso_8859_6_single(lxb_encoding_decode_t *ctx,
267                                 const lxb_char_t **data, const lxb_char_t *end);
268 
269 LXB_API lxb_codepoint_t
270 lxb_encoding_decode_iso_8859_7_single(lxb_encoding_decode_t *ctx,
271                                 const lxb_char_t **data, const lxb_char_t *end);
272 
273 LXB_API lxb_codepoint_t
274 lxb_encoding_decode_iso_8859_8_single(lxb_encoding_decode_t *ctx,
275                                 const lxb_char_t **data, const lxb_char_t *end);
276 
277 LXB_API lxb_codepoint_t
278 lxb_encoding_decode_iso_8859_8_i_single(lxb_encoding_decode_t *ctx,
279                                 const lxb_char_t **data, const lxb_char_t *end);
280 
281 LXB_API lxb_codepoint_t
282 lxb_encoding_decode_koi8_r_single(lxb_encoding_decode_t *ctx,
283                                 const lxb_char_t **data, const lxb_char_t *end);
284 
285 LXB_API lxb_codepoint_t
286 lxb_encoding_decode_koi8_u_single(lxb_encoding_decode_t *ctx,
287                                 const lxb_char_t **data, const lxb_char_t *end);
288 
289 LXB_API lxb_codepoint_t
290 lxb_encoding_decode_shift_jis_single(lxb_encoding_decode_t *ctx,
291                                 const lxb_char_t **data, const lxb_char_t *end);
292 
293 LXB_API lxb_codepoint_t
294 lxb_encoding_decode_utf_16be_single(lxb_encoding_decode_t *ctx,
295                                 const lxb_char_t **data, const lxb_char_t *end);
296 
297 LXB_API lxb_codepoint_t
298 lxb_encoding_decode_utf_16le_single(lxb_encoding_decode_t *ctx,
299                                 const lxb_char_t **data, const lxb_char_t *end);
300 
301 LXB_API lxb_codepoint_t
302 lxb_encoding_decode_utf_8_single(lxb_encoding_decode_t *ctx,
303                                 const lxb_char_t **data, const lxb_char_t *end);
304 
305 LXB_API lxb_codepoint_t
306 lxb_encoding_decode_valid_utf_8_single(const lxb_char_t **data,
307                                        const lxb_char_t *end);
308 
309 LXB_API uint8_t
310 lxb_encoding_decode_utf_8_length(lxb_char_t data);
311 
312 LXB_API lxb_codepoint_t
313 lxb_encoding_decode_gb18030_single(lxb_encoding_decode_t *ctx,
314                                 const lxb_char_t **data, const lxb_char_t *end);
315 
316 LXB_API lxb_codepoint_t
317 lxb_encoding_decode_macintosh_single(lxb_encoding_decode_t *ctx,
318                                 const lxb_char_t **data, const lxb_char_t *end);
319 
320 LXB_API lxb_codepoint_t
321 lxb_encoding_decode_replacement_single(lxb_encoding_decode_t *ctx,
322                                 const lxb_char_t **data, const lxb_char_t *end);
323 
324 LXB_API lxb_codepoint_t
325 lxb_encoding_decode_windows_1250_single(lxb_encoding_decode_t *ctx,
326                                 const lxb_char_t **data, const lxb_char_t *end);
327 
328 LXB_API lxb_codepoint_t
329 lxb_encoding_decode_windows_1251_single(lxb_encoding_decode_t *ctx,
330                                 const lxb_char_t **data, const lxb_char_t *end);
331 
332 LXB_API lxb_codepoint_t
333 lxb_encoding_decode_windows_1252_single(lxb_encoding_decode_t *ctx,
334                                 const lxb_char_t **data, const lxb_char_t *end);
335 
336 LXB_API lxb_codepoint_t
337 lxb_encoding_decode_windows_1253_single(lxb_encoding_decode_t *ctx,
338                                 const lxb_char_t **data, const lxb_char_t *end);
339 
340 LXB_API lxb_codepoint_t
341 lxb_encoding_decode_windows_1254_single(lxb_encoding_decode_t *ctx,
342                                 const lxb_char_t **data, const lxb_char_t *end);
343 
344 LXB_API lxb_codepoint_t
345 lxb_encoding_decode_windows_1255_single(lxb_encoding_decode_t *ctx,
346                                 const lxb_char_t **data, const lxb_char_t *end);
347 
348 LXB_API lxb_codepoint_t
349 lxb_encoding_decode_windows_1256_single(lxb_encoding_decode_t *ctx,
350                                 const lxb_char_t **data, const lxb_char_t *end);
351 
352 LXB_API lxb_codepoint_t
353 lxb_encoding_decode_windows_1257_single(lxb_encoding_decode_t *ctx,
354                                 const lxb_char_t **data, const lxb_char_t *end);
355 
356 LXB_API lxb_codepoint_t
357 lxb_encoding_decode_windows_1258_single(lxb_encoding_decode_t *ctx,
358                                 const lxb_char_t **data, const lxb_char_t *end);
359 
360 LXB_API lxb_codepoint_t
361 lxb_encoding_decode_windows_874_single(lxb_encoding_decode_t *ctx,
362                                 const lxb_char_t **data, const lxb_char_t *end);
363 
364 LXB_API lxb_codepoint_t
365 lxb_encoding_decode_x_mac_cyrillic_single(lxb_encoding_decode_t *ctx,
366                                 const lxb_char_t **data, const lxb_char_t *end);
367 
368 LXB_API lxb_codepoint_t
369 lxb_encoding_decode_x_user_defined_single(lxb_encoding_decode_t *ctx,
370                                 const lxb_char_t **data, const lxb_char_t *end);
371 
372 
373 #ifdef __cplusplus
374 } /* extern "C" */
375 #endif
376 
377 #endif /* LEXBOR_ENCODING_DECODE_H */
378