11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   See the file COPYING for copying permission.
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef Expat_INCLUDED
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define Expat_INCLUDED 1
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef __VMS
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/*      0        1         2         3      0        1         2         3
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        1234567890123456789012345678901     1234567890123456789012345678901 */
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_SetUnparsedEntityDeclHandler    XML_SetUnparsedEntDeclHandler
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_SetStartNamespaceDeclHandler    XML_SetStartNamespcDeclHandler
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_SetExternalEntityRefHandlerArg  XML_SetExternalEntRefHandlerArg
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <stdlib.h>
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "expat_external.h"
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef __cplusplus
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern "C" {
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct XML_ParserStruct;
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct XML_ParserStruct *XML_Parser;
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Should this be defined using stdbool.h when C99 is available? */
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef unsigned char XML_Bool;
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_TRUE   ((XML_Bool) 1)
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_FALSE  ((XML_Bool) 0)
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* The XML_Status enum gives the possible return values for several
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   API functions.  The preprocessor #defines are included so this
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   stanza can be added to code that still needs to support older
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   versions of Expat 1.95.x:
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   #ifndef XML_STATUS_OK
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   #define XML_STATUS_OK    1
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   #define XML_STATUS_ERROR 0
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   #endif
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Otherwise, the #define hackery is quite ugly and would have been
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   dropped.
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_Status {
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_STATUS_ERROR = 0,
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_STATUS_ERROR XML_STATUS_ERROR
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_STATUS_OK = 1,
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_STATUS_OK XML_STATUS_OK
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_STATUS_SUSPENDED = 2
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_Error {
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_NONE,
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_NO_MEMORY,
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_SYNTAX,
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_NO_ELEMENTS,
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_INVALID_TOKEN,
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_UNCLOSED_TOKEN,
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_PARTIAL_CHAR,
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_TAG_MISMATCH,
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_DUPLICATE_ATTRIBUTE,
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_JUNK_AFTER_DOC_ELEMENT,
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_PARAM_ENTITY_REF,
661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_UNDEFINED_ENTITY,
671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_RECURSIVE_ENTITY_REF,
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_ASYNC_ENTITY,
691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_BAD_CHAR_REF,
701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_BINARY_ENTITY_REF,
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF,
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_MISPLACED_XML_PI,
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_UNKNOWN_ENCODING,
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_INCORRECT_ENCODING,
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_UNCLOSED_CDATA_SECTION,
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_EXTERNAL_ENTITY_HANDLING,
771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_NOT_STANDALONE,
781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_UNEXPECTED_STATE,
791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_ENTITY_DECLARED_IN_PE,
801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_FEATURE_REQUIRES_XML_DTD,
811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING,
821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  /* Added in 1.95.7. */
831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_UNBOUND_PREFIX,
841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  /* Added in 1.95.8. */
851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_UNDECLARING_PREFIX,
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_INCOMPLETE_PE,
871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_XML_DECL,
881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_TEXT_DECL,
891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_PUBLICID,
901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_SUSPENDED,
911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_NOT_SUSPENDED,
921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_ABORTED,
931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_FINISHED,
941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_SUSPEND_PE,
951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  /* Added in 2.0. */
961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_RESERVED_PREFIX_XML,
971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_RESERVED_PREFIX_XMLNS,
981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_ERROR_RESERVED_NAMESPACE_URI
991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_Content_Type {
1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_CTYPE_EMPTY = 1,
1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_CTYPE_ANY,
1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_CTYPE_MIXED,
1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_CTYPE_NAME,
1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_CTYPE_CHOICE,
1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_CTYPE_SEQ
1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_Content_Quant {
1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_CQUANT_NONE,
1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_CQUANT_OPT,
1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_CQUANT_REP,
1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_CQUANT_PLUS
1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be
1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_CQUANT_NONE, and the other fields will be zero or NULL.
1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   If type == XML_CTYPE_MIXED, then quant will be NONE or REP and
1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   numchildren will contain number of elements that may be mixed in
1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   and children point to an array of XML_Content cells that will be
1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   all of XML_CTYPE_NAME type with no quantification.
1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   If type == XML_CTYPE_NAME, then the name points to the name, and
1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the numchildren field will be zero and children will be NULL. The
1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   quant fields indicates any quantifiers placed on the name.
1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   CHOICE and SEQ will have name NULL, the number of children in
1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   numchildren and children will point, recursively, to an array
1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   of XML_Content cells.
1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The EMPTY, ANY, and MIXED types will only occur at top level.
1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct XML_cp XML_Content;
1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct XML_cp {
1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  enum XML_Content_Type         type;
1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  enum XML_Content_Quant        quant;
1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_Char *                    name;
1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  unsigned int                  numchildren;
1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_Content *                 children;
1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for an element declaration. See above for
1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   description of the model argument. It's the caller's responsibility
1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   to free model when finished with it.
1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_ElementDeclHandler) (void *userData,
1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                                const XML_Char *name,
1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                                XML_Content *model);
1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetElementDeclHandler(XML_Parser parser,
1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                          XML_ElementDeclHandler eldecl);
1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* The Attlist declaration handler is called for *each* attribute. So
1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   a single Attlist declaration with multiple attributes declared will
1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   generate multiple calls to this handler. The "default" parameter
1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   may be NULL in the case of the "#IMPLIED" or "#REQUIRED"
1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   keyword. The "isrequired" parameter will be true and the default
1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   value will be NULL in the case of "#REQUIRED". If "isrequired" is
1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   true and default is non-NULL, then this is a "#FIXED" default.
1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_AttlistDeclHandler) (
1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    void            *userData,
1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char  *elname,
1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char  *attname,
1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char  *att_type,
1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char  *dflt,
1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    int              isrequired);
1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetAttlistDeclHandler(XML_Parser parser,
1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                          XML_AttlistDeclHandler attdecl);
1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* The XML declaration handler is called for *both* XML declarations
1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   and text declarations. The way to distinguish is that the version
1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   parameter will be NULL for text declarations. The encoding
1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   parameter may be NULL for XML declarations. The standalone
1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   parameter will be -1, 0, or 1 indicating respectively that there
1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   was no standalone parameter in the declaration, that it was given
1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   as no, or that it was given as yes.
1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_XmlDeclHandler) (void           *userData,
1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                            const XML_Char *version,
1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                            const XML_Char *encoding,
1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                            int             standalone);
1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetXmlDeclHandler(XML_Parser parser,
1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                      XML_XmlDeclHandler xmldecl);
1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct {
1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void *(*malloc_fcn)(size_t size);
1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void *(*realloc_fcn)(void *ptr, size_t size);
1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void (*free_fcn)(void *ptr);
2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_Memory_Handling_Suite;
2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Constructs a new parser; encoding is the encoding specified by the
2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   external protocol or NULL if there is none specified.
2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Parser)
2061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParserCreate(const XML_Char *encoding);
2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Constructs a new parser and namespace processor.  Element type
2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   names and attribute names that belong to a namespace will be
2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   expanded; unprefixed attribute names are never expanded; unprefixed
2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   element type names are expanded only if there is a default
2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   namespace. The expanded name is the concatenation of the namespace
2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   URI, the namespace separator character, and the local part of the
2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   name.  If the namespace separator is '\0' then the namespace URI
2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   and the local part will be concatenated without any separator.
2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   It is a programming error to use the separator '\0' with namespace
2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   triplets (see XML_SetReturnNSTriplet).
2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Parser)
2201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Constructs a new parser using the memory management suite referred to
2241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   by memsuite. If memsuite is NULL, then use the standard library memory
2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   suite. If namespaceSeparator is non-NULL it creates a parser with
2261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   namespace processing as described above. The character pointed at
2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   will serve as the namespace separator.
2281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   All further memory operations used for the created parser will come from
2301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the given suite.
2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
2321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Parser)
2331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParserCreate_MM(const XML_Char *encoding,
2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                    const XML_Memory_Handling_Suite *memsuite,
2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                    const XML_Char *namespaceSeparator);
2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Prepare a parser object to be re-used.  This is particularly
2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   valuable when memory allocation overhead is disproportionatly high,
2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   such as when a large number of small documnents need to be parsed.
2401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   All handlers are cleared from the parser, except for the
2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   unknownEncodingHandler. The parser's external state is re-initialized
2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   except for the values of ns and ns_triplets.
2431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Added in Expat 1.95.3.
2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
2461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Bool)
2471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParserReset(XML_Parser parser, const XML_Char *encoding);
2481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* atts is array of name/value pairs, terminated by 0;
2501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   names and values are 0 terminated.
2511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
2521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_StartElementHandler) (void *userData,
2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                                 const XML_Char *name,
2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                                 const XML_Char **atts);
2551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_EndElementHandler) (void *userData,
2571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                               const XML_Char *name);
2581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* s is not 0 terminated. */
2611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_CharacterDataHandler) (void *userData,
2621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                                  const XML_Char *s,
2631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                                  int len);
2641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* target and data are 0 terminated */
2661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_ProcessingInstructionHandler) (
2671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                                void *userData,
2681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                                const XML_Char *target,
2691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                                const XML_Char *data);
2701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* data is 0 terminated */
2721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_CommentHandler) (void *userData,
2731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                            const XML_Char *data);
2741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData);
2761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData);
2771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for any characters in the XML document for which
2791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   there is no applicable handler.  This includes both characters that
2801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   are part of markup which is of a kind that is not reported
2811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   (comments, markup declarations), or characters that are part of a
2821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   construct which could be reported but for which no handler has been
2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   supplied. The characters are passed exactly as they were in the XML
2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   document except that they will be encoded in UTF-8 or UTF-16.
2851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Line boundaries are not normalized. Note that a byte order mark
2861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   character is not passed to the default handler. There are no
2871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   guarantees about how characters are divided between calls to the
2881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   default handler: for example, a comment might be split between
2891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   multiple calls.
2901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
2911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_DefaultHandler) (void *userData,
2921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                            const XML_Char *s,
2931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                            int len);
2941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for the start of the DOCTYPE declaration, before
2961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   any DTD or internal subset is parsed.
2971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
2981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_StartDoctypeDeclHandler) (
2991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                            void *userData,
3001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                            const XML_Char *doctypeName,
3011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                            const XML_Char *sysid,
3021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                            const XML_Char *pubid,
3031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                            int has_internal_subset);
3041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for the start of the DOCTYPE declaration when the
3061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   closing > is encountered, but after processing any external
3071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   subset.
3081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
3091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
3101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for entity declarations. The is_parameter_entity
3121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   argument will be non-zero if the entity is a parameter entity, zero
3131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   otherwise.
3141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   For internal entities (<!ENTITY foo "bar">), value will
3161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   be non-NULL and systemId, publicID, and notationName will be NULL.
3171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The value string is NOT nul-terminated; the length is provided in
3181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the value_length argument. Since it is legal to have zero-length
3191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   values, do not use this argument to test for internal entities.
3201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   For external entities, value will be NULL and systemId will be
3221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   non-NULL. The publicId argument will be NULL unless a public
3231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   identifier was provided. The notationName argument will have a
3241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   non-NULL value only for unparsed entity declarations.
3251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Note that is_parameter_entity can't be changed to XML_Bool, since
3271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   that would break binary compatibility.
3281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
3291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_EntityDeclHandler) (
3301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              void *userData,
3311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              const XML_Char *entityName,
3321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              int is_parameter_entity,
3331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              const XML_Char *value,
3341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              int value_length,
3351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              const XML_Char *base,
3361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              const XML_Char *systemId,
3371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              const XML_Char *publicId,
3381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              const XML_Char *notationName);
3391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
3411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEntityDeclHandler(XML_Parser parser,
3421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                         XML_EntityDeclHandler handler);
3431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* OBSOLETE -- OBSOLETE -- OBSOLETE
3451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   This handler has been superceded by the EntityDeclHandler above.
3461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   It is provided here for backward compatibility.
3471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   This is called for a declaration of an unparsed (NDATA) entity.
3491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The base argument is whatever was set by XML_SetBase. The
3501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   entityName, systemId and notationName arguments will never be
3511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   NULL. The other arguments may be.
3521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
3531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_UnparsedEntityDeclHandler) (
3541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    void *userData,
3551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *entityName,
3561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *base,
3571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *systemId,
3581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *publicId,
3591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *notationName);
3601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for a declaration of notation.  The base argument is
3621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   whatever was set by XML_SetBase. The notationName will never be
3631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   NULL.  The other arguments can be.
3641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
3651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_NotationDeclHandler) (
3661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    void *userData,
3671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *notationName,
3681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *base,
3691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *systemId,
3701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *publicId);
3711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* When namespace processing is enabled, these are called once for
3731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   each namespace declaration. The call to the start and end element
3741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   handlers occur between the calls to the start and end namespace
3751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   declaration handlers. For an xmlns attribute, prefix will be
3761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   NULL.  For an xmlns="" attribute, uri will be NULL.
3771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
3781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_StartNamespaceDeclHandler) (
3791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    void *userData,
3801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *prefix,
3811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *uri);
3821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_EndNamespaceDeclHandler) (
3841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    void *userData,
3851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *prefix);
3861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called if the document is not standalone, that is, it has an
3881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   external subset or a reference to a parameter entity, but does not
3891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   have standalone="yes". If this handler returns XML_STATUS_ERROR,
3901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   then processing will not continue, and the parser will return a
3911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_ERROR_NOT_STANDALONE error.
3921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   If parameter entity parsing is enabled, then in addition to the
3931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   conditions above this handler will only be called if the referenced
3941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   entity was actually read.
3951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
3961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData);
3971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for a reference to an external parsed general
3991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   entity.  The referenced entity is not automatically parsed.  The
4001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   application can parse it immediately or later using
4011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_ExternalEntityParserCreate.
4021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The parser argument is the parser parsing the entity containing the
4041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   reference; it can be passed as the parser argument to
4051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_ExternalEntityParserCreate.  The systemId argument is the
4061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   system identifier as specified in the entity declaration; it will
4071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   not be NULL.
4081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The base argument is the system identifier that should be used as
4101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the base for resolving systemId if systemId was relative; this is
4111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   set by XML_SetBase; it may be NULL.
4121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The publicId argument is the public identifier as specified in the
4141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   entity declaration, or NULL if none was specified; the whitespace
4151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   in the public identifier will have been normalized as required by
4161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the XML spec.
4171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The context argument specifies the parsing context in the format
4191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   expected by the context argument to XML_ExternalEntityParserCreate;
4201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   context is valid only until the handler returns, so if the
4211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   referenced entity is to be parsed later, it must be copied.
4221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   context is NULL only when the entity is a parameter entity.
4231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The handler should return XML_STATUS_ERROR if processing should not
4251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   continue because of a fatal error in the handling of the external
4261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   entity.  In this case the calling parser will return an
4271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_ERROR_EXTERNAL_ENTITY_HANDLING error.
4281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Note that unlike other handlers the first argument is the parser,
4301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   not userData.
4311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
4321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef int (XMLCALL *XML_ExternalEntityRefHandler) (
4331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    XML_Parser parser,
4341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *context,
4351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *base,
4361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *systemId,
4371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *publicId);
4381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called in two situations:
4401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   1) An entity reference is encountered for which no declaration
4411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      has been read *and* this is not an error.
4421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   2) An internal entity reference is read, but not expanded, because
4431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      XML_SetDefaultHandler has been called.
4441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Note: skipped parameter entities in declarations and skipped general
4451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci         entities in attribute values cannot be reported, because
4461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci         the event would be out of sync with the reporting of the
4471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci         declarations or attribute values
4481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
4491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_SkippedEntityHandler) (
4501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    void *userData,
4511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *entityName,
4521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    int is_parameter_entity);
4531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This structure is filled in by the XML_UnknownEncodingHandler to
4551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   provide information to the parser about encodings that are unknown
4561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   to the parser.
4571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The map[b] member gives information about byte sequences whose
4591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   first byte is b.
4601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   If map[b] is c where c is >= 0, then b by itself encodes the
4621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Unicode scalar value c.
4631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   If map[b] is -1, then the byte sequence is malformed.
4651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   If map[b] is -n, where n >= 2, then b is the first byte of an
4671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   n-byte sequence that encodes a single Unicode scalar value.
4681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The data member will be passed as the first argument to the convert
4701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   function.
4711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The convert function is used to convert multibyte sequences; s will
4731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   point to a n-byte sequence where map[(unsigned char)*s] == -n.  The
4741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   convert function must return the Unicode scalar value represented
4751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   by this byte sequence or -1 if the byte sequence is malformed.
4761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The convert function may be NULL if the encoding is a single-byte
4781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   encoding, that is if map[b] >= -1 for all bytes b.
4791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   When the parser is finished with the encoding, then if release is
4811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   not NULL, it will call release passing it the data member; once
4821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   release has been called, the convert function will not be called
4831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   again.
4841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Expat places certain restrictions on the encodings that are supported
4861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   using this mechanism.
4871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   1. Every ASCII character that can appear in a well-formed XML document,
4891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      other than the characters
4901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      $@\^`{}~
4921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      must be represented by a single byte, and that byte must be the
4941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      same byte that represents that character in ASCII.
4951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   2. No character may require more than 4 bytes to encode.
4971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   3. All characters encoded must have Unicode scalar values <=
4991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      0xFFFF, (i.e., characters that would be encoded by surrogates in
5001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      UTF-16 are  not allowed).  Note that this restriction doesn't
5011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      apply to the built-in support for UTF-8 and UTF-16.
5021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   4. No Unicode character may be encoded by more than one distinct
5041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      sequence of bytes.
5051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
5061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct {
5071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  int map[256];
5081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void *data;
5091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  int (XMLCALL *convert)(void *data, const char *s);
5101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void (XMLCALL *release)(void *data);
5111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_Encoding;
5121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for an encoding that is unknown to the parser.
5141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The encodingHandlerData argument is that which was passed as the
5161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   second argument to XML_SetUnknownEncodingHandler.
5171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The name argument gives the name of the encoding as specified in
5191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the encoding declaration.
5201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   If the callback can provide information about the encoding, it must
5221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   fill in the XML_Encoding structure, and return XML_STATUS_OK.
5231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Otherwise it must return XML_STATUS_ERROR.
5241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   If info does not describe a suitable encoding, then the parser will
5261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   return an XML_UNKNOWN_ENCODING error.
5271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
5281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef int (XMLCALL *XML_UnknownEncodingHandler) (
5291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    void *encodingHandlerData,
5301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    const XML_Char *name,
5311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    XML_Encoding *info);
5321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetElementHandler(XML_Parser parser,
5351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                      XML_StartElementHandler start,
5361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                      XML_EndElementHandler end);
5371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetStartElementHandler(XML_Parser parser,
5401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                           XML_StartElementHandler handler);
5411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEndElementHandler(XML_Parser parser,
5441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                         XML_EndElementHandler handler);
5451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetCharacterDataHandler(XML_Parser parser,
5481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                            XML_CharacterDataHandler handler);
5491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetProcessingInstructionHandler(XML_Parser parser,
5521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    XML_ProcessingInstructionHandler handler);
5531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetCommentHandler(XML_Parser parser,
5551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                      XML_CommentHandler handler);
5561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetCdataSectionHandler(XML_Parser parser,
5591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                           XML_StartCdataSectionHandler start,
5601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                           XML_EndCdataSectionHandler end);
5611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetStartCdataSectionHandler(XML_Parser parser,
5641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                XML_StartCdataSectionHandler start);
5651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEndCdataSectionHandler(XML_Parser parser,
5681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              XML_EndCdataSectionHandler end);
5691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This sets the default handler and also inhibits expansion of
5711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   internal entities. These entity references will be passed to the
5721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   default handler, or to the skipped entity handler, if one is set.
5731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
5741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetDefaultHandler(XML_Parser parser,
5761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                      XML_DefaultHandler handler);
5771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This sets the default handler but does not inhibit expansion of
5791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   internal entities.  The entity reference will not be passed to the
5801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   default handler.
5811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
5821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetDefaultHandlerExpand(XML_Parser parser,
5841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                            XML_DefaultHandler handler);
5851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetDoctypeDeclHandler(XML_Parser parser,
5881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                          XML_StartDoctypeDeclHandler start,
5891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                          XML_EndDoctypeDeclHandler end);
5901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetStartDoctypeDeclHandler(XML_Parser parser,
5931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                               XML_StartDoctypeDeclHandler start);
5941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
5961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEndDoctypeDeclHandler(XML_Parser parser,
5971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                             XML_EndDoctypeDeclHandler end);
5981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetUnparsedEntityDeclHandler(XML_Parser parser,
6011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                 XML_UnparsedEntityDeclHandler handler);
6021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetNotationDeclHandler(XML_Parser parser,
6051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                           XML_NotationDeclHandler handler);
6061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetNamespaceDeclHandler(XML_Parser parser,
6091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                            XML_StartNamespaceDeclHandler start,
6101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                            XML_EndNamespaceDeclHandler end);
6111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetStartNamespaceDeclHandler(XML_Parser parser,
6141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                 XML_StartNamespaceDeclHandler start);
6151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEndNamespaceDeclHandler(XML_Parser parser,
6181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                               XML_EndNamespaceDeclHandler end);
6191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetNotStandaloneHandler(XML_Parser parser,
6221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                            XML_NotStandaloneHandler handler);
6231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetExternalEntityRefHandler(XML_Parser parser,
6261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                XML_ExternalEntityRefHandler handler);
6271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If a non-NULL value for arg is specified here, then it will be
6291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   passed as the first argument to the external entity ref handler
6301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   instead of the parser object.
6311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
6321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetExternalEntityRefHandlerArg(XML_Parser parser,
6341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                   void *arg);
6351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetSkippedEntityHandler(XML_Parser parser,
6381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                            XML_SkippedEntityHandler handler);
6391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetUnknownEncodingHandler(XML_Parser parser,
6421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              XML_UnknownEncodingHandler handler,
6431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                              void *encodingHandlerData);
6441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This can be called within a handler for a start element, end
6461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   element, processing instruction or character data.  It causes the
6471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   corresponding markup to be passed to the default handler.
6481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
6491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_DefaultCurrent(XML_Parser parser);
6511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If do_nst is non-zero, and namespace processing is in effect, and
6531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   a name has a prefix (i.e. an explicit namespace qualifier) then
6541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   that name is returned as a triplet in a single string separated by
6551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the separator character specified when the parser was created: URI
6561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   + sep + local_name + sep + prefix.
6571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   If do_nst is zero, then namespace information is returned in the
6591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   default manner (URI + sep + local_name) whether or not the name
6601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   has a prefix.
6611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Note: Calling XML_SetReturnNSTriplet after XML_Parse or
6631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     XML_ParseBuffer has no effect.
6641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
6651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetReturnNSTriplet(XML_Parser parser, int do_nst);
6681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This value is passed as the userData argument to callbacks. */
6701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetUserData(XML_Parser parser, void *userData);
6721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns the last value set by XML_SetUserData or NULL. */
6741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_GetUserData(parser) (*(void **)(parser))
6751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is equivalent to supplying an encoding argument to
6771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_ParserCreate. On success XML_SetEncoding returns non-zero,
6781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   zero otherwise.
6791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer
6801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     has no effect and returns XML_STATUS_ERROR.
6811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
6821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status)
6831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
6841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If this function is called, then the parser will be passed as the
6861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   first argument to callbacks instead of userData.  The userData will
6871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   still be accessible using XML_GetUserData.
6881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
6891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
6901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_UseParserAsHandlerArg(XML_Parser parser);
6911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
6921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If useDTD == XML_TRUE is passed to this function, then the parser
6931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   will assume that there is an external subset, even if none is
6941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   specified in the document. In such a case the parser will call the
6951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   externalEntityRefHandler with a value of NULL for the systemId
6961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   argument (the publicId and context arguments will be NULL as well).
6971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Note: For the purpose of checking WFC: Entity Declared, passing
6981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     useDTD == XML_TRUE will make the parser behave as if the document
6991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     had a DTD with an external subset.
7001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Note: If this function is called, then this must be done before
7011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     the first call to XML_Parse or XML_ParseBuffer, since it will
7021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     have no effect after that.  Returns
7031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING.
7041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Note: If the document does not have a DOCTYPE declaration at all,
7051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     then startDoctypeDeclHandler and endDoctypeDeclHandler will not
7061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     be called, despite an external subset being parsed.
7071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Note: If XML_DTD is not defined when Expat is compiled, returns
7081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     XML_ERROR_FEATURE_REQUIRES_XML_DTD.
7091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
7101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Error)
7111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
7121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Sets the base to be used for resolving relative URIs in system
7151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   identifiers in declarations.  Resolving relative identifiers is
7161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   left to the application: this value will be passed through as the
7171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   base argument to the XML_ExternalEntityRefHandler,
7181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base
7191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   argument will be copied.  Returns XML_STATUS_ERROR if out of memory,
7201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_STATUS_OK otherwise.
7211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
7221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status)
7231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetBase(XML_Parser parser, const XML_Char *base);
7241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const XML_Char *)
7261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetBase(XML_Parser parser);
7271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns the number of the attribute/value pairs passed in last call
7291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   to the XML_StartElementHandler that were specified in the start-tag
7301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   rather than defaulted. Each attribute/value pair counts as 2; thus
7311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   this correspondds to an index into the atts array passed to the
7321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_StartElementHandler.
7331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
7341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(int)
7351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetSpecifiedAttributeCount(XML_Parser parser);
7361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns the index of the ID attribute passed in the last call to
7381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_StartElementHandler, or -1 if there is no ID attribute.  Each
7391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   attribute/value pair counts as 2; thus this correspondds to an
7401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   index into the atts array passed to the XML_StartElementHandler.
7411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
7421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(int)
7431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetIdAttributeIndex(XML_Parser parser);
7441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef XML_ATTR_INFO
7461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Source file byte offsets for the start and end of attribute names and values.
7471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   The value indices are exclusive of surrounding quotes; thus in a UTF-8 source
7481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   file an attribute value of "blah" will yield:
7491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   info->valueEnd - info->valueStart = 4 bytes.
7501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
7511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct {
7521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_Index  nameStart;  /* Offset to beginning of the attribute name. */
7531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_Index  nameEnd;    /* Offset after the attribute name's last byte. */
7541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_Index  valueStart; /* Offset to beginning of the attribute value. */
7551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_Index  valueEnd;   /* Offset after the attribute value's last byte. */
7561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_AttrInfo;
7571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns an array of XML_AttrInfo structures for the attribute/value pairs
7591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   passed in last call to the XML_StartElementHandler that were specified
7601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   in the start-tag rather than defaulted. Each attribute/value pair counts
7611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   as 1; thus the number of entries in the array is
7621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_GetSpecifiedAttributeCount(parser) / 2.
7631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
7641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const XML_AttrInfo *)
7651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetAttributeInfo(XML_Parser parser);
7661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
7671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is
7691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   detected.  The last call to XML_Parse must have isFinal true; len
7701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   may be zero for this call (or any other).
7711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Though the return values for these functions has always been
7731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   described as a Boolean value, the implementation, at least for the
7741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   1.95.x series, has always returned exactly one of the XML_Status
7751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   values.
7761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
7771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status)
7781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_Parse(XML_Parser parser, const char *s, int len, int isFinal);
7791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void *)
7811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetBuffer(XML_Parser parser, int len);
7821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status)
7841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParseBuffer(XML_Parser parser, int len, int isFinal);
7851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return.
7871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Must be called from within a call-back handler, except when aborting
7881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   (resumable = 0) an already suspended parser. Some call-backs may
7891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   still follow because they would otherwise get lost. Examples:
7901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   - endElementHandler() for empty elements when stopped in
7911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     startElementHandler(),
7921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   - endNameSpaceDeclHandler() when stopped in endElementHandler(),
7931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   and possibly others.
7941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
7951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Can be called from most handlers, including DTD related call-backs,
7961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   except when parsing an external parameter entity and resumable != 0.
7971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise.
7981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Possible error codes:
7991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   - XML_ERROR_SUSPENDED: when suspending an already suspended parser.
8001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   - XML_ERROR_FINISHED: when the parser has already finished.
8011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE.
8021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   When resumable != 0 (true) then parsing is suspended, that is,
8041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED.
8051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer()
8061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   return XML_STATUS_ERROR with error code XML_ERROR_ABORTED.
8071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   *Note*:
8091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   This will be applied to the current parser instance only, that is, if
8101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   there is a parent parser then it will continue parsing when the
8111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   externalEntityRefHandler() returns. It is up to the implementation of
8121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the externalEntityRefHandler() to call XML_StopParser() on the parent
8131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   parser (recursively), if one wants to stop parsing altogether.
8141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   When suspended, parsing can be resumed by calling XML_ResumeParser().
8161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
8171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status)
8181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_StopParser(XML_Parser parser, XML_Bool resumable);
8191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Resumes parsing after it has been suspended with XML_StopParser().
8211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Must not be called from within a handler call-back. Returns same
8221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   status codes as XML_Parse() or XML_ParseBuffer().
8231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Additional error code XML_ERROR_NOT_SUSPENDED possible.
8241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   *Note*:
8261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   This must be called on the most deeply nested child parser instance
8271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   first, and on its parent parser only after the child parser has finished,
8281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   to be applied recursively until the document entity's parser is restarted.
8291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   That is, the parent parser will not resume by itself and it is up to the
8301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   application to call XML_ResumeParser() on it at the appropriate moment.
8311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
8321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status)
8331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ResumeParser(XML_Parser parser);
8341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_Parsing {
8361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_INITIALIZED,
8371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_PARSING,
8381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FINISHED,
8391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_SUSPENDED
8401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
8411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct {
8431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  enum XML_Parsing parsing;
8441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_Bool finalBuffer;
8451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_ParsingStatus;
8461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns status of parser with respect to being initialized, parsing,
8481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   finished, or suspended and processing the final buffer.
8491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus,
8501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED
8511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
8521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
8531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status);
8541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Creates an XML_Parser object that can parse an external general
8561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   entity; context is a '\0'-terminated string specifying the parse
8571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   context; encoding is a '\0'-terminated string giving the name of
8581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the externally specified encoding, or NULL if there is no
8591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   externally specified encoding.  The context string consists of a
8601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   sequence of tokens separated by formfeeds (\f); a token consisting
8611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   of a name specifies that the general entity of the name is open; a
8621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   token of the form prefix=uri specifies the namespace for a
8631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   particular prefix; a token of the form =uri specifies the default
8641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   namespace.  This can be called at any point after the first call to
8651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   an ExternalEntityRefHandler so longer as the parser has not yet
8661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   been freed.  The new parser is completely independent and may
8671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   safely be used in a separate thread.  The handlers and userData are
8681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   initialized from the parser argument.  Returns NULL if out of memory.
8691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Otherwise returns a new XML_Parser object.
8701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
8711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Parser)
8721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ExternalEntityParserCreate(XML_Parser parser,
8731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                               const XML_Char *context,
8741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                               const XML_Char *encoding);
8751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_ParamEntityParsing {
8771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_PARAM_ENTITY_PARSING_NEVER,
8781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE,
8791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_PARAM_ENTITY_PARSING_ALWAYS
8801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
8811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Controls parsing of parameter entities (including the external DTD
8831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   subset). If parsing of parameter entities is enabled, then
8841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   references to external parameter entities (including the external
8851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   DTD subset) will be passed to the handler set with
8861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_SetExternalEntityRefHandler.  The context passed will be 0.
8871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
8881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Unlike external general entities, external parameter entities can
8891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   only be parsed synchronously.  If the external parameter entity is
8901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   to be parsed, it must be parsed during the call to the external
8911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   entity ref handler: the complete sequence of
8921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and
8931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_ParserFree calls must be made during this call.  After
8941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_ExternalEntityParserCreate has been called to create the parser
8951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   for the external parameter entity (context must be 0 for this
8961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   call), it is illegal to make any calls on the old parser until
8971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_ParserFree has been called on the newly created parser.
8981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   If the library has been compiled without support for parameter
8991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   entity parsing (ie without XML_DTD being defined), then
9001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_SetParamEntityParsing will return 0 if parsing of parameter
9011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   entities is requested; otherwise it will return non-zero.
9021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Note: If XML_SetParamEntityParsing is called after XML_Parse or
9031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      XML_ParseBuffer, then it has no effect and will always return 0.
9041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
9051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(int)
9061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetParamEntityParsing(XML_Parser parser,
9071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                          enum XML_ParamEntityParsing parsing);
9081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Sets the hash salt to use for internal hash calculations.
9101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Helps in preventing DoS attacks based on predicting hash
9111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   function behavior. This must be called before parsing is started.
9121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Returns 1 if successful, 0 when called after parsing has started.
9131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
9141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(int)
9151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetHashSalt(XML_Parser parser,
9161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                unsigned long hash_salt);
9171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
9191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   XML_GetErrorCode returns information about the error.
9201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
9211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Error)
9221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetErrorCode(XML_Parser parser);
9231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* These functions return information about the current parse
9251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   location.  They may be called from any callback called to report
9261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   some parse event; in this case the location is the location of the
9271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   first of the sequence of characters that generated the event.  When
9281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   called from callbacks generated by declarations in the document
9291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   prologue, the location identified isn't as neatly defined, but will
9301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   be within the relevant markup.  When called outside of the callback
9311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   functions, the position indicated will be just past the last parse
9321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   event (regardless of whether there was an associated callback).
9331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   They may also be called after returning from a call to XML_Parse
9351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   or XML_ParseBuffer.  If the return value is XML_STATUS_ERROR then
9361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the location is the location of the character at which the error
9371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   was detected; otherwise the location is the location of the last
9381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   parse event, as described above.
9391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
9401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser);
9411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser);
9421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser);
9431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Return the number of bytes in the current event.
9451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   Returns 0 if the event is in an internal entity.
9461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
9471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(int)
9481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetCurrentByteCount(XML_Parser parser);
9491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets
9511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the integer pointed to by offset to the offset within this buffer
9521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   of the current parse position, and sets the integer pointed to by size
9531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   to the size of this buffer (the number of input bytes). Otherwise
9541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   returns a NULL pointer. Also returns a NULL pointer if a parse isn't
9551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   active.
9561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   NOTE: The character pointer returned should not be used outside
9581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   the handler that makes the call.
9591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
9601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const char *)
9611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetInputContext(XML_Parser parser,
9621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                    int *offset,
9631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                    int *size);
9641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* For backwards compatibility with previous versions. */
9661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_GetErrorLineNumber   XML_GetCurrentLineNumber
9671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
9681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_GetErrorByteIndex    XML_GetCurrentByteIndex
9691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Frees the content model passed to the element declaration handler */
9711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
9721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_FreeContentModel(XML_Parser parser, XML_Content *model);
9731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Exposing the memory handling functions used in Expat */
9751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void *)
9761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_MemMalloc(XML_Parser parser, size_t size);
9771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void *)
9791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
9801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
9821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_MemFree(XML_Parser parser, void *ptr);
9831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Frees memory used by the parser. */
9851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void)
9861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParserFree(XML_Parser parser);
9871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns a string describing the error. */
9891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const XML_LChar *)
9901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ErrorString(enum XML_Error code);
9911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Return a string containing the version number of this expat */
9931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const XML_LChar *)
9941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ExpatVersion(void);
9951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct {
9971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  int major;
9981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  int minor;
9991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  int micro;
10001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_Expat_Version;
10011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
10021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Return an XML_Expat_Version structure containing numeric version
10031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   number information for this version of expat.
10041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
10051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Expat_Version)
10061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ExpatVersionInfo(void);
10071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
10081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Added in Expat 1.95.5. */
10091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_FeatureEnum {
10101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FEATURE_END = 0,
10111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FEATURE_UNICODE,
10121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FEATURE_UNICODE_WCHAR_T,
10131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FEATURE_DTD,
10141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FEATURE_CONTEXT_BYTES,
10151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FEATURE_MIN_SIZE,
10161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FEATURE_SIZEOF_XML_CHAR,
10171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FEATURE_SIZEOF_XML_LCHAR,
10181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FEATURE_NS,
10191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FEATURE_LARGE_SIZE,
10201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  XML_FEATURE_ATTR_INFO
10211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  /* Additional features must be added to the end of this enum. */
10221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
10231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
10241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct {
10251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  enum XML_FeatureEnum  feature;
10261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  const XML_LChar       *name;
10271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  long int              value;
10281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_Feature;
10291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
10301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const XML_Feature *)
10311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetFeatureList(void);
10321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
10331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
10341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Expat follows the GNU/Linux convention of odd number minor version for
10351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   beta/development releases and even number minor version for stable
10361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   releases. Micro is bumped with each release, and set to 0 with each
10371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   change to major or minor version.
10381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/
10391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_MAJOR_VERSION 2
10401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_MINOR_VERSION 1
10411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_MICRO_VERSION 0
10421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
10431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef __cplusplus
10441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
10451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
10461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
10471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif /* not Expat_INCLUDED */
1048