codec.h
Go to the documentation of this file.00001
00002
00003
00004
00005
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
00092 parserutils_error parserutils_charset_codec_create(const char *charset,
00093 parserutils_charset_codec **codec);
00094
00095 parserutils_error parserutils_charset_codec_destroy(
00096 parserutils_charset_codec *codec);
00097
00098
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
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
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
00117 parserutils_error parserutils_charset_codec_reset(
00118 parserutils_charset_codec *codec);
00119
00120 #ifdef __cplusplus
00121 }
00122 #endif
00123
00124 #endif