codec.h

Go to the documentation of this file.
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

Generated on Wed Jul 29 11:59:20 2015 for Libparserutils by  doxygen 1.5.6