1 #ifndef LIBRARIES_EXPAT_H
    2 #define LIBRARIES_EXPAT_H
    3 
    4 /*
    5 ** Copyright (c) 2001-2007 Expat maintainers.
    6 **
    7 ** Permission is hereby granted, free of charge, to any person obtaining
    8 ** a copy of this software and associated documentation files (the
    9 ** "Software"), to deal in the Software without restriction, including
   10 ** without limitation the rights to use, copy, modify, merge, publish,
   11 ** distribute, sublicense, and/or sell copies of the Software, and to
   12 ** permit persons to whom the Software is furnished to do so, subject to
   13 ** the following conditions:
   14 ** 
   15 ** The above copyright notice and this permission notice shall be included
   16 ** in all copies or substantial portions of the Software.
   17 ** 
   18 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   19 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   20 ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   21 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
   22 ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
   23 ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   24 ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   25 */
   26 
   27 
   28 /****************************************************************************/
   29 
   30 #ifdef __cplusplus
   31 extern "C" {
   32 #endif
   33 
   34 #pragma pack(2)
   35 
   36 #include <stdlib.h>
   37 
   38 #ifndef XMLCALL
   39 #define XMLCALL
   40 #endif
   41 
   42 typedef char XML_Char;
   43 typedef char XML_LChar;
   44 typedef long XML_Index;
   45 typedef unsigned long XML_Size;
   46 
   47 struct XML_ParserStruct;
   48 typedef struct XML_ParserStruct *XML_Parser;
   49 
   50 typedef unsigned char XML_Bool;
   51 #define XML_TRUE   ((XML_Bool) 1)
   52 #define XML_FALSE  ((XML_Bool) 0)
   53 
   54 enum XML_Status {
   55   XML_STATUS_ERROR = 0,
   56 #define XML_STATUS_ERROR XML_STATUS_ERROR
   57   XML_STATUS_OK = 1,
   58 #define XML_STATUS_OK XML_STATUS_OK
   59   XML_STATUS_SUSPENDED = 2
   60 #define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED
   61 };
   62 
   63 enum XML_Error {
   64   XML_ERROR_NONE,
   65   XML_ERROR_NO_MEMORY,
   66   XML_ERROR_SYNTAX,
   67   XML_ERROR_NO_ELEMENTS,
   68   XML_ERROR_INVALID_TOKEN,
   69   XML_ERROR_UNCLOSED_TOKEN,
   70   XML_ERROR_PARTIAL_CHAR,
   71   XML_ERROR_TAG_MISMATCH,
   72   XML_ERROR_DUPLICATE_ATTRIBUTE,
   73   XML_ERROR_JUNK_AFTER_DOC_ELEMENT,
   74   XML_ERROR_PARAM_ENTITY_REF,
   75   XML_ERROR_UNDEFINED_ENTITY,
   76   XML_ERROR_RECURSIVE_ENTITY_REF,
   77   XML_ERROR_ASYNC_ENTITY,
   78   XML_ERROR_BAD_CHAR_REF,
   79   XML_ERROR_BINARY_ENTITY_REF,
   80   XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF,
   81   XML_ERROR_MISPLACED_XML_PI,
   82   XML_ERROR_UNKNOWN_ENCODING,
   83   XML_ERROR_INCORRECT_ENCODING,
   84   XML_ERROR_UNCLOSED_CDATA_SECTION,
   85   XML_ERROR_EXTERNAL_ENTITY_HANDLING,
   86   XML_ERROR_NOT_STANDALONE,
   87   XML_ERROR_UNEXPECTED_STATE,
   88   XML_ERROR_ENTITY_DECLARED_IN_PE,
   89   XML_ERROR_FEATURE_REQUIRES_XML_DTD,
   90   XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING,
   91   XML_ERROR_UNBOUND_PREFIX,
   92   XML_ERROR_UNDECLARING_PREFIX,
   93   XML_ERROR_INCOMPLETE_PE,
   94   XML_ERROR_XML_DECL,
   95   XML_ERROR_TEXT_DECL,
   96   XML_ERROR_PUBLICID,
   97   XML_ERROR_SUSPENDED,
   98   XML_ERROR_NOT_SUSPENDED,
   99   XML_ERROR_ABORTED,
  100   XML_ERROR_FINISHED,
  101   XML_ERROR_SUSPEND_PE,
  102   XML_ERROR_RESERVED_PREFIX_XML,
  103   XML_ERROR_RESERVED_PREFIX_XMLNS,
  104   XML_ERROR_RESERVED_NAMESPACE_URI,
  105   XML_ERROR_INVALID_ARGUMENT,
  106   XML_ERROR_NO_BUFFER,
  107   XML_ERROR_AMPLIFICATION_LIMIT_BREACH
  108 };
  109 
  110 enum XML_Content_Type {
  111   XML_CTYPE_EMPTY = 1,
  112   XML_CTYPE_ANY,
  113   XML_CTYPE_MIXED,
  114   XML_CTYPE_NAME,
  115   XML_CTYPE_CHOICE,
  116   XML_CTYPE_SEQ
  117 };
  118 
  119 enum XML_Content_Quant {
  120   XML_CQUANT_NONE,
  121   XML_CQUANT_OPT,
  122   XML_CQUANT_REP,
  123   XML_CQUANT_PLUS
  124 };
  125 
  126 typedef struct XML_cp XML_Content;
  127 
  128 struct XML_cp {
  129   enum XML_Content_Type         type;
  130   enum XML_Content_Quant        quant;
  131   XML_Char *                    name;
  132   unsigned int                  numchildren;
  133   XML_Content *                 children;
  134 };
  135 
  136 
  137 typedef void (*XML_ElementDeclHandler) (void *userData,
  138                                         const XML_Char *name,
  139                                         XML_Content *model);
  140 
  141 void
  142 XML_SetElementDeclHandler(XML_Parser parser,
  143                           XML_ElementDeclHandler eldecl);
  144 
  145 typedef void (*XML_AttlistDeclHandler) (
  146                                     void            *userData,
  147                                     const XML_Char  *elname,
  148                                     const XML_Char  *attname,
  149                                     const XML_Char  *att_type,
  150                                     const XML_Char  *dflt,
  151                                     int              isrequired);
  152 
  153 void
  154 XML_SetAttlistDeclHandler(XML_Parser parser,
  155                           XML_AttlistDeclHandler attdecl);
  156 
  157 typedef void (*XML_XmlDeclHandler) (void *userData,
  158                                     const XML_Char *version,
  159                                     const XML_Char *encoding,
  160                                     int             standalone);
  161 
  162 void
  163 XML_SetXmlDeclHandler(XML_Parser parser,
  164                       XML_XmlDeclHandler xmldecl);
  165 
  166 
  167 typedef struct {
  168   void *(*malloc_fcn)(size_t size);
  169   void *(*realloc_fcn)(void *ptr, size_t size);
  170   void (*free_fcn)(void *ptr);
  171 } XML_Memory_Handling_Suite;
  172 
  173 typedef void (*XML_StartElementHandler) (void *userData,
  174                                          const XML_Char *name,
  175                                          const XML_Char **atts);
  176 
  177 typedef void (*XML_EndElementHandler) (void *userData,
  178                                        const XML_Char *name);
  179 
  180 
  181 typedef void (*XML_CharacterDataHandler) (void *userData,
  182                                           const XML_Char *s,
  183                                           int len);
  184 
  185 typedef void (*XML_ProcessingInstructionHandler) (
  186                                                 void *userData,
  187                                                 const XML_Char *target,
  188                                                 const XML_Char *data);
  189 
  190 typedef void (*XML_CommentHandler) (void *userData,
  191                                     const XML_Char *data);
  192 
  193 typedef void (*XML_StartCdataSectionHandler) (void *userData);
  194 typedef void (*XML_EndCdataSectionHandler) (void *userData);
  195 
  196 typedef void (*XML_DefaultHandler) (void *userData,
  197                                     const XML_Char *s,
  198                                     int len);
  199 
  200 typedef void (*XML_StartDoctypeDeclHandler) (
  201                                             void *userData,
  202                                             const XML_Char *doctypeName,
  203                                             const XML_Char *sysid,
  204                                             const XML_Char *pubid,
  205                                             int has_internal_subset);
  206 
  207 typedef void (*XML_EndDoctypeDeclHandler)(void *userData);
  208 
  209 typedef void (*XML_EntityDeclHandler) (
  210                               void *userData,
  211                               const XML_Char *entityName,
  212                               int is_parameter_entity,
  213                               const XML_Char *value,
  214                               int value_length,
  215                               const XML_Char *base,
  216                               const XML_Char *systemId,
  217                               const XML_Char *publicId,
  218                               const XML_Char *notationName);
  219 
  220 typedef void (*XML_UnparsedEntityDeclHandler) (
  221                                     void *userData,
  222                                     const XML_Char *entityName,
  223                                     const XML_Char *base,
  224                                     const XML_Char *systemId,
  225                                     const XML_Char *publicId,
  226                                     const XML_Char *notationName);
  227 
  228 typedef void (*XML_NotationDeclHandler) (
  229                                     void *userData,
  230                                     const XML_Char *notationName,
  231                                     const XML_Char *base,
  232                                     const XML_Char *systemId,
  233                                     const XML_Char *publicId);
  234 
  235 typedef void (*XML_StartNamespaceDeclHandler) (
  236                                     void *userData,
  237                                     const XML_Char *prefix,
  238                                     const XML_Char *uri);
  239 
  240 typedef void (*XML_EndNamespaceDeclHandler) (
  241                                     void *userData,
  242                                     const XML_Char *prefix);
  243 
  244 typedef int (*XML_NotStandaloneHandler) (void *userData);
  245 
  246 typedef int (*XML_ExternalEntityRefHandler) (
  247                                     XML_Parser parser,
  248                                     const XML_Char *context,
  249                                     const XML_Char *base,
  250                                     const XML_Char *systemId,
  251                                     const XML_Char *publicId);
  252 
  253 typedef void (*XML_SkippedEntityHandler) (
  254                                     void *userData,
  255                                     const XML_Char *entityName,
  256                                     int is_parameter_entity);
  257 
  258 typedef struct {
  259   int map[256];
  260   void *data;
  261   int (*convert)(void *data, const char *s);
  262   void (*release)(void *data);
  263 } XML_Encoding;
  264 
  265 typedef int (*XML_UnknownEncodingHandler) (
  266                                     void *encodingHandlerData,
  267                                     const XML_Char *name,
  268                                     XML_Encoding *info);
  269 
  270 #define XML_GetUserData(parser) (*(void **)(parser))
  271 
  272 enum XML_Parsing {
  273   XML_INITIALIZED,
  274   XML_PARSING,
  275   XML_FINISHED,
  276   XML_SUSPENDED
  277 };
  278 
  279 typedef struct {
  280   enum XML_Parsing parsing;
  281   XML_Bool finalBuffer;
  282 } XML_ParsingStatus;
  283 
  284 enum XML_ParamEntityParsing {
  285   XML_PARAM_ENTITY_PARSING_NEVER,
  286   XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE,
  287   XML_PARAM_ENTITY_PARSING_ALWAYS
  288 };
  289 
  290 #define XML_GetErrorLineNumber   XML_GetCurrentLineNumber
  291 #define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
  292 #define XML_GetErrorByteIndex    XML_GetCurrentByteIndex
  293 
  294 typedef struct {
  295   int major;
  296   int minor;
  297   int micro;
  298 } XML_Expat_Version;
  299 
  300 enum XML_FeatureEnum {
  301   XML_FEATURE_END = 0,
  302   XML_FEATURE_UNICODE,
  303   XML_FEATURE_UNICODE_WCHAR_T,
  304   XML_FEATURE_DTD,
  305   XML_FEATURE_CONTEXT_BYTES,
  306   XML_FEATURE_MIN_SIZE,
  307   XML_FEATURE_SIZEOF_XML_CHAR,
  308   XML_FEATURE_SIZEOF_XML_LCHAR,
  309   XML_FEATURE_NS,
  310   XML_FEATURE_LARGE_SIZE,
  311   XML_FEATURE_ATTR_INFO,
  312   XML_FEATURE_BILLION_LAUGHS_ATTACK_PROTECTION_MAXIMUM_AMPLIFICATION_DEFAULT,
  313   XML_FEATURE_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT
  314 };
  315 
  316 typedef struct {
  317   enum XML_FeatureEnum  feature;
  318   const XML_LChar       *name;
  319   long int              value;
  320 } XML_Feature;
  321 
  322 
  323 #define XML_MAJOR_VERSION 2
  324 #define XML_MINOR_VERSION 4
  325 #define XML_MICRO_VERSION 7
  326 
  327 
  328 #pragma pack()
  329 
  330 #ifdef __cplusplus
  331 }
  332 #endif
  333 
  334 /****************************************************************************/
  335 
  336 #endif /* LIBRARIES_EXPAT_H */