/*
 * Summary: error handling
 * Description: the API used to report errors
 *
 * Copy: See Copyright for the status of this software.
 *
 * Author: Daniel Veillard
 * Portion Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. 
 */

/** @file
@publishedAll
@released
*/

#ifndef XML_ERROR_H
#define XML_ERROR_H

typedef struct _xmlParserInput xmlParserInput;
typedef xmlParserInput *xmlParserInputPtr;

#include <stdapis/libxml2/libxml2_tree.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * xmlErrorLevel:
 *
 * Indicates the level of an error
 */
typedef enum {
    XML_ERR_NONE = 0,
    XML_ERR_WARNING = 1,        /* A simple warning */
    XML_ERR_ERROR = 2,          /* A recoverable error */
    XML_ERR_FATAL = 3           /* A fatal error */
} xmlErrorLevel;

/**
 * xmlErrorDomain:
 *
 * Indicates where an error may have come from
 */
typedef enum {
    XML_FROM_NONE = 0,
    XML_FROM_PARSER,    /* The XML parser */
    XML_FROM_TREE,      /* The tree module */
    XML_FROM_NAMESPACE, /* The XML Namespace module */
    XML_FROM_DTD,       /* The XML DTD validation with parser context*/
    XML_FROM_HTML,      /* The HTML parser */
    XML_FROM_MEMORY,    /* The memory allocator */
    XML_FROM_OUTPUT,    /* The serialization code */
    XML_FROM_IO,        /* The Input/Output stack */
    XML_FROM_FTP,       /* The FTP module */
    XML_FROM_HTTP,      /* The FTP module */
    XML_FROM_XINCLUDE,  /* The XInclude processing */
    XML_FROM_XPATH,     /* The XPath module */
    XML_FROM_XPOINTER,  /* The XPointer module */
    XML_FROM_REGEXP,    /* The regular expressions module */
    XML_FROM_DATATYPE,  /* The W3C XML Schemas Datatype module */
    XML_FROM_SCHEMASP,  /* The W3C XML Schemas parser module */
    XML_FROM_SCHEMASV,  /* The W3C XML Schemas validation module */
    XML_FROM_RELAXNGP,  /* The Relax-NG parser module */
    XML_FROM_RELAXNGV,  /* The Relax-NG validator module */
    XML_FROM_CATALOG,   /* The Catalog module */
    XML_FROM_C14N,      /* The Canonicalization module */
    XML_FROM_XSLT,      /* The XSLT engine from libxslt */
    XML_FROM_VALID      /* The XML DTD validation with valid context */
} xmlErrorDomain;

/**
 * xmlError:
 *
 * An XML Error instance.
 */
typedef struct _xmlError xmlError;
typedef xmlError *xmlErrorPtr;

struct _xmlError {
    int         domain; /* What part of the library raised this error */
    int         code;   /* The error code, e.g. an xmlParserError */
    char       *message;/* human-readable informative error message */
    xmlErrorLevel level;/* how consequent is the error */
    char       *file;   /* the filename */
#ifdef LIBXML_ENABLE_NODE_LINEINFO
    int         line;   /* the line number if available */
#endif
    char       *str1;   /* extra string information */
    char       *str2;   /* extra string information */
    char       *str3;   /* extra string information */
    int         int1;   /* extra number information */
    int         int2;   /* extra number information */
    void       *ctxt;   /* the parser context if available */
    void       *node;   /* the node in the tree */
};

/**
 * xmlParserError:
 *
 * This is an error that the XML (or HTML) parser can generate
 */
