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 */