1 /* 2 * Copyright (C) 2019 Alexander Borisov 3 * 4 * Author: Alexander Borisov <borisov@lexbor.com> 5 */ 6 7 #ifndef LEXBOR_ENCODING_ENCODE_H 8 #define LEXBOR_ENCODING_ENCODE_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_encode_default(lxb_encoding_encode_t *ctx,const lxb_codepoint_t **cp, 20 const lxb_codepoint_t *end); 21 22 LXB_API lxb_status_t 23 lxb_encoding_encode_auto(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 24 const lxb_codepoint_t *end); 25 26 LXB_API lxb_status_t 27 lxb_encoding_encode_undefined(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 28 const lxb_codepoint_t *end); 29 30 LXB_API lxb_status_t 31 lxb_encoding_encode_big5(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 32 const lxb_codepoint_t *end); 33 34 LXB_API lxb_status_t 35 lxb_encoding_encode_euc_jp(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 36 const lxb_codepoint_t *end); 37 38 LXB_API lxb_status_t 39 lxb_encoding_encode_euc_kr(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 40 const lxb_codepoint_t *end); 41 42 LXB_API lxb_status_t 43 lxb_encoding_encode_gbk(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 44 const lxb_codepoint_t *end); 45 46 LXB_API lxb_status_t 47 lxb_encoding_encode_ibm866(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 48 const lxb_codepoint_t *end); 49 50 LXB_API lxb_status_t 51 lxb_encoding_encode_iso_2022_jp(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 52 const lxb_codepoint_t *end); 53 54 LXB_API lxb_status_t 55 lxb_encoding_encode_iso_2022_jp_eof(lxb_encoding_encode_t *ctx); 56 57 LXB_API lxb_status_t 58 lxb_encoding_encode_iso_8859_10(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 59 const lxb_codepoint_t *end); 60 61 LXB_API lxb_status_t 62 lxb_encoding_encode_iso_8859_13(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 63 const lxb_codepoint_t *end); 64 65 LXB_API lxb_status_t 66 lxb_encoding_encode_iso_8859_14(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 67 const lxb_codepoint_t *end); 68 69 LXB_API lxb_status_t 70 lxb_encoding_encode_iso_8859_15(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 71 const lxb_codepoint_t *end); 72 73 LXB_API lxb_status_t 74 lxb_encoding_encode_iso_8859_16(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 75 const lxb_codepoint_t *end); 76 77 LXB_API lxb_status_t 78 lxb_encoding_encode_iso_8859_2(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 79 const lxb_codepoint_t *end); 80 81 LXB_API lxb_status_t 82 lxb_encoding_encode_iso_8859_3(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 83 const lxb_codepoint_t *end); 84 85 LXB_API lxb_status_t 86 lxb_encoding_encode_iso_8859_4(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 87 const lxb_codepoint_t *end); 88 89 LXB_API lxb_status_t 90 lxb_encoding_encode_iso_8859_5(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 91 const lxb_codepoint_t *end); 92 93 LXB_API lxb_status_t 94 lxb_encoding_encode_iso_8859_6(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 95 const lxb_codepoint_t *end); 96 97 LXB_API lxb_status_t 98 lxb_encoding_encode_iso_8859_7(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 99 const lxb_codepoint_t *end); 100 101 LXB_API lxb_status_t 102 lxb_encoding_encode_iso_8859_8(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 103 const lxb_codepoint_t *end); 104 105 LXB_API lxb_status_t 106 lxb_encoding_encode_iso_8859_8_i(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 107 const lxb_codepoint_t *end); 108 109 LXB_API lxb_status_t 110 lxb_encoding_encode_koi8_r(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 111 const lxb_codepoint_t *end); 112 113 LXB_API lxb_status_t 114 lxb_encoding_encode_koi8_u(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 115 const lxb_codepoint_t *end); 116 117 LXB_API lxb_status_t 118 lxb_encoding_encode_shift_jis(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 119 const lxb_codepoint_t *end); 120 121 LXB_API lxb_status_t 122 lxb_encoding_encode_utf_16be(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 123 const lxb_codepoint_t *end); 124 125 LXB_API lxb_status_t 126 lxb_encoding_encode_utf_16le(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 127 const lxb_codepoint_t *end); 128 129 LXB_API lxb_status_t 130 lxb_encoding_encode_utf_8(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 131 const lxb_codepoint_t *end); 132 133 LXB_API lxb_status_t 134 lxb_encoding_encode_gb18030(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 135 const lxb_codepoint_t *end); 136 137 LXB_API lxb_status_t 138 lxb_encoding_encode_macintosh(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 139 const lxb_codepoint_t *end); 140 141 LXB_API lxb_status_t 142 lxb_encoding_encode_replacement(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 143 const lxb_codepoint_t *end); 144 145 LXB_API lxb_status_t 146 lxb_encoding_encode_windows_1250(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 147 const lxb_codepoint_t *end); 148 149 LXB_API lxb_status_t 150 lxb_encoding_encode_windows_1251(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 151 const lxb_codepoint_t *end); 152 153 LXB_API lxb_status_t 154 lxb_encoding_encode_windows_1252(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 155 const lxb_codepoint_t *end); 156 157 LXB_API lxb_status_t 158 lxb_encoding_encode_windows_1253(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 159 const lxb_codepoint_t *end); 160 161 LXB_API lxb_status_t 162 lxb_encoding_encode_windows_1254(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 163 const lxb_codepoint_t *end); 164 165 LXB_API lxb_status_t 166 lxb_encoding_encode_windows_1255(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 167 const lxb_codepoint_t *end); 168 169 LXB_API lxb_status_t 170 lxb_encoding_encode_windows_1256(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 171 const lxb_codepoint_t *end); 172 173 LXB_API lxb_status_t 174 lxb_encoding_encode_windows_1257(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 175 const lxb_codepoint_t *end); 176 177 LXB_API lxb_status_t 178 lxb_encoding_encode_windows_1258(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 179 const lxb_codepoint_t *end); 180 181 LXB_API lxb_status_t 182 lxb_encoding_encode_windows_874(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 183 const lxb_codepoint_t *end); 184 185 LXB_API lxb_status_t 186 lxb_encoding_encode_x_mac_cyrillic(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 187 const lxb_codepoint_t *end); 188 189 LXB_API lxb_status_t 190 lxb_encoding_encode_x_user_defined(lxb_encoding_encode_t *ctx, const lxb_codepoint_t **cp, 191 const lxb_codepoint_t *end); 192 193 /* 194 * Single 195 */ 196 LXB_API int8_t 197 lxb_encoding_encode_default_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 198 const lxb_char_t *end, lxb_codepoint_t cp); 199 200 LXB_API int8_t 201 lxb_encoding_encode_auto_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 202 const lxb_char_t *end, lxb_codepoint_t cp); 203 204 LXB_API int8_t 205 lxb_encoding_encode_undefined_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 206 const lxb_char_t *end, lxb_codepoint_t cp); 207 208 LXB_API int8_t 209 lxb_encoding_encode_big5_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 210 const lxb_char_t *end, lxb_codepoint_t cp); 211 212 LXB_API int8_t 213 lxb_encoding_encode_euc_jp_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 214 const lxb_char_t *end, lxb_codepoint_t cp); 215 216 LXB_API int8_t 217 lxb_encoding_encode_euc_kr_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 218 const lxb_char_t *end, lxb_codepoint_t cp); 219 220 LXB_API int8_t 221 lxb_encoding_encode_gbk_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 222 const lxb_char_t *end, lxb_codepoint_t cp); 223 224 LXB_API int8_t 225 lxb_encoding_encode_ibm866_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 226 const lxb_char_t *end, lxb_codepoint_t cp); 227 228 LXB_API int8_t 229 lxb_encoding_encode_iso_2022_jp_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 230 const lxb_char_t *end, lxb_codepoint_t cp); 231 232 LXB_API int8_t 233 lxb_encoding_encode_iso_2022_jp_eof_single(lxb_encoding_encode_t *ctx, 234 lxb_char_t **data, const lxb_char_t *end); 235 236 LXB_API int8_t 237 lxb_encoding_encode_iso_8859_10_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 238 const lxb_char_t *end, lxb_codepoint_t cp); 239 240 LXB_API int8_t 241 lxb_encoding_encode_iso_8859_13_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 242 const lxb_char_t *end, lxb_codepoint_t cp); 243 244 LXB_API int8_t 245 lxb_encoding_encode_iso_8859_14_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 246 const lxb_char_t *end, lxb_codepoint_t cp); 247 248 LXB_API int8_t 249 lxb_encoding_encode_iso_8859_15_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 250 const lxb_char_t *end, lxb_codepoint_t cp); 251 252 LXB_API int8_t 253 lxb_encoding_encode_iso_8859_16_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 254 const lxb_char_t *end, lxb_codepoint_t cp); 255 256 LXB_API int8_t 257 lxb_encoding_encode_iso_8859_2_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 258 const lxb_char_t *end, lxb_codepoint_t cp); 259 260 LXB_API int8_t 261 lxb_encoding_encode_iso_8859_3_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 262 const lxb_char_t *end, lxb_codepoint_t cp); 263 264 LXB_API int8_t 265 lxb_encoding_encode_iso_8859_4_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 266 const lxb_char_t *end, lxb_codepoint_t cp); 267 268 LXB_API int8_t 269 lxb_encoding_encode_iso_8859_5_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 270 const lxb_char_t *end, lxb_codepoint_t cp); 271 272 LXB_API int8_t 273 lxb_encoding_encode_iso_8859_6_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 274 const lxb_char_t *end, lxb_codepoint_t cp); 275 276 LXB_API int8_t 277 lxb_encoding_encode_iso_8859_7_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 278 const lxb_char_t *end, lxb_codepoint_t cp); 279 280 LXB_API int8_t 281 lxb_encoding_encode_iso_8859_8_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 282 const lxb_char_t *end, lxb_codepoint_t cp); 283 284 LXB_API int8_t 285 lxb_encoding_encode_iso_8859_8_i_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 286 const lxb_char_t *end, lxb_codepoint_t cp); 287 288 LXB_API int8_t 289 lxb_encoding_encode_koi8_r_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 290 const lxb_char_t *end, lxb_codepoint_t cp); 291 292 LXB_API int8_t 293 lxb_encoding_encode_koi8_u_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 294 const lxb_char_t *end, lxb_codepoint_t cp); 295 296 LXB_API int8_t 297 lxb_encoding_encode_shift_jis_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 298 const lxb_char_t *end, lxb_codepoint_t cp); 299 300 LXB_API int8_t 301 lxb_encoding_encode_utf_16be_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 302 const lxb_char_t *end, lxb_codepoint_t cp); 303 304 LXB_API int8_t 305 lxb_encoding_encode_utf_16le_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 306 const lxb_char_t *end, lxb_codepoint_t cp); 307 308 LXB_API int8_t 309 lxb_encoding_encode_utf_8_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 310 const lxb_char_t *end, lxb_codepoint_t cp); 311 312 LXB_API int8_t 313 lxb_encoding_encode_utf_8_length(lxb_codepoint_t cp); 314 315 LXB_API int8_t 316 lxb_encoding_encode_gb18030_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 317 const lxb_char_t *end, lxb_codepoint_t cp); 318 319 LXB_API int8_t 320 lxb_encoding_encode_macintosh_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 321 const lxb_char_t *end, lxb_codepoint_t cp); 322 323 LXB_API int8_t 324 lxb_encoding_encode_replacement_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 325 const lxb_char_t *end, lxb_codepoint_t cp); 326 327 LXB_API int8_t 328 lxb_encoding_encode_windows_1250_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 329 const lxb_char_t *end, lxb_codepoint_t cp); 330 331 LXB_API int8_t 332 lxb_encoding_encode_windows_1251_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 333 const lxb_char_t *end, lxb_codepoint_t cp); 334 335 LXB_API int8_t 336 lxb_encoding_encode_windows_1252_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 337 const lxb_char_t *end, lxb_codepoint_t cp); 338 339 LXB_API int8_t 340 lxb_encoding_encode_windows_1253_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 341 const lxb_char_t *end, lxb_codepoint_t cp); 342 343 LXB_API int8_t 344 lxb_encoding_encode_windows_1254_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 345 const lxb_char_t *end, lxb_codepoint_t cp); 346 347 LXB_API int8_t 348 lxb_encoding_encode_windows_1255_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 349 const lxb_char_t *end, lxb_codepoint_t cp); 350 351 LXB_API int8_t 352 lxb_encoding_encode_windows_1256_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 353 const lxb_char_t *end, lxb_codepoint_t cp); 354 355 LXB_API int8_t 356 lxb_encoding_encode_windows_1257_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 357 const lxb_char_t *end, lxb_codepoint_t cp); 358 359 LXB_API int8_t 360 lxb_encoding_encode_windows_1258_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 361 const lxb_char_t *end, lxb_codepoint_t cp); 362 363 LXB_API int8_t 364 lxb_encoding_encode_windows_874_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 365 const lxb_char_t *end, lxb_codepoint_t cp); 366 367 LXB_API int8_t 368 lxb_encoding_encode_x_mac_cyrillic_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 369 const lxb_char_t *end, lxb_codepoint_t cp); 370 371 LXB_API int8_t 372 lxb_encoding_encode_x_user_defined_single(lxb_encoding_encode_t *ctx, lxb_char_t **data, 373 const lxb_char_t *end, lxb_codepoint_t cp); 374 375 376 #ifdef __cplusplus 377 } /* extern "C" */ 378 #endif 379 380 #endif /* LEXBOR_ENCODING_ENCODE_H */ 381