#ifndef __XML_ENCODING_H__
#define __XML_ENCODING_H__
#include <libxml/xmlversion.h>
#include <libxml/xmlerror.h>
#include <libxml/xmlstring.h>
#include <libxml/tree.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
XML_CHAR_ENCODING_ERROR= -1,
XML_CHAR_ENCODING_NONE= 0,
XML_CHAR_ENCODING_UTF8= 1,
XML_CHAR_ENCODING_UTF16LE= 2,
XML_CHAR_ENCODING_UTF16BE= 3,
XML_CHAR_ENCODING_UCS4LE= 4,
XML_CHAR_ENCODING_UCS4BE= 5,
XML_CHAR_ENCODING_EBCDIC= 6,
XML_CHAR_ENCODING_UCS4_2143=7,
XML_CHAR_ENCODING_UCS4_3412=8,
XML_CHAR_ENCODING_UCS2= 9,
XML_CHAR_ENCODING_8859_1= 10,
XML_CHAR_ENCODING_8859_2= 11,
XML_CHAR_ENCODING_8859_3= 12,
XML_CHAR_ENCODING_8859_4= 13,
XML_CHAR_ENCODING_8859_5= 14,
XML_CHAR_ENCODING_8859_6= 15,
XML_CHAR_ENCODING_8859_7= 16,
XML_CHAR_ENCODING_8859_8= 17,
XML_CHAR_ENCODING_8859_9= 18,
XML_CHAR_ENCODING_2022_JP= 19,
XML_CHAR_ENCODING_SHIFT_JIS=20,
XML_CHAR_ENCODING_EUC_JP= 21,
XML_CHAR_ENCODING_ASCII= 22,
XML_CHAR_ENCODING_UTF16= 23,
XML_CHAR_ENCODING_HTML= 24,
XML_CHAR_ENCODING_8859_10= 25,
XML_CHAR_ENCODING_8859_11= 26,
XML_CHAR_ENCODING_8859_13= 27,
XML_CHAR_ENCODING_8859_14= 28,
XML_CHAR_ENCODING_8859_15= 29,
XML_CHAR_ENCODING_8859_16= 30,
XML_CHAR_ENCODING_WINDOWS_1252 = 31
} xmlCharEncoding;
typedef enum {
XML_ENC_ERR_SUCCESS = 0,
XML_ENC_ERR_INTERNAL = -1,
XML_ENC_ERR_INPUT = -2,
XML_ENC_ERR_SPACE = -3,
XML_ENC_ERR_MEMORY = -4
} xmlCharEncError;
typedef enum {
XML_ENC_INPUT = (1 << 0),
XML_ENC_OUTPUT = (1 << 1),
XML_ENC_HTML = (1 << 2)
} xmlCharEncFlags;
typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler;
typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr;
typedef int (*xmlCharEncodingInputFunc)(unsigned char *out, int *outlen,
const unsigned char *in, int *inlen);
typedef int (*xmlCharEncodingOutputFunc)(unsigned char *out, int *outlen,
const unsigned char *in, int *inlen);
typedef xmlCharEncError
(*xmlCharEncConvFunc)(void *vctxt, unsigned char *out, int *outlen,
const unsigned char *in, int *inlen, int flush);
typedef void
(*xmlCharEncConvCtxtDtor)(void *vctxt);
typedef xmlParserErrors
(*xmlCharEncConvImpl)(void *vctxt, const char *name, xmlCharEncFlags flags,
xmlCharEncodingHandler **out);
struct _xmlCharEncodingHandler {
char *name;
union {
xmlCharEncConvFunc func;
xmlCharEncodingInputFunc legacyFunc;
} input;
union {
xmlCharEncConvFunc func;
xmlCharEncodingOutputFunc legacyFunc;
} output;
void *inputCtxt;
void *outputCtxt;
xmlCharEncConvCtxtDtor ctxtDtor;
int flags;
};
XMLPUBFUN int xmlGetCharEncoding(const char *name);
XMLPUBFUN xmlCharEncodingHandlerPtr xmlFindCharEncodingHandler(const char *name);
XMLPUBFUN int xmlCharEncCloseFunc(xmlCharEncodingHandlerPtr handler);
#ifdef __cplusplus
}
#endif
#endif