typedef enum {
    XML_ERR_OK = 0,
    XML_ERR_INTERNAL_ERROR,             /* 1  */
    XML_ERR_NO_MEMORY,                  /* 2  */
    XML_ERR_DOCUMENT_START,             /* 3  */
    XML_ERR_DOCUMENT_EMPTY,             /* 4  */
    XML_ERR_DOCUMENT_END,               /* 5  */
    XML_ERR_INVALID_HEX_CHARREF,        /* 6  */
    XML_ERR_INVALID_DEC_CHARREF,        /* 7  */
    XML_ERR_INVALID_CHARREF,            /* 8  */
    XML_ERR_INVALID_CHAR,               /* 9  */
    XML_ERR_CHARREF_AT_EOF,             /* 10 */
    XML_ERR_CHARREF_IN_PROLOG,          /* 11 */
    XML_ERR_CHARREF_IN_EPILOG,          /* 12 */
    XML_ERR_CHARREF_IN_DTD,             /* 13 */
    XML_ERR_ENTITYREF_AT_EOF,           /* 14 */
    XML_ERR_ENTITYREF_IN_PROLOG,        /* 15 */
    XML_ERR_ENTITYREF_IN_EPILOG,        /* 16 */
    XML_ERR_ENTITYREF_IN_DTD,           /* 17 */
    XML_ERR_PEREF_AT_EOF,               /* 18 */
    XML_ERR_PEREF_IN_PROLOG,            /* 19 */
    XML_ERR_PEREF_IN_EPILOG,            /* 20 */
    XML_ERR_PEREF_IN_INT_SUBSET,        /* 21 */
    XML_ERR_ENTITYREF_NO_NAME,          /* 22 */
    XML_ERR_ENTITYREF_SEMICOL_MISSING,  /* 23 */
    XML_ERR_PEREF_NO_NAME,              /* 24 */
    XML_ERR_PEREF_SEMICOL_MISSING,      /* 25 */
    XML_ERR_UNDECLARED_ENTITY,          /* 26 */
    XML_WAR_UNDECLARED_ENTITY,          /* 27 */
    XML_ERR_UNPARSED_ENTITY,            /* 28 */
    XML_ERR_ENTITY_IS_EXTERNAL,         /* 29 */
    XML_ERR_ENTITY_IS_PARAMETER,        /* 30 */
    XML_ERR_UNKNOWN_ENCODING,           /* 31 */
    XML_ERR_UNSUPPORTED_ENCODING,       /* 32 */
    XML_ERR_STRING_NOT_STARTED,         /* 33 */
    XML_ERR_STRING_NOT_CLOSED,          /* 34 */
    XML_ERR_NS_DECL_ERROR,              /* 35 */
    XML_ERR_ENTITY_NOT_STARTED,         /* 36 */
    XML_ERR_ENTITY_NOT_FINISHED,        /* 37 */
    XML_ERR_LT_IN_ATTRIBUTE,            /* 38 */
    XML_ERR_ATTRIBUTE_NOT_STARTED,      /* 39 */
    XML_ERR_ATTRIBUTE_NOT_FINISHED,     /* 40 */
    XML_ERR_ATTRIBUTE_WITHOUT_VALUE,    /* 41 */
    XML_ERR_ATTRIBUTE_REDEFINED,        /* 42 */
    XML_ERR_LITERAL_NOT_STARTED,        /* 43 */
    XML_ERR_LITERAL_NOT_FINISHED,       /* 44 */
    XML_ERR_COMMENT_NOT_FINISHED,       /* 45 */
    XML_ERR_PI_NOT_STARTED,             /* 46 */
    XML_ERR_PI_NOT_FINISHED,            /* 47 */
    XML_ERR_NOTATION_NOT_STARTED,       /* 48 */
    XML_ERR_NOTATION_NOT_FINISHED,      /* 49 */
    XML_ERR_ATTLIST_NOT_STARTED,        /* 50 */
    XML_ERR_ATTLIST_NOT_FINISHED,       /* 51 */
    XML_ERR_MIXED_NOT_STARTED,          /* 52 */
    XML_ERR_MIXED_NOT_FINISHED,         /* 53 */
    XML_ERR_ELEMCONTENT_NOT_STARTED,    /* 54 */
    XML_ERR_ELEMCONTENT_NOT_FINISHED,   /* 55 */
    XML_ERR_XMLDECL_NOT_STARTED,        /* 56 */
    XML_ERR_XMLDECL_NOT_FINISHED,       /* 57 */
    XML_ERR_CONDSEC_NOT_STARTED,        /* 58 */
    XML_ERR_CONDSEC_NOT_FINISHED,       /* 59 */
    XML_ERR_EXT_SUBSET_NOT_FINISHED,    /* 60 */
    XML_ERR_DOCTYPE_NOT_FINISHED,       /* 61 */
    XML_ERR_MISPLACED_CDATA_END,        /* 62 */
    XML_ERR_CDATA_NOT_FINISHED,         /* 63 */
    XML_ERR_RESERVED_XML_NAME,          /* 64 */
    XML_ERR_SPACE_REQUIRED,             /* 65 */
    XML_ERR_SEPARATOR_REQUIRED,         /* 66 */
    XML_ERR_NMTOKEN_REQUIRED,           /* 67 */
    XML_ERR_NAME_REQUIRED,              /* 68 */
    XML_ERR_PCDATA_REQUIRED,            /* 69 */
    XML_ERR_URI_REQUIRED,               /* 70 */
    XML_ERR_PUBID_REQUIRED,             /* 71 */
    XML_ERR_LT_REQUIRED,                /* 72 */
    XML_ERR_GT_REQUIRED,                /* 73 */
    XML_ERR_LTSLASH_REQUIRED,           /* 74 */
    XML_ERR_EQUAL_REQUIRED,             /* 75 */
    XML_ERR_TAG_NAME_MISMATCH,          /* 76 */
    XML_ERR_TAG_NOT_FINISHED,           /* 77 */
    XML_ERR_STANDALONE_VALUE,           /* 78 */
    XML_ERR_ENCODING_NAME,              /* 79 */
    XML_ERR_HYPHEN_IN_COMMENT,          /* 80 */
    XML_ERR_INVALID_ENCODING,           /* 81 */
    XML_ERR_EXT_ENTITY_STANDALONE,      /* 82 */
    XML_ERR_CONDSEC_INVALID,            /* 83 */
    XML_ERR_VALUE_REQUIRED,             /* 84 */
    XML_ERR_NOT_WELL_BALANCED,          /* 85 */
    XML_ERR_EXTRA_CONTENT,              /* 86 */
    XML_ERR_ENTITY_CHAR_ERROR,          /* 87 */
    XML_ERR_ENTITY_PE_INTERNAL,         /* 88 */
    XML_ERR_ENTITY_LOOP,                /* 89 */
    XML_ERR_ENTITY_BOUNDARY,            /* 90 */
    XML_ERR_INVALID_URI,                /* 91 */
    XML_ERR_URI_FRAGMENT,               /* 92 */
    XML_WAR_CATALOG_PI,                 /* 93 */
    XML_ERR_NO_DTD,                     /* 94 */
    XML_ERR_CONDSEC_INVALID_KEYWORD,    /* 95 */
    XML_ERR_VERSION_MISSING,            /* 96 */
    XML_WAR_UNKNOWN_VERSION,            /* 97 */
    XML_WAR_LANG_VALUE,                 /* 98 */
    XML_WAR_NS_URI,                     /* 99 */
    XML_WAR_NS_URI_RELATIVE,            /* 100 */
    XML_ERR_MISSING_ENCODING,           /* 101 */
    XML_NS_ERR_XML_NAMESPACE             = 200,
    XML_NS_ERR_UNDEFINED_NAMESPACE,     /* 201 */
    XML_NS_ERR_QNAME,                   /* 202 */
    XML_NS_ERR_ATTRIBUTE_REDEFINED,     /* 203 */
    XML_DTD_ATTRIBUTE_DEFAULT            = 500,
    XML_DTD_ATTRIBUTE_REDEFINED,        /* 501 */
    XML_DTD_ATTRIBUTE_VALUE,            /* 502 */
    XML_DTD_CONTENT_ERROR,              /* 503 */
    XML_DTD_CONTENT_MODEL,              /* 504 */
    XML_DTD_CONTENT_NOT_DETERMINIST,    /* 505 */
    XML_DTD_DIFFERENT_PREFIX,           /* 506 */
    XML_DTD_ELEM_DEFAULT_NAMESPACE,     /* 507 */
    XML_DTD_ELEM_NAMESPACE,             /* 508 */
    XML_DTD_ELEM_REDEFINED,             /* 509 */
    XML_DTD_EMPTY_NOTATION,             /* 510 */
    XML_DTD_ENTITY_TYPE,                /* 511 */
    XML_DTD_ID_FIXED,                   /* 512 */
    XML_DTD_ID_REDEFINED,               /* 513 */
    XML_DTD_ID_SUBSET,                  /* 514 */
    XML_DTD_INVALID_CHILD,              /* 515 */
    XML_DTD_INVALID_DEFAULT,            /* 516 */
    XML_DTD_LOAD_ERROR,                 /* 517 */
    XML_DTD_MISSING_ATTRIBUTE,          /* 518 */
    XML_DTD_MIXED_CORRUPT,              /* 519 */
    XML_DTD_MULTIPLE_ID,                /* 520 */
    XML_DTD_NO_DOC,                     /* 521 */
    XML_DTD_NO_DTD,                     /* 522 */
    XML_DTD_NO_ELEM_NAME,               /* 523 */
    XML_DTD_NO_PREFIX,                  /* 524 */
    XML_DTD_NO_ROOT,                    /* 525 */
    XML_DTD_NOTATION_REDEFINED,         /* 526 */
    XML_DTD_NOTATION_VALUE,             /* 527 */
    XML_DTD_NOT_EMPTY,                  /* 528 */
    XML_DTD_NOT_PCDATA,                 /* 529 */
    XML_DTD_NOT_STANDALONE,             /* 530 */
    XML_DTD_ROOT_NAME,                  /* 531 */
    XML_DTD_STANDALONE_WHITE_SPACE,     /* 532 */
    XML_DTD_UNKNOWN_ATTRIBUTE,          /* 533 */
    XML_DTD_UNKNOWN_ELEM,               /* 534 */
    XML_DTD_UNKNOWN_ENTITY,             /* 535 */
    XML_DTD_UNKNOWN_ID,                 /* 536 */
    XML_DTD_UNKNOWN_NOTATION,           /* 537 */
    XML_DTD_STANDALONE_DEFAULTED,       /* 538 */
    XML_DTD_XMLID_VALUE,                /* 539 */
    XML_DTD_XMLID_TYPE,                 /* 540 */
    XML_HTML_STRUCURE_ERROR              = 800,
    XML_HTML_UNKNOWN_TAG,               /* 801 */
    XML_RNGP_ANYNAME_ATTR_ANCESTOR      = 1000,
    XML_RNGP_ATTR_CONFLICT,             /* 1001 */
    XML_RNGP_ATTRIBUTE_CHILDREN,        /* 1002 */
    XML_RNGP_ATTRIBUTE_CONTENT,         /* 1003 */
    XML_RNGP_ATTRIBUTE_EMPTY,           /* 1004 */
    XML_RNGP_ATTRIBUTE_NOOP,            /* 1005 */
    XML_RNGP_CHOICE_CONTENT,            /* 1006 */
    XML_RNGP_CHOICE_EMPTY,              /* 1007 */
    XML_RNGP_CREATE_FAILURE,            /* 1008 */
    XML_RNGP_DATA_CONTENT,              /* 1009 */
    XML_RNGP_DEF_CHOICE_AND_INTERLEAVE, /* 1010 */
    XML_RNGP_DEFINE_CREATE_FAILED,      /* 1011 */
    XML_RNGP_DEFINE_EMPTY,              /* 1012 */
    XML_RNGP_DEFINE_MISSING,            /* 1013 */
    XML_RNGP_DEFINE_NAME_MISSING,       /* 1014 */
    XML_RNGP_ELEM_CONTENT_EMPTY,        /* 1015 */
    XML_RNGP_ELEM_CONTENT_ERROR,        /* 1016 */
    XML_RNGP_ELEMENT_EMPTY,             /* 1017 */
    XML_RNGP_ELEMENT_CONTENT,           /* 1018 */
    XML_RNGP_ELEMENT_NAME,              /* 1019 */
    XML_RNGP_ELEMENT_NO_CONTENT,        /* 1020 */
    XML_RNGP_ELEM_TEXT_CONFLICT,        /* 1021 */
    XML_RNGP_EMPTY,                     /* 1022 */
    XML_RNGP_EMPTY_CONSTRUCT,           /* 1023 */
    XML_RNGP_EMPTY_CONTENT,             /* 1024 */
    XML_RNGP_EMPTY_NOT_EMPTY,           /* 1025 */
    XML_RNGP_ERROR_TYPE_LIB,            /* 1026 */
    XML_RNGP_EXCEPT_EMPTY,              /* 1027 */
    XML_RNGP_EXCEPT_MISSING,            /* 1028 */
    XML_RNGP_EXCEPT_MULTIPLE,           /* 1029 */
    XML_RNGP_EXCEPT_NO_CONTENT,         /* 1030 */
    XML_RNGP_EXTERNALREF_EMTPY,         /* 1031 */
    XML_RNGP_EXTERNAL_REF_FAILURE,      /* 1032 */
    XML_RNGP_EXTERNALREF_RECURSE,       /* 1033 */
    XML_RNGP_FORBIDDEN_ATTRIBUTE,       /* 1034 */
    XML_RNGP_FOREIGN_ELEMENT,           /* 1035 */
    XML_RNGP_GRAMMAR_CONTENT,           /* 1036 */
    XML_RNGP_GRAMMAR_EMPTY,             /* 1037 */
    XML_RNGP_GRAMMAR_MISSING,           /* 1038 */
    XML_RNGP_GRAMMAR_NO_START,          /* 1039 */
    XML_RNGP_GROUP_ATTR_CONFLICT,       /* 1040 */
    XML_RNGP_HREF_ERROR,                /* 1041 */
    XML_RNGP_INCLUDE_EMPTY,             /* 1042 */
    XML_RNGP_INCLUDE_FAILURE,           /* 1043 */
    XML_RNGP_INCLUDE_RECURSE,           /* 1044 */
    XML_RNGP_INTERLEAVE_ADD,            /* 1045 */
    XML_RNGP_INTERLEAVE_CREATE_FAILED,  /* 1046 */
    XML_RNGP_INTERLEAVE_EMPTY,          /* 1047 */
    XML_RNGP_INTERLEAVE_NO_CONTENT,     /* 1048 */
    XML_RNGP_INVALID_DEFINE_NAME,       /* 1049 */
    XML_RNGP_INVALID_URI,               /* 1050 */
    XML_RNGP_INVALID_VALUE,             /* 1051 */
    XML_RNGP_MISSING_HREF,              /* 1052 */
    XML_RNGP_NAME_MISSING,              /* 1053 */
    XML_RNGP_NEED_COMBINE,              /* 1054 */
    XML_RNGP_NOTALLOWED_NOT_EMPTY,      /* 1055 */
    XML_RNGP_NSNAME_ATTR_ANCESTOR,      /* 1056 */
    XML_RNGP_NSNAME_NO_NS,              /* 1057 */
    XML_RNGP_PARAM_FORBIDDEN,           /* 1058 */
    XML_RNGP_PARAM_NAME_MISSING,        /* 1059 */
    XML_RNGP_PARENTREF_CREATE_FAILED,   /* 1060 */
    XML_RNGP_PARENTREF_NAME_INVALID,    /* 1061 */
    XML_RNGP_PARENTREF_NO_NAME,         /* 1062 */
    XML_RNGP_PARENTREF_NO_PARENT,       /* 1063 */
    XML_RNGP_PARENTREF_NOT_EMPTY,       /* 1064 */
    XML_RNGP_PARSE_ERROR,               /* 1065 */
    XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME,/* 1066 */
    XML_RNGP_PAT_ATTR_ATTR,             /* 1067 */
    XML_RNGP_PAT_ATTR_ELEM,             /* 1068 */
    XML_RNGP_PAT_DATA_EXCEPT_ATTR,      /* 1069 */
    XML_RNGP_PAT_DATA_EXCEPT_ELEM,      /* 1070 */
    XML_RNGP_PAT_DATA_EXCEPT_EMPTY,     /* 1071 */
    XML_RNGP_PAT_DATA_EXCEPT_GROUP,     /* 1072 */
    XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE,/* 1073 */
    XML_RNGP_PAT_DATA_EXCEPT_LIST,      /* 1074 */
    XML_RNGP_PAT_DATA_EXCEPT_ONEMORE,   /* 1075 */
    XML_RNGP_PAT_DATA_EXCEPT_REF,       /* 1076 */
    XML_RNGP_PAT_DATA_EXCEPT_TEXT,      /* 1077 */
    XML_RNGP_PAT_LIST_ATTR,             /* 1078 */
    XML_RNGP_PAT_LIST_ELEM,             /* 1079 */
    XML_RNGP_PAT_LIST_INTERLEAVE,       /* 1080 */
    XML_RNGP_PAT_LIST_LIST,             /* 1081 */
    XML_RNGP_PAT_LIST_REF,              /* 1082 */
    XML_RNGP_PAT_LIST_TEXT,             /* 1083 */
    XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME, /* 1084 */
    XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME,  /* 1085 */
    XML_RNGP_PAT_ONEMORE_GROUP_ATTR,    /* 1086 */
    XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR,/* 1087 */
    XML_RNGP_PAT_START_ATTR,            /* 1088 */
    XML_RNGP_PAT_START_DATA,            /* 1089 */
    XML_RNGP_PAT_START_EMPTY,           /* 1090 */
    XML_RNGP_PAT_START_GROUP,           /* 1091 */
    XML_RNGP_PAT_START_INTERLEAVE,      /* 1092 */
    XML_RNGP_PAT_START_LIST,            /* 1093 */
    XML_RNGP_PAT_START_ONEMORE,         /* 1094 */
    XML_RNGP_PAT_START_TEXT,            /* 1095 */
    XML_RNGP_PAT_START_VALUE,           /* 1096 */
    XML_RNGP_PREFIX_UNDEFINED,          /* 1097 */
    XML_RNGP_REF_CREATE_FAILED,         /* 1098 */
    XML_RNGP_REF_CYCLE,                 /* 1099 */
    XML_RNGP_REF_NAME_INVALID,          /* 1100 */
    XML_RNGP_REF_NO_DEF,                /* 1101 */
    XML_RNGP_REF_NO_NAME,               /* 1102 */
    XML_RNGP_REF_NOT_EMPTY,             /* 1103 */
    XML_RNGP_START_CHOICE_AND_INTERLEAVE,/* 1104 */
    XML_RNGP_START_CONTENT,             /* 1105 */
    XML_RNGP_START_EMPTY,               /* 1106 */
    XML_RNGP_START_MISSING,             /* 1107 */
    XML_RNGP_TEXT_EXPECTED,             /* 1108 */
    XML_RNGP_TEXT_HAS_CHILD,            /* 1109 */
    XML_RNGP_TYPE_MISSING,              /* 1110 */
    XML_RNGP_TYPE_NOT_FOUND,            /* 1111 */
    XML_RNGP_TYPE_VALUE,                /* 1112 */
    XML_RNGP_UNKNOWN_ATTRIBUTE,         /* 1113 */
    XML_RNGP_UNKNOWN_COMBINE,           /* 1114 */
    XML_RNGP_UNKNOWN_CONSTRUCT,         /* 1115 */
    XML_RNGP_UNKNOWN_TYPE_LIB,          /* 1116 */
    XML_RNGP_URI_FRAGMENT,              /* 1117 */
    XML_RNGP_URI_NOT_ABSOLUTE,          /* 1118 */
    XML_RNGP_VALUE_EMPTY,               /* 1119 */
    XML_RNGP_VALUE_NO_CONTENT,          /* 1120 */
    XML_RNGP_XMLNS_NAME,                /* 1121 */
    XML_RNGP_XML_NS,                    /* 1122 */
    XML_XPATH_EXPRESSION_OK              = 1200,
    XML_XPATH_NUMBER_ERROR,             /* 1201 */
    XML_XPATH_UNFINISHED_LITERAL_ERROR, /* 1202 */
    XML_XPATH_START_LITERAL_ERROR,      /* 1203 */
    XML_XPATH_VARIABLE_REF_ERROR,       /* 1204 */
    XML_XPATH_UNDEF_VARIABLE_ERROR,     /* 1205 */
    XML_XPATH_INVALID_PREDICATE_ERROR,  /* 1206 */
    XML_XPATH_EXPR_ERROR,               /* 1207 */
    XML_XPATH_UNCLOSED_ERROR,           /* 1208 */
    XML_XPATH_UNKNOWN_FUNC_ERROR,       /* 1209 */
    XML_XPATH_INVALID_OPERAND,          /* 1210 */
    XML_XPATH_INVALID_TYPE,             /* 1211 */
    XML_XPATH_INVALID_ARITY,            /* 1212 */
    XML_XPATH_INVALID_CTXT_SIZE,        /* 1213 */
    XML_XPATH_INVALID_CTXT_POSITION,    /* 1214 */
    XML_XPATH_MEMORY_ERROR,             /* 1215 */
    XML_XPTR_SYNTAX_ERROR,              /* 1216 */
    XML_XPTR_RESOURCE_ERROR,            /* 1217 */
    XML_XPTR_SUB_RESOURCE_ERROR,        /* 1218 */
    XML_XPATH_UNDEF_PREFIX_ERROR,       /* 1219 */
    XML_XPATH_ENCODING_ERROR,           /* 1220 */
    XML_XPATH_INVALID_CHAR_ERROR,       /* 1221 */
    XML_TREE_INVALID_HEX = 1300,
    XML_TREE_INVALID_DEC,               /* 1301 */
    XML_TREE_UNTERMINATED_ENTITY,       /* 1302 */
    XML_SAVE_NOT_UTF8 = 1400,
    XML_SAVE_CHAR_INVALID,              /* 1401 */
    XML_SAVE_NO_DOCTYPE,                /* 1402 */
    XML_SAVE_UNKNOWN_ENCODING,          /* 1403 */
    XML_REGEXP_COMPILE_ERROR = 1450,
    XML_IO_UNKNOWN = 1500,
    XML_IO_EACCES,                      /* 1501 */
    XML_IO_EAGAIN,                      /* 1502 */
    XML_IO_EBADF,                       /* 1503 */
    XML_IO_EBADMSG,                     /* 1504 */
    XML_IO_EBUSY,                       /* 1505 */
    XML_IO_ECANCELED,                   /* 1506 */
    XML_IO_ECHILD,                      /* 1507 */
    XML_IO_EDEADLK,                     /* 1508 */
    XML_IO_EDOM,                        /* 1509 */
    XML_IO_EEXIST,                      /* 1510 */
    XML_IO_EFAULT,                      /* 1511 */
    XML_IO_EFBIG,                       /* 1512 */
    XML_IO_EINPROGRESS,                 /* 1513 */
    XML_IO_EINTR,                       /* 1514 */
    XML_IO_EINVAL,                      /* 1515 */
    XML_IO_EIO,                         /* 1516 */
    XML_IO_EISDIR,                      /* 1517 */
    XML_IO_EMFILE,                      /* 1518 */
    XML_IO_EMLINK,                      /* 1519 */
    XML_IO_EMSGSIZE,                    /* 1520 */
    XML_IO_ENAMETOOLONG,                /* 1521 */
    XML_IO_ENFILE,                      /* 1522 */
    XML_IO_ENODEV,                      /* 1523 */
    XML_IO_ENOENT,                      /* 1524 */
    XML_IO_ENOEXEC,                     /* 1525 */
    XML_IO_ENOLCK,                      /* 1526 */
    XML_IO_ENOMEM,                      /* 1527 */
    XML_IO_ENOSPC,                      /* 1528 */
    XML_IO_ENOSYS,                      /* 1529 */
    XML_IO_ENOTDIR,                     /* 1530 */
    XML_IO_ENOTEMPTY,                   /* 1531 */
    XML_IO_ENOTSUP,                     /* 1532 */
    XML_IO_ENOTTY,                      /* 1533 */
    XML_IO_ENXIO,                       /* 1534 */
    XML_IO_EPERM,                       /* 1535 */
    XML_IO_EPIPE,                       /* 1536 */
    XML_IO_ERANGE,                      /* 1537 */
    XML_IO_EROFS,                       /* 1538 */
    XML_IO_ESPIPE,                      /* 1539 */
    XML_IO_ESRCH,                       /* 1540 */
    XML_IO_ETIMEDOUT,                   /* 1541 */
    XML_IO_EXDEV,                       /* 1542 */
    XML_IO_NETWORK_ATTEMPT,             /* 1543 */
    XML_IO_ENCODER,                     /* 1544 */
    XML_IO_FLUSH,                       /* 1545 */
    XML_IO_WRITE,                       /* 1546 */
    XML_IO_NO_INPUT,                    /* 1547 */
    XML_IO_BUFFER_FULL,                 /* 1548 */
    XML_IO_LOAD_ERROR,                  /* 1549 */
    XML_IO_ENOTSOCK,                    /* 1550 */
    XML_IO_EISCONN,                     /* 1551 */
    XML_IO_ECONNREFUSED,                /* 1552 */
    XML_IO_ENETUNREACH,                 /* 1553 */
    XML_IO_EADDRINUSE,                  /* 1554 */
    XML_IO_EALREADY,                    /* 1555 */
    XML_IO_EAFNOSUPPORT,                /* 1556 */
    XML_XINCLUDE_RECURSION               = 1600,
    XML_XINCLUDE_PARSE_VALUE,           /* 1601 */
    XML_XINCLUDE_ENTITY_DEF_MISMATCH,   /* 1602 */
    XML_XINCLUDE_NO_HREF,               /* 1603 */
    XML_XINCLUDE_NO_FALLBACK,           /* 1604 */
    XML_XINCLUDE_HREF_URI,              /* 1605 */
    XML_XINCLUDE_TEXT_FRAGMENT,         /* 1606 */
    XML_XINCLUDE_TEXT_DOCUMENT,         /* 1607 */
    XML_XINCLUDE_INVALID_CHAR,          /* 1608 */
    XML_XINCLUDE_BUILD_FAILED,          /* 1609 */
    XML_XINCLUDE_UNKNOWN_ENCODING,      /* 1610 */
    XML_XINCLUDE_MULTIPLE_ROOT,         /* 1611 */
    XML_XINCLUDE_XPTR_FAILED,           /* 1612 */
    XML_XINCLUDE_XPTR_RESULT,           /* 1613 */
    XML_XINCLUDE_INCLUDE_IN_INCLUDE,    /* 1614 */
    XML_XINCLUDE_FALLBACKS_IN_INCLUDE,  /* 1615 */
    XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE,/* 1616 */
    XML_XINCLUDE_DEPRECATED_NS,         /* 1617 */
    XML_XINCLUDE_FRAGMENT_ID,           /* 1618 */
    XML_CATALOG_MISSING_ATTR             = 1650,
    XML_CATALOG_ENTRY_BROKEN,           /* 1651 */
    XML_CATALOG_PREFER_VALUE,           /* 1652 */
    XML_CATALOG_NOT_CATALOG,            /* 1653 */
    XML_CATALOG_RECURSION,              /* 1654 */
    XML_SCHEMAP_PREFIX_UNDEFINED         = 1700,
    XML_SCHEMAP_ATTRFORMDEFAULT_VALUE,  /* 1701 */
    XML_SCHEMAP_ATTRGRP_NONAME_NOREF,   /* 1702 */
    XML_SCHEMAP_ATTR_NONAME_NOREF,      /* 1703 */
    XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF,/* 1704 */
    XML_SCHEMAP_ELEMFORMDEFAULT_VALUE,  /* 1705 */
    XML_SCHEMAP_ELEM_NONAME_NOREF,      /* 1706 */
    XML_SCHEMAP_EXTENSION_NO_BASE,      /* 1707 */
    XML_SCHEMAP_FACET_NO_VALUE,         /* 1708 */
    XML_SCHEMAP_FAILED_BUILD_IMPORT,    /* 1709 */
    XML_SCHEMAP_GROUP_NONAME_NOREF,     /* 1710 */
    XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI,/* 1711 */
    XML_SCHEMAP_IMPORT_REDEFINE_NSNAME, /* 1712 */
    XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI,  /* 1713 */
    XML_SCHEMAP_INVALID_BOOLEAN,        /* 1714 */
    XML_SCHEMAP_INVALID_ENUM,           /* 1715 */
    XML_SCHEMAP_INVALID_FACET,          /* 1716 */
    XML_SCHEMAP_INVALID_FACET_VALUE,    /* 1717 */
    XML_SCHEMAP_INVALID_MAXOCCURS,      /* 1718 */
    XML_SCHEMAP_INVALID_MINOCCURS,      /* 1719 */
    XML_SCHEMAP_INVALID_REF_AND_SUBTYPE,/* 1720 */
    XML_SCHEMAP_INVALID_WHITE_SPACE,    /* 1721 */
    XML_SCHEMAP_NOATTR_NOREF,           /* 1722 */
    XML_SCHEMAP_NOTATION_NO_NAME,       /* 1723 */
    XML_SCHEMAP_NOTYPE_NOREF,           /* 1724 */
    XML_SCHEMAP_REF_AND_SUBTYPE,        /* 1725 */
    XML_SCHEMAP_RESTRICTION_NONAME_NOREF,/* 1726 */
    XML_SCHEMAP_SIMPLETYPE_NONAME,      /* 1727 */
    XML_SCHEMAP_TYPE_AND_SUBTYPE,       /* 1728 */
    XML_SCHEMAP_UNKNOWN_ALL_CHILD,      /* 1729 */
    XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD,/* 1730 */
    XML_SCHEMAP_UNKNOWN_ATTR_CHILD,     /* 1731 */
    XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD,  /* 1732 */
    XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP,/* 1733 */
    XML_SCHEMAP_UNKNOWN_BASE_TYPE,      /* 1734 */
    XML_SCHEMAP_UNKNOWN_CHOICE_CHILD,   /* 1735 */
    XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD,/* 1736 */
    XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD,      /* 1737 */
    XML_SCHEMAP_UNKNOWN_ELEM_CHILD,     /* 1738 */
    XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD,/* 1739 */
    XML_SCHEMAP_UNKNOWN_FACET_CHILD,    /* 1740 */
    XML_SCHEMAP_UNKNOWN_FACET_TYPE,     /* 1741 */
    XML_SCHEMAP_UNKNOWN_GROUP_CHILD,    /* 1742 */
    XML_SCHEMAP_UNKNOWN_IMPORT_CHILD,   /* 1743 */
    XML_SCHEMAP_UNKNOWN_LIST_CHILD,     /* 1744 */
    XML_SCHEMAP_UNKNOWN_NOTATION_CHILD, /* 1745 */
    XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD,   /* 1746 */
    XML_SCHEMAP_UNKNOWN_REF,            /* 1747 */
    XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD,      /* 1748 */
    XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD,  /* 1749 */
    XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD, /* 1750 */
    XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD,    /* 1751 */
    XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD,       /* 1752 */
    XML_SCHEMAP_UNKNOWN_TYPE,           /* 1753 */
    XML_SCHEMAP_UNKNOWN_UNION_CHILD,    /* 1754 */
    XML_SCHEMAP_ELEM_DEFAULT_FIXED,     /* 1755 */
    XML_SCHEMAP_REGEXP_INVALID,         /* 1756 */
    XML_SCHEMAP_FAILED_LOAD,            /* 1756 */
    XML_SCHEMAP_NOTHING_TO_PARSE,       /* 1757 */
    XML_SCHEMAP_NOROOT,                 /* 1758 */
    XML_SCHEMAP_REDEFINED_GROUP,        /* 1759 */
    XML_SCHEMAP_REDEFINED_TYPE,         /* 1760 */
    XML_SCHEMAP_REDEFINED_ELEMENT,      /* 1761 */
    XML_SCHEMAP_REDEFINED_ATTRGROUP,    /* 1762 */
    XML_SCHEMAP_REDEFINED_ATTR,         /* 1763 */
    XML_SCHEMAP_REDEFINED_NOTATION,     /* 1764 */
    XML_SCHEMAP_FAILED_PARSE,           /* 1765 */
    XML_SCHEMAP_UNKNOWN_PREFIX,         /* 1766 */
    XML_SCHEMAP_DEF_AND_PREFIX,         /* 1767 */
    XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD,  /* 1768 */
    XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI, /* 1769 */
    XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI,  /* 1770 */
    XML_SCHEMAP_NOT_SCHEMA,             /* 1771 */
    XML_SCHEMAP_UNKNOWN_MEMBER_TYPE,    /* 1772 */
    XML_SCHEMAP_INVALID_ATTR_USE,       /* 1773 */
    XML_SCHEMAP_RECURSIVE,              /* 1774 */
    XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE,   /* 1775 */
    XML_SCHEMAP_INVALID_ATTR_COMBINATION,       /* 1776 */
    XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION,/* 1777 */
    XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD,       /* 1778 */
    XML_SCHEMAP_INVALID_ATTR_NAME,      /* 1779 */
    XML_SCHEMAP_REF_AND_CONTENT,        /* 1780 */
    XML_SCHEMAV_NOROOT                   = 1800,
    XML_SCHEMAV_UNDECLAREDELEM,         /* 1801 */
    XML_SCHEMAV_NOTTOPLEVEL,            /* 1802 */
    XML_SCHEMAV_MISSING,                /* 1803 */
    XML_SCHEMAV_WRONGELEM,              /* 1804 */
    XML_SCHEMAV_NOTYPE,                 /* 1805 */
    XML_SCHEMAV_NOROLLBACK,             /* 1806 */
    XML_SCHEMAV_ISABSTRACT,             /* 1807 */
    XML_SCHEMAV_NOTEMPTY,               /* 1808 */
    XML_SCHEMAV_ELEMCONT,               /* 1809 */
    XML_SCHEMAV_HAVEDEFAULT,            /* 1810 */
    XML_SCHEMAV_NOTNILLABLE,            /* 1811 */
    XML_SCHEMAV_EXTRACONTENT,           /* 1812 */
    XML_SCHEMAV_INVALIDATTR,            /* 1813 */
    XML_SCHEMAV_INVALIDELEM,            /* 1814 */
    XML_SCHEMAV_NOTDETERMINIST,         /* 1815 */
    XML_SCHEMAV_CONSTRUCT,              /* 1816 */
    XML_SCHEMAV_INTERNAL,               /* 1817 */
    XML_SCHEMAV_NOTSIMPLE,              /* 1818 */
    XML_SCHEMAV_ATTRUNKNOWN,            /* 1819 */
    XML_SCHEMAV_ATTRINVALID,            /* 1820 */
    XML_SCHEMAV_VALUE,                  /* 1821 */
    XML_SCHEMAV_FACET,                  /* 1822 */
    XML_XPTR_UNKNOWN_SCHEME              = 1900,
    XML_XPTR_CHILDSEQ_START,            /* 1901 */
    XML_XPTR_EVAL_FAILED,               /* 1902 */
    XML_XPTR_EXTRA_OBJECTS,             /* 1903 */
    XML_C14N_CREATE_CTXT                 = 1950,
    XML_C14N_REQUIRES_UTF8,             /* 1951 */
    XML_C14N_CREATE_STACK,              /* 1952 */
    XML_C14N_INVALID_NODE,              /* 1953 */
    XML_FTP_PASV_ANSWER                  = 2000,
    XML_FTP_EPSV_ANSWER,                /* 2001 */
    XML_FTP_ACCNT,                      /* 2002 */
    XML_HTTP_URL_SYNTAX                  = 2020,
    XML_HTTP_USE_IP,                    /* 2021 */
    XML_HTTP_UNKNOWN_HOST,				/* 2022 */
    XML_ERR_STACK_LOW					 = 2030

} xmlParserErrors;

