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