|
Libparserutils
|
00001 /* 00002 * This file is part of LibParserUtils. 00003 * Licensed under the MIT License, 00004 * http://www.opensource.org/licenses/mit-license.php 00005 * Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org> 00006 */ 00007 00008 #ifndef parserutils_charset_codec_h_ 00009 #define parserutils_charset_codec_h_ 00010 00011 #ifdef __cplusplus 00012 extern "C" 00013 { 00014 #endif 00015 00016 #include <inttypes.h> 00017 00018 #include <parserutils/errors.h> 00019 #include <parserutils/functypes.h> 00020 00021 typedef struct parserutils_charset_codec parserutils_charset_codec; 00022 00023 #define PARSERUTILS_CHARSET_CODEC_NULL (0xffffffffU) 00024 00062 typedef enum parserutils_charset_codec_errormode { 00064 PARSERUTILS_CHARSET_CODEC_ERROR_STRICT = 0, 00066 PARSERUTILS_CHARSET_CODEC_ERROR_LOOSE = 1, 00068 PARSERUTILS_CHARSET_CODEC_ERROR_TRANSLIT = 2 00069 } parserutils_charset_codec_errormode; 00070 00074 typedef enum parserutils_charset_codec_opttype { 00076 PARSERUTILS_CHARSET_CODEC_ERROR_MODE = 1 00077 } parserutils_charset_codec_opttype; 00078 00082 typedef union parserutils_charset_codec_optparams { 00084 struct { 00086 parserutils_charset_codec_errormode mode; 00087 } error_mode; 00088 } parserutils_charset_codec_optparams; 00089 00090 00091 /* Create a charset codec */ 00092 parserutils_error parserutils_charset_codec_create(const char *charset, 00093 parserutils_charset_codec **codec); 00094 /* Destroy a charset codec */ 00095 parserutils_error parserutils_charset_codec_destroy( 00096 parserutils_charset_codec *codec); 00097 00098 /* Configure a charset codec */ 00099 parserutils_error parserutils_charset_codec_setopt( 00100 parserutils_charset_codec *codec, 00101 parserutils_charset_codec_opttype type, 00102 parserutils_charset_codec_optparams *params); 00103 00104 /* Encode a chunk of UCS-4 data into a codec's charset */ 00105 parserutils_error parserutils_charset_codec_encode( 00106 parserutils_charset_codec *codec, 00107 const uint8_t **source, size_t *sourcelen, 00108 uint8_t **dest, size_t *destlen); 00109 00110 /* Decode a chunk of data in a codec's charset into UCS-4 */ 00111 parserutils_error parserutils_charset_codec_decode( 00112 parserutils_charset_codec *codec, 00113 const uint8_t **source, size_t *sourcelen, 00114 uint8_t **dest, size_t *destlen); 00115 00116 /* Reset a charset codec */ 00117 parserutils_error parserutils_charset_codec_reset( 00118 parserutils_charset_codec *codec); 00119 00120 #ifdef __cplusplus 00121 } 00122 #endif 00123 00124 #endif
1.7.3