1b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd 2b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project See the file COPYING for copying permission. 3b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 4b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 5b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifndef Expat_INCLUDED 6b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define Expat_INCLUDED 1 7b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 8b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifdef __VMS 9b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* 0 1 2 3 0 1 2 3 10b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1234567890123456789012345678901 1234567890123456789012345678901 */ 11b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler 12b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler 13b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler 14b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg 15b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif 16b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 17b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include <stdlib.h> 18b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include "expat_external.h" 19b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 20b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifdef __cplusplus 21b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectextern "C" { 22b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif 23b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 24b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectstruct XML_ParserStruct; 25b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef struct XML_ParserStruct *XML_Parser; 26b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 27b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Should this be defined using stdbool.h when C99 is available? */ 28b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef unsigned char XML_Bool; 29b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TRUE ((XML_Bool) 1) 30b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_FALSE ((XML_Bool) 0) 31b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 32b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The XML_Status enum gives the possible return values for several 33b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project API functions. The preprocessor #defines are included so this 34b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project stanza can be added to code that still needs to support older 35b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project versions of Expat 1.95.x: 36b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 37b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project #ifndef XML_STATUS_OK 38b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project #define XML_STATUS_OK 1 39b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project #define XML_STATUS_ERROR 0 40b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project #endif 41b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 42b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Otherwise, the #define hackery is quite ugly and would have been 43b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project dropped. 44b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 45b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectenum XML_Status { 46b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_STATUS_ERROR = 0, 47b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_STATUS_ERROR XML_STATUS_ERROR 48b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_STATUS_OK = 1, 49b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_STATUS_OK XML_STATUS_OK 50b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_STATUS_SUSPENDED = 2 51b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED 52b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project}; 53b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 54b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectenum XML_Error { 55b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_NONE, 56b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_NO_MEMORY, 57b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_SYNTAX, 58b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_NO_ELEMENTS, 59b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_INVALID_TOKEN, 60b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_UNCLOSED_TOKEN, 61b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_PARTIAL_CHAR, 62b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_TAG_MISMATCH, 63b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_DUPLICATE_ATTRIBUTE, 64b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_JUNK_AFTER_DOC_ELEMENT, 65b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_PARAM_ENTITY_REF, 66b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_UNDEFINED_ENTITY, 67b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_RECURSIVE_ENTITY_REF, 68b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_ASYNC_ENTITY, 69b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_BAD_CHAR_REF, 70b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_BINARY_ENTITY_REF, 71b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, 72b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_MISPLACED_XML_PI, 73b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_UNKNOWN_ENCODING, 74b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_INCORRECT_ENCODING, 75b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_UNCLOSED_CDATA_SECTION, 76b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_EXTERNAL_ENTITY_HANDLING, 77b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_NOT_STANDALONE, 78b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_UNEXPECTED_STATE, 79b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_ENTITY_DECLARED_IN_PE, 80b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_FEATURE_REQUIRES_XML_DTD, 81b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, 82b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project /* Added in 1.95.7. */ 83b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_UNBOUND_PREFIX, 84b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project /* Added in 1.95.8. */ 85b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_UNDECLARING_PREFIX, 86b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_INCOMPLETE_PE, 87b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_XML_DECL, 88b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_TEXT_DECL, 89b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_PUBLICID, 90b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_SUSPENDED, 91b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_NOT_SUSPENDED, 92b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_ABORTED, 93b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_FINISHED, 94b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_SUSPEND_PE, 95b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project /* Added in 2.0. */ 96b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_RESERVED_PREFIX_XML, 97b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_RESERVED_PREFIX_XMLNS, 98b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_RESERVED_NAMESPACE_URI 99b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project}; 100b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 101b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectenum XML_Content_Type { 102b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CTYPE_EMPTY = 1, 103b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CTYPE_ANY, 104b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CTYPE_MIXED, 105b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CTYPE_NAME, 106b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CTYPE_CHOICE, 107b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CTYPE_SEQ 108b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project}; 109b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 110b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectenum XML_Content_Quant { 111b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CQUANT_NONE, 112b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CQUANT_OPT, 113b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CQUANT_REP, 114b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CQUANT_PLUS 115b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project}; 116b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 117b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be 118b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CQUANT_NONE, and the other fields will be zero or NULL. 119b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project If type == XML_CTYPE_MIXED, then quant will be NONE or REP and 120b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project numchildren will contain number of elements that may be mixed in 121b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project and children point to an array of XML_Content cells that will be 122b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project all of XML_CTYPE_NAME type with no quantification. 123b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 124b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project If type == XML_CTYPE_NAME, then the name points to the name, and 125b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the numchildren field will be zero and children will be NULL. The 126b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project quant fields indicates any quantifiers placed on the name. 127b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 128b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project CHOICE and SEQ will have name NULL, the number of children in 129b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project numchildren and children will point, recursively, to an array 130b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project of XML_Content cells. 131b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 132b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The EMPTY, ANY, and MIXED types will only occur at top level. 133b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 134b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 135b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef struct XML_cp XML_Content; 136b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 137b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectstruct XML_cp { 138b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project enum XML_Content_Type type; 139b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project enum XML_Content_Quant quant; 140b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_Char * name; 141b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project unsigned int numchildren; 142b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_Content * children; 143b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project}; 144b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 145b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 146b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is called for an element declaration. See above for 147b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project description of the model argument. It's the caller's responsibility 148b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project to free model when finished with it. 149b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 150b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_ElementDeclHandler) (void *userData, 151b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *name, 152b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_Content *model); 153b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 154b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 155b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetElementDeclHandler(XML_Parser parser, 156b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ElementDeclHandler eldecl); 157b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 158b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The Attlist declaration handler is called for *each* attribute. So 159b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project a single Attlist declaration with multiple attributes declared will 160b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project generate multiple calls to this handler. The "default" parameter 161b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project may be NULL in the case of the "#IMPLIED" or "#REQUIRED" 162b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project keyword. The "isrequired" parameter will be true and the default 163b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project value will be NULL in the case of "#REQUIRED". If "isrequired" is 164b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project true and default is non-NULL, then this is a "#FIXED" default. 165b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 166b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_AttlistDeclHandler) ( 167b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *userData, 168b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *elname, 169b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *attname, 170b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *att_type, 171b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *dflt, 172b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int isrequired); 173b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 174b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 175b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetAttlistDeclHandler(XML_Parser parser, 176b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_AttlistDeclHandler attdecl); 177b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 178b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The XML declaration handler is called for *both* XML declarations 179b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project and text declarations. The way to distinguish is that the version 180b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project parameter will be NULL for text declarations. The encoding 181b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project parameter may be NULL for XML declarations. The standalone 182b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project parameter will be -1, 0, or 1 indicating respectively that there 183b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project was no standalone parameter in the declaration, that it was given 184b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project as no, or that it was given as yes. 185b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 186b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_XmlDeclHandler) (void *userData, 187b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *version, 188b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *encoding, 189b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int standalone); 190b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 191b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 192b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetXmlDeclHandler(XML_Parser parser, 193b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_XmlDeclHandler xmldecl); 194b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 195b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 196b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef struct { 197b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *(*malloc_fcn)(size_t size); 198b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *(*realloc_fcn)(void *ptr, size_t size); 199b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void (*free_fcn)(void *ptr); 200b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} XML_Memory_Handling_Suite; 201b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 202b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Constructs a new parser; encoding is the encoding specified by the 203b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project external protocol or NULL if there is none specified. 204b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 205b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(XML_Parser) 206b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_ParserCreate(const XML_Char *encoding); 207b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 208b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Constructs a new parser and namespace processor. Element type 209b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project names and attribute names that belong to a namespace will be 210b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project expanded; unprefixed attribute names are never expanded; unprefixed 211b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project element type names are expanded only if there is a default 212b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project namespace. The expanded name is the concatenation of the namespace 213b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project URI, the namespace separator character, and the local part of the 214b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project name. If the namespace separator is '\0' then the namespace URI 215b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project and the local part will be concatenated without any separator. 216b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project It is a programming error to use the separator '\0' with namespace 217b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project triplets (see XML_SetReturnNSTriplet). 218b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 219b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(XML_Parser) 220b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); 221b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 222b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 223b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Constructs a new parser using the memory management suite referred to 224b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project by memsuite. If memsuite is NULL, then use the standard library memory 225b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project suite. If namespaceSeparator is non-NULL it creates a parser with 226b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project namespace processing as described above. The character pointed at 227b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project will serve as the namespace separator. 228b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 229b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project All further memory operations used for the created parser will come from 230b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the given suite. 231b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 232b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(XML_Parser) 233b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_ParserCreate_MM(const XML_Char *encoding, 234b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Memory_Handling_Suite *memsuite, 235b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *namespaceSeparator); 236b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 237b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Prepare a parser object to be re-used. This is particularly 238b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project valuable when memory allocation overhead is disproportionatly high, 239b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project such as when a large number of small documnents need to be parsed. 240b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project All handlers are cleared from the parser, except for the 241b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project unknownEncodingHandler. The parser's external state is re-initialized 242b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project except for the values of ns and ns_triplets. 243b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 244b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Added in Expat 1.95.3. 245b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 246b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(XML_Bool) 247b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_ParserReset(XML_Parser parser, const XML_Char *encoding); 248b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 249b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* atts is array of name/value pairs, terminated by 0; 250b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project names and values are 0 terminated. 251b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 252b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_StartElementHandler) (void *userData, 253b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *name, 254b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char **atts); 255b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 256b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_EndElementHandler) (void *userData, 257b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *name); 258b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 259b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 260b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* s is not 0 terminated. */ 261b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_CharacterDataHandler) (void *userData, 262b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *s, 263b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int len); 264b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 265b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* target and data are 0 terminated */ 266b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_ProcessingInstructionHandler) ( 267b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *userData, 268b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *target, 269b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *data); 270b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 271b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* data is 0 terminated */ 272b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_CommentHandler) (void *userData, 273b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *data); 274b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 275b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData); 276b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData); 277b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 278b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is called for any characters in the XML document for which 279b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project there is no applicable handler. This includes both characters that 280b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project are part of markup which is of a kind that is not reported 281b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project (comments, markup declarations), or characters that are part of a 282b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project construct which could be reported but for which no handler has been 283b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project supplied. The characters are passed exactly as they were in the XML 284b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project document except that they will be encoded in UTF-8 or UTF-16. 285b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Line boundaries are not normalized. Note that a byte order mark 286b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project character is not passed to the default handler. There are no 287b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project guarantees about how characters are divided between calls to the 288b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project default handler: for example, a comment might be split between 289b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project multiple calls. 290b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 291b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_DefaultHandler) (void *userData, 292b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *s, 293b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int len); 294b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 295b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is called for the start of the DOCTYPE declaration, before 296b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project any DTD or internal subset is parsed. 297b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 298b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_StartDoctypeDeclHandler) ( 299b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *userData, 300b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *doctypeName, 301b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *sysid, 302b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *pubid, 303b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int has_internal_subset); 304b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 305b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is called for the start of the DOCTYPE declaration when the 306b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project closing > is encountered, but after processing any external 307b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project subset. 308b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 309b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); 310b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 311b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is called for entity declarations. The is_parameter_entity 312b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project argument will be non-zero if the entity is a parameter entity, zero 313b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project otherwise. 314b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 315b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project For internal entities (<!ENTITY foo "bar">), value will 316b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project be non-NULL and systemId, publicID, and notationName will be NULL. 317b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The value string is NOT nul-terminated; the length is provided in 318b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the value_length argument. Since it is legal to have zero-length 319b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project values, do not use this argument to test for internal entities. 320b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 321b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project For external entities, value will be NULL and systemId will be 322b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project non-NULL. The publicId argument will be NULL unless a public 323b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project identifier was provided. The notationName argument will have a 324b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project non-NULL value only for unparsed entity declarations. 325b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 326b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Note that is_parameter_entity can't be changed to XML_Bool, since 327b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project that would break binary compatibility. 328b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 329b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_EntityDeclHandler) ( 330b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *userData, 331b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *entityName, 332b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int is_parameter_entity, 333b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *value, 334b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int value_length, 335b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *base, 336b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *systemId, 337b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *publicId, 338b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *notationName); 339b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 340b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 341b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetEntityDeclHandler(XML_Parser parser, 342b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_EntityDeclHandler handler); 343b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 344b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* OBSOLETE -- OBSOLETE -- OBSOLETE 345b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project This handler has been superceded by the EntityDeclHandler above. 346b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project It is provided here for backward compatibility. 347b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 348b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project This is called for a declaration of an unparsed (NDATA) entity. 349b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The base argument is whatever was set by XML_SetBase. The 350b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project entityName, systemId and notationName arguments will never be 351b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project NULL. The other arguments may be. 352b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 353b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_UnparsedEntityDeclHandler) ( 354b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *userData, 355b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *entityName, 356b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *base, 357b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *systemId, 358b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *publicId, 359b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *notationName); 360b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 361b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is called for a declaration of notation. The base argument is 362b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project whatever was set by XML_SetBase. The notationName will never be 363b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project NULL. The other arguments can be. 364b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 365b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_NotationDeclHandler) ( 366b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *userData, 367b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *notationName, 368b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *base, 369b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *systemId, 370b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *publicId); 371b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 372b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* When namespace processing is enabled, these are called once for 373b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project each namespace declaration. The call to the start and end element 374b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project handlers occur between the calls to the start and end namespace 375b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project declaration handlers. For an xmlns attribute, prefix will be 376b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project NULL. For an xmlns="" attribute, uri will be NULL. 377b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 378b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_StartNamespaceDeclHandler) ( 379b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *userData, 380b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *prefix, 381b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *uri); 382b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 383b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_EndNamespaceDeclHandler) ( 384b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *userData, 385b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *prefix); 386b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 387b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is called if the document is not standalone, that is, it has an 388b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project external subset or a reference to a parameter entity, but does not 389b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project have standalone="yes". If this handler returns XML_STATUS_ERROR, 390b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project then processing will not continue, and the parser will return a 391b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_NOT_STANDALONE error. 392b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project If parameter entity parsing is enabled, then in addition to the 393b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project conditions above this handler will only be called if the referenced 394b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project entity was actually read. 395b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 396b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData); 397b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 398b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is called for a reference to an external parsed general 399b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project entity. The referenced entity is not automatically parsed. The 400b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project application can parse it immediately or later using 401b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ExternalEntityParserCreate. 402b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 403b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The parser argument is the parser parsing the entity containing the 404b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project reference; it can be passed as the parser argument to 405b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ExternalEntityParserCreate. The systemId argument is the 406b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project system identifier as specified in the entity declaration; it will 407b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project not be NULL. 408b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 409b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The base argument is the system identifier that should be used as 410b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the base for resolving systemId if systemId was relative; this is 411b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project set by XML_SetBase; it may be NULL. 412b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 413b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The publicId argument is the public identifier as specified in the 414b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project entity declaration, or NULL if none was specified; the whitespace 415b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project in the public identifier will have been normalized as required by 416b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the XML spec. 417b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 418b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The context argument specifies the parsing context in the format 419b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project expected by the context argument to XML_ExternalEntityParserCreate; 420b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project context is valid only until the handler returns, so if the 421b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project referenced entity is to be parsed later, it must be copied. 422b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project context is NULL only when the entity is a parameter entity. 423b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 424b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The handler should return XML_STATUS_ERROR if processing should not 425b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project continue because of a fatal error in the handling of the external 426b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project entity. In this case the calling parser will return an 427b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_EXTERNAL_ENTITY_HANDLING error. 428b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 429b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Note that unlike other handlers the first argument is the parser, 430b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project not userData. 431b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 432b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef int (XMLCALL *XML_ExternalEntityRefHandler) ( 433b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_Parser parser, 434b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *context, 435b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *base, 436b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *systemId, 437b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *publicId); 438b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 439b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is called in two situations: 440b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1) An entity reference is encountered for which no declaration 441b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project has been read *and* this is not an error. 442b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 2) An internal entity reference is read, but not expanded, because 443b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_SetDefaultHandler has been called. 444b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Note: skipped parameter entities in declarations and skipped general 445b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project entities in attribute values cannot be reported, because 446b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the event would be out of sync with the reporting of the 447b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project declarations or attribute values 448b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 449b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef void (XMLCALL *XML_SkippedEntityHandler) ( 450b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *userData, 451b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *entityName, 452b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int is_parameter_entity); 453b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 454b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This structure is filled in by the XML_UnknownEncodingHandler to 455b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project provide information to the parser about encodings that are unknown 456b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project to the parser. 457b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 458b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The map[b] member gives information about byte sequences whose 459b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project first byte is b. 460b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 461b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project If map[b] is c where c is >= 0, then b by itself encodes the 462b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Unicode scalar value c. 463b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 464b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project If map[b] is -1, then the byte sequence is malformed. 465b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 466b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project If map[b] is -n, where n >= 2, then b is the first byte of an 467b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project n-byte sequence that encodes a single Unicode scalar value. 468b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 469b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The data member will be passed as the first argument to the convert 470b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project function. 471b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 472b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The convert function is used to convert multibyte sequences; s will 473b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project point to a n-byte sequence where map[(unsigned char)*s] == -n. The 474b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project convert function must return the Unicode scalar value represented 475b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project by this byte sequence or -1 if the byte sequence is malformed. 476b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 477b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The convert function may be NULL if the encoding is a single-byte 478b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project encoding, that is if map[b] >= -1 for all bytes b. 479b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 480b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project When the parser is finished with the encoding, then if release is 481b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project not NULL, it will call release passing it the data member; once 482b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project release has been called, the convert function will not be called 483b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project again. 484b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 485b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Expat places certain restrictions on the encodings that are supported 486b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project using this mechanism. 487b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 488b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1. Every ASCII character that can appear in a well-formed XML document, 489b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project other than the characters 490b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 491b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project $@\^`{}~ 492b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 493b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project must be represented by a single byte, and that byte must be the 494b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project same byte that represents that character in ASCII. 495b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 496b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 2. No character may require more than 4 bytes to encode. 497b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 498b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 3. All characters encoded must have Unicode scalar values <= 499b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 0xFFFF, (i.e., characters that would be encoded by surrogates in 500b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project UTF-16 are not allowed). Note that this restriction doesn't 501b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project apply to the built-in support for UTF-8 and UTF-16. 502b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 503b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4. No Unicode character may be encoded by more than one distinct 504b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project sequence of bytes. 505b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 506b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef struct { 507b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int map[256]; 508b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *data; 509b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int (XMLCALL *convert)(void *data, const char *s); 510b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void (XMLCALL *release)(void *data); 511b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} XML_Encoding; 512b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 513b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is called for an encoding that is unknown to the parser. 514b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 515b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The encodingHandlerData argument is that which was passed as the 516b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project second argument to XML_SetUnknownEncodingHandler. 517b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 518b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The name argument gives the name of the encoding as specified in 519b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the encoding declaration. 520b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 521b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project If the callback can provide information about the encoding, it must 522b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fill in the XML_Encoding structure, and return XML_STATUS_OK. 523b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Otherwise it must return XML_STATUS_ERROR. 524b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 525b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project If info does not describe a suitable encoding, then the parser will 526b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return an XML_UNKNOWN_ENCODING error. 527b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 528b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef int (XMLCALL *XML_UnknownEncodingHandler) ( 529b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *encodingHandlerData, 530b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *name, 531b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_Encoding *info); 532b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 533b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 534b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetElementHandler(XML_Parser parser, 535b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_StartElementHandler start, 536b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_EndElementHandler end); 537b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 538b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 539b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetStartElementHandler(XML_Parser parser, 540b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_StartElementHandler handler); 541b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 542b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 543b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetEndElementHandler(XML_Parser parser, 544b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_EndElementHandler handler); 545b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 546b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 547b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetCharacterDataHandler(XML_Parser parser, 548b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CharacterDataHandler handler); 549b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 550b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 551b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetProcessingInstructionHandler(XML_Parser parser, 552b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ProcessingInstructionHandler handler); 553b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 554b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetCommentHandler(XML_Parser parser, 555b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CommentHandler handler); 556b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 557b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 558b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetCdataSectionHandler(XML_Parser parser, 559b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_StartCdataSectionHandler start, 560b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_EndCdataSectionHandler end); 561b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 562b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 563b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetStartCdataSectionHandler(XML_Parser parser, 564b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_StartCdataSectionHandler start); 565b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 566b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 567b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetEndCdataSectionHandler(XML_Parser parser, 568b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_EndCdataSectionHandler end); 569b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 570b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This sets the default handler and also inhibits expansion of 571b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project internal entities. These entity references will be passed to the 572b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project default handler, or to the skipped entity handler, if one is set. 573b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 574b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 575b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetDefaultHandler(XML_Parser parser, 576b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_DefaultHandler handler); 577b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 578b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This sets the default handler but does not inhibit expansion of 579b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project internal entities. The entity reference will not be passed to the 580b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project default handler. 581b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 582b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 583b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetDefaultHandlerExpand(XML_Parser parser, 584b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_DefaultHandler handler); 585b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 586b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 587b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetDoctypeDeclHandler(XML_Parser parser, 588b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_StartDoctypeDeclHandler start, 589b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_EndDoctypeDeclHandler end); 590b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 591b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 592b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetStartDoctypeDeclHandler(XML_Parser parser, 593b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_StartDoctypeDeclHandler start); 594b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 595b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 596b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetEndDoctypeDeclHandler(XML_Parser parser, 597b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_EndDoctypeDeclHandler end); 598b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 599b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 600b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetUnparsedEntityDeclHandler(XML_Parser parser, 601b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_UnparsedEntityDeclHandler handler); 602b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 603b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 604b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetNotationDeclHandler(XML_Parser parser, 605b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_NotationDeclHandler handler); 606b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 607b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 608b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetNamespaceDeclHandler(XML_Parser parser, 609b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_StartNamespaceDeclHandler start, 610b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_EndNamespaceDeclHandler end); 611b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 612b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 613b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetStartNamespaceDeclHandler(XML_Parser parser, 614b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_StartNamespaceDeclHandler start); 615b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 616b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 617b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetEndNamespaceDeclHandler(XML_Parser parser, 618b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_EndNamespaceDeclHandler end); 619b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 620b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 621b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetNotStandaloneHandler(XML_Parser parser, 622b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_NotStandaloneHandler handler); 623b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 624b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 625b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetExternalEntityRefHandler(XML_Parser parser, 626b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ExternalEntityRefHandler handler); 627b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 628b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* If a non-NULL value for arg is specified here, then it will be 629b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project passed as the first argument to the external entity ref handler 630b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project instead of the parser object. 631b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 632b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 633b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetExternalEntityRefHandlerArg(XML_Parser parser, 634b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *arg); 635b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 636b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 637b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetSkippedEntityHandler(XML_Parser parser, 638b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_SkippedEntityHandler handler); 639b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 640b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 641b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetUnknownEncodingHandler(XML_Parser parser, 642b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_UnknownEncodingHandler handler, 643b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project void *encodingHandlerData); 644b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 645b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This can be called within a handler for a start element, end 646b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project element, processing instruction or character data. It causes the 647b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project corresponding markup to be passed to the default handler. 648b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 649b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 650b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_DefaultCurrent(XML_Parser parser); 651b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 652b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* If do_nst is non-zero, and namespace processing is in effect, and 653b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project a name has a prefix (i.e. an explicit namespace qualifier) then 654b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project that name is returned as a triplet in a single string separated by 655b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the separator character specified when the parser was created: URI 656b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project + sep + local_name + sep + prefix. 657b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 658b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project If do_nst is zero, then namespace information is returned in the 659b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project default manner (URI + sep + local_name) whether or not the name 660b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project has a prefix. 661b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 662b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Note: Calling XML_SetReturnNSTriplet after XML_Parse or 663b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ParseBuffer has no effect. 664b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 665b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 666b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 667b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetReturnNSTriplet(XML_Parser parser, int do_nst); 668b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 669b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This value is passed as the userData argument to callbacks. */ 670b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 671b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetUserData(XML_Parser parser, void *userData); 672b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 673b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Returns the last value set by XML_SetUserData or NULL. */ 674b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_GetUserData(parser) (*(void **)(parser)) 675b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 676b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is equivalent to supplying an encoding argument to 677b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ParserCreate. On success XML_SetEncoding returns non-zero, 678b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project zero otherwise. 679b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer 680b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project has no effect and returns XML_STATUS_ERROR. 681b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 682b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(enum XML_Status) 683b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetEncoding(XML_Parser parser, const XML_Char *encoding); 684b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 685b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* If this function is called, then the parser will be passed as the 686b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project first argument to callbacks instead of userData. The userData will 687b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project still be accessible using XML_GetUserData. 688b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 689b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 690b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_UseParserAsHandlerArg(XML_Parser parser); 691b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 692b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* If useDTD == XML_TRUE is passed to this function, then the parser 693b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project will assume that there is an external subset, even if none is 694b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project specified in the document. In such a case the parser will call the 695b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project externalEntityRefHandler with a value of NULL for the systemId 696b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project argument (the publicId and context arguments will be NULL as well). 697b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Note: For the purpose of checking WFC: Entity Declared, passing 698b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project useDTD == XML_TRUE will make the parser behave as if the document 699b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project had a DTD with an external subset. 700b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Note: If this function is called, then this must be done before 701b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the first call to XML_Parse or XML_ParseBuffer, since it will 702b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project have no effect after that. Returns 703b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING. 704b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Note: If the document does not have a DOCTYPE declaration at all, 705b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project then startDoctypeDeclHandler and endDoctypeDeclHandler will not 706b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project be called, despite an external subset being parsed. 707b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Note: If XML_DTD is not defined when Expat is compiled, returns 708b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ERROR_FEATURE_REQUIRES_XML_DTD. 709b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 710b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(enum XML_Error) 711b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); 712b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 713b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 714b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Sets the base to be used for resolving relative URIs in system 715b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project identifiers in declarations. Resolving relative identifiers is 716b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project left to the application: this value will be passed through as the 717b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project base argument to the XML_ExternalEntityRefHandler, 718b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base 719b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project argument will be copied. Returns XML_STATUS_ERROR if out of memory, 720b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_STATUS_OK otherwise. 721b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 722b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(enum XML_Status) 723b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetBase(XML_Parser parser, const XML_Char *base); 724b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 725b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(const XML_Char *) 726b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_GetBase(XML_Parser parser); 727b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 728b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Returns the number of the attribute/value pairs passed in last call 729b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project to the XML_StartElementHandler that were specified in the start-tag 730b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project rather than defaulted. Each attribute/value pair counts as 2; thus 731b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project this correspondds to an index into the atts array passed to the 732b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_StartElementHandler. 733b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 734b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(int) 735b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_GetSpecifiedAttributeCount(XML_Parser parser); 736b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 737b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Returns the index of the ID attribute passed in the last call to 738b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_StartElementHandler, or -1 if there is no ID attribute. Each 739b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project attribute/value pair counts as 2; thus this correspondds to an 740b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project index into the atts array passed to the XML_StartElementHandler. 741b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 742b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(int) 743b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_GetIdAttributeIndex(XML_Parser parser); 744b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 74535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifdef XML_ATTR_INFO 74635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* Source file byte offsets for the start and end of attribute names and values. 74735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes The value indices are exclusive of surrounding quotes; thus in a UTF-8 source 74835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file an attribute value of "blah" will yield: 74935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes info->valueEnd - info->valueStart = 4 bytes. 75035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes*/ 75135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestypedef struct { 75235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XML_Index nameStart; /* Offset to beginning of the attribute name. */ 75335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XML_Index nameEnd; /* Offset after the attribute name's last byte. */ 75435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XML_Index valueStart; /* Offset to beginning of the attribute value. */ 75535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XML_Index valueEnd; /* Offset after the attribute value's last byte. */ 75635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} XML_AttrInfo; 75735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 75835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* Returns an array of XML_AttrInfo structures for the attribute/value pairs 75935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes passed in last call to the XML_StartElementHandler that were specified 76035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes in the start-tag rather than defaulted. Each attribute/value pair counts 76135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes as 1; thus the number of entries in the array is 76235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XML_GetSpecifiedAttributeCount(parser) / 2. 76335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes*/ 76435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesXMLPARSEAPI(const XML_AttrInfo *) 76535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesXML_GetAttributeInfo(XML_Parser parser); 76635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 76735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 768b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is 769b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project detected. The last call to XML_Parse must have isFinal true; len 770b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project may be zero for this call (or any other). 771b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 772b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Though the return values for these functions has always been 773b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project described as a Boolean value, the implementation, at least for the 774b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1.95.x series, has always returned exactly one of the XML_Status 775b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project values. 776b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 777b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(enum XML_Status) 778b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_Parse(XML_Parser parser, const char *s, int len, int isFinal); 779b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 780b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void *) 781b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_GetBuffer(XML_Parser parser, int len); 782b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 783b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(enum XML_Status) 784b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_ParseBuffer(XML_Parser parser, int len, int isFinal); 785b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 786b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return. 787b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Must be called from within a call-back handler, except when aborting 788b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project (resumable = 0) an already suspended parser. Some call-backs may 789b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project still follow because they would otherwise get lost. Examples: 790b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project - endElementHandler() for empty elements when stopped in 791b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project startElementHandler(), 792b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project - endNameSpaceDeclHandler() when stopped in endElementHandler(), 793b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project and possibly others. 794b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 795b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Can be called from most handlers, including DTD related call-backs, 796b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project except when parsing an external parameter entity and resumable != 0. 797b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. 798b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Possible error codes: 799b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project - XML_ERROR_SUSPENDED: when suspending an already suspended parser. 800b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project - XML_ERROR_FINISHED: when the parser has already finished. 801b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE. 802b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 803b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project When resumable != 0 (true) then parsing is suspended, that is, 804b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. 805b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() 806b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. 807b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 808b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *Note*: 809b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project This will be applied to the current parser instance only, that is, if 810b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project there is a parent parser then it will continue parsing when the 811b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project externalEntityRefHandler() returns. It is up to the implementation of 812b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the externalEntityRefHandler() to call XML_StopParser() on the parent 813b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project parser (recursively), if one wants to stop parsing altogether. 814b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 815b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project When suspended, parsing can be resumed by calling XML_ResumeParser(). 816b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 817b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(enum XML_Status) 818b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_StopParser(XML_Parser parser, XML_Bool resumable); 819b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 820b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Resumes parsing after it has been suspended with XML_StopParser(). 821b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Must not be called from within a handler call-back. Returns same 822b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project status codes as XML_Parse() or XML_ParseBuffer(). 823b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Additional error code XML_ERROR_NOT_SUSPENDED possible. 824b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 825b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *Note*: 826b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project This must be called on the most deeply nested child parser instance 827b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project first, and on its parent parser only after the child parser has finished, 828b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project to be applied recursively until the document entity's parser is restarted. 829b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project That is, the parent parser will not resume by itself and it is up to the 830b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project application to call XML_ResumeParser() on it at the appropriate moment. 831b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 832b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(enum XML_Status) 833b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_ResumeParser(XML_Parser parser); 834b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 835b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectenum XML_Parsing { 836b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_INITIALIZED, 837b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_PARSING, 838b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_FINISHED, 839b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_SUSPENDED 840b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project}; 841b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 842b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef struct { 843b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project enum XML_Parsing parsing; 844b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_Bool finalBuffer; 845b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} XML_ParsingStatus; 846b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 847b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Returns status of parser with respect to being initialized, parsing, 848b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project finished, or suspended and processing the final buffer. 849b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus, 850b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED 851b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 852b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 853b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); 854b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 855b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Creates an XML_Parser object that can parse an external general 856b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project entity; context is a '\0'-terminated string specifying the parse 857b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project context; encoding is a '\0'-terminated string giving the name of 858b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the externally specified encoding, or NULL if there is no 859b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project externally specified encoding. The context string consists of a 860b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project sequence of tokens separated by formfeeds (\f); a token consisting 861b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project of a name specifies that the general entity of the name is open; a 862b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project token of the form prefix=uri specifies the namespace for a 863b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project particular prefix; a token of the form =uri specifies the default 864b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project namespace. This can be called at any point after the first call to 865b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project an ExternalEntityRefHandler so longer as the parser has not yet 866b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project been freed. The new parser is completely independent and may 867b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project safely be used in a separate thread. The handlers and userData are 868b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project initialized from the parser argument. Returns NULL if out of memory. 869b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Otherwise returns a new XML_Parser object. 870b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 871b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(XML_Parser) 872b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_ExternalEntityParserCreate(XML_Parser parser, 873b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *context, 874b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_Char *encoding); 875b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 876b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectenum XML_ParamEntityParsing { 877b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_PARAM_ENTITY_PARSING_NEVER, 878b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, 879b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_PARAM_ENTITY_PARSING_ALWAYS 880b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project}; 881b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 882b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Controls parsing of parameter entities (including the external DTD 883b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project subset). If parsing of parameter entities is enabled, then 884b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project references to external parameter entities (including the external 885b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project DTD subset) will be passed to the handler set with 886b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_SetExternalEntityRefHandler. The context passed will be 0. 887b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 888b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Unlike external general entities, external parameter entities can 889b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project only be parsed synchronously. If the external parameter entity is 890b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project to be parsed, it must be parsed during the call to the external 891b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project entity ref handler: the complete sequence of 892b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and 893b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ParserFree calls must be made during this call. After 894b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ExternalEntityParserCreate has been called to create the parser 895b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project for the external parameter entity (context must be 0 for this 896b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project call), it is illegal to make any calls on the old parser until 897b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ParserFree has been called on the newly created parser. 898b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project If the library has been compiled without support for parameter 899b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project entity parsing (ie without XML_DTD being defined), then 900b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_SetParamEntityParsing will return 0 if parsing of parameter 901b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project entities is requested; otherwise it will return non-zero. 902b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Note: If XML_SetParamEntityParsing is called after XML_Parse or 903b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_ParseBuffer, then it has no effect and will always return 0. 904b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 905b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(int) 906b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_SetParamEntityParsing(XML_Parser parser, 907b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project enum XML_ParamEntityParsing parsing); 908b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 90935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* Sets the hash salt to use for internal hash calculations. 91035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes Helps in preventing DoS attacks based on predicting hash 91135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes function behavior. This must be called before parsing is started. 91235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes Returns 1 if successful, 0 when called after parsing has started. 91335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes*/ 91435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesXMLPARSEAPI(int) 91535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesXML_SetHashSalt(XML_Parser parser, 91635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes unsigned long hash_salt); 91735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 918b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then 919b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_GetErrorCode returns information about the error. 920b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 921b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(enum XML_Error) 922b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_GetErrorCode(XML_Parser parser); 923b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 924b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* These functions return information about the current parse 925b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project location. They may be called from any callback called to report 926b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project some parse event; in this case the location is the location of the 927b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project first of the sequence of characters that generated the event. When 928b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project called from callbacks generated by declarations in the document 929b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project prologue, the location identified isn't as neatly defined, but will 930b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project be within the relevant markup. When called outside of the callback 931b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project functions, the position indicated will be just past the last parse 932b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project event (regardless of whether there was an associated callback). 933b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 934b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project They may also be called after returning from a call to XML_Parse 935b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then 936b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the location is the location of the character at which the error 937b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project was detected; otherwise the location is the location of the last 938b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project parse event, as described above. 939b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 940b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); 941b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); 942b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser); 943b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 944b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Return the number of bytes in the current event. 945b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project Returns 0 if the event is in an internal entity. 946b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 947b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(int) 948b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_GetCurrentByteCount(XML_Parser parser); 949b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 950b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets 951b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the integer pointed to by offset to the offset within this buffer 952b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project of the current parse position, and sets the integer pointed to by size 953b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project to the size of this buffer (the number of input bytes). Otherwise 954b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project returns a NULL pointer. Also returns a NULL pointer if a parse isn't 955b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project active. 956b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 957b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project NOTE: The character pointer returned should not be used outside 958b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project the handler that makes the call. 959b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 960b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(const char *) 961b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_GetInputContext(XML_Parser parser, 962b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int *offset, 963b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int *size); 964b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 965b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* For backwards compatibility with previous versions. */ 966b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_GetErrorLineNumber XML_GetCurrentLineNumber 967b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber 968b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_GetErrorByteIndex XML_GetCurrentByteIndex 969b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 970b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Frees the content model passed to the element declaration handler */ 971b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 972b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_FreeContentModel(XML_Parser parser, XML_Content *model); 973b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 974b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Exposing the memory handling functions used in Expat */ 975b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void *) 976b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_MemMalloc(XML_Parser parser, size_t size); 977b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 978b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void *) 979b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_MemRealloc(XML_Parser parser, void *ptr, size_t size); 980b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 981b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 982b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_MemFree(XML_Parser parser, void *ptr); 983b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 984b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Frees memory used by the parser. */ 985b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(void) 986b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_ParserFree(XML_Parser parser); 987b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 988b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Returns a string describing the error. */ 989b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(const XML_LChar *) 990b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_ErrorString(enum XML_Error code); 991b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 992b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Return a string containing the version number of this expat */ 993b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(const XML_LChar *) 994b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_ExpatVersion(void); 995b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 996b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef struct { 997b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int major; 998b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int minor; 999b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int micro; 1000b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} XML_Expat_Version; 1001b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1002b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Return an XML_Expat_Version structure containing numeric version 1003b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project number information for this version of expat. 1004b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 1005b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(XML_Expat_Version) 1006b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_ExpatVersionInfo(void); 1007b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1008b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Added in Expat 1.95.5. */ 1009b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectenum XML_FeatureEnum { 1010b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_FEATURE_END = 0, 1011b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_FEATURE_UNICODE, 1012b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_FEATURE_UNICODE_WCHAR_T, 1013b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_FEATURE_DTD, 1014b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_FEATURE_CONTEXT_BYTES, 1015b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_FEATURE_MIN_SIZE, 1016b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_FEATURE_SIZEOF_XML_CHAR, 1017b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_FEATURE_SIZEOF_XML_LCHAR, 1018d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughes XML_FEATURE_NS, 101935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XML_FEATURE_LARGE_SIZE, 102035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XML_FEATURE_ATTR_INFO 1021b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project /* Additional features must be added to the end of this enum. */ 1022b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project}; 1023b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1024b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef struct { 1025b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project enum XML_FeatureEnum feature; 1026b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const XML_LChar *name; 1027b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project long int value; 1028b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} XML_Feature; 1029b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1030b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXMLPARSEAPI(const XML_Feature *) 1031b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXML_GetFeatureList(void); 1032b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1033b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1034b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Expat follows the GNU/Linux convention of odd number minor version for 1035b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project beta/development releases and even number minor version for stable 1036b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project releases. Micro is bumped with each release, and set to 0 with each 1037b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project change to major or minor version. 1038b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 1039b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_MAJOR_VERSION 2 104035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#define XML_MINOR_VERSION 1 104135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#define XML_MICRO_VERSION 0 1042b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1043b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifdef __cplusplus 1044b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 1045b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif 1046b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1047b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif /* not Expat_INCLUDED */ 1048