/**
 * xmlGenericErrorFunc:
 * @param ctx a parsing context
 * @param msg the message
 * @param # the extra arguments of the varags to format the message
 *
 * Signature of the function to use when there is an error and
 * no parsing or validity context available .
 */
typedef void (*xmlGenericErrorFunc) (void* ctx, const char *msg, ...);

/**
 * xmlStructuredErrorFunc:
 * @param userData user provided data for the error callback
 * @param error the error being raised.
 *
 * Signature of the function to use when there is an error and
 * the module handles the new error reporting mechanism.
 */
typedef void (*xmlStructuredErrorFunc) (void *userData, xmlErrorPtr error);

/*
 * Use the following function to reset the two global variables
 * xmlGenericError and xmlGenericErrorContext.
 */
XMLPUBFUN void XMLCALL
    xmlSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler);
XMLPUBFUN void XMLCALL
    initGenericErrorDefaultFunc(xmlGenericErrorFunc *handler);
XMLPUBFUN void XMLCALL
    xmlSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler);

/*
 * Default message routines used by SAX and Valid context for error
 * and warning reporting.
 */
XMLPUBFUN void XMLCALL
    xmlParserError          (void *ctx, const char *msg, ...);
XMLPUBFUN void XMLCALL
    xmlParserWarning        (void *ctx, const char *msg, ...);
XMLPUBFUN void XMLCALL
    xmlParserValidityError  (void *ctx, const char *msg, ...);
XMLPUBFUN void XMLCALL
    xmlParserValidityWarning(void *ctx, const char *msg, ...);
XMLPUBFUN void XMLCALL
    xmlParserPrintFileInfo  (xmlParserInputPtr input);
XMLPUBFUN void XMLCALL
    xmlParserPrintFileContext(xmlParserInputPtr input);

/*
 * Extended error information routines
 */
XMLPUBFUN xmlErrorPtr XMLCALL
    xmlGetLastError             (void);
XMLPUBFUN void XMLCALL
    xmlResetLastError           (void);
XMLPUBFUN xmlErrorPtr XMLCALL
    xmlCtxtGetLastError         (void *ctx);
XMLPUBFUN void XMLCALL
    xmlCtxtResetLastError       (void *ctx);
XMLPUBFUN void XMLCALL
    xmlResetError               (xmlErrorPtr err);
XMLPUBFUN int XMLCALL
    xmlCopyError                (xmlErrorPtr from, xmlErrorPtr to);

#ifdef __cplusplus
}
#endif
#endif /* XML_ERROR_H */

