17#ifndef PHP_EXPAT_COMPAT_H
18#define PHP_EXPAT_COMPAT_H
21#include "config.w32.h"
23#include <php_config.h>
27# define PHP_XML_API __declspec(dllexport)
28#elif defined(__GNUC__) && __GNUC__ >= 4
29# define PHP_XML_API __attribute__ ((visibility("default")))
34#if !defined(HAVE_LIBEXPAT) && defined(HAVE_LIBXML)
35#define LIBXML_EXPAT_COMPAT 1
40#include <libxml/parser.h>
41#include <libxml/parserInternals.h>
42#include <libxml/tree.h>
43#include <libxml/hash.h>
46#define _ns_seperator _ns_separator
48typedef xmlChar XML_Char;
50typedef struct XML_Parser_Struct *XML_Parser;
52typedef void (*XML_StartElementHandler)(
void *,
const XML_Char *,
const XML_Char **);
53typedef void (*XML_EndElementHandler)(
void *,
const XML_Char *);
54typedef void (*XML_CharacterDataHandler)(
void *,
const XML_Char *, int);
55typedef void (*XML_ProcessingInstructionHandler)(
void *,
const XML_Char *,
const XML_Char *);
56typedef void (*XML_CommentHandler)(
void *,
const XML_Char *);
57typedef void (*XML_DefaultHandler)(
void *,
const XML_Char *, int);
58typedef void (*XML_UnparsedEntityDeclHandler)(
void *,
const XML_Char *,
const XML_Char *,
const XML_Char *,
const XML_Char *,
const XML_Char *);
59typedef void (*XML_NotationDeclHandler)(
void *,
const XML_Char *,
const XML_Char *,
const XML_Char *,
const XML_Char *);
60typedef int (*XML_ExternalEntityRefHandler)(XML_Parser,
const XML_Char *,
const XML_Char *,
const XML_Char *,
const XML_Char *);
61typedef void (*XML_StartNamespaceDeclHandler)(
void *,
const XML_Char *,
const XML_Char *);
62typedef void (*XML_EndNamespaceDeclHandler)(
void *,
const XML_Char *);
64typedef struct XML_Memory_Handling_Suite {
65 void *(*malloc_fcn)(
size_t size);
66 void *(*realloc_fcn)(
void *
ptr,
size_t size);
68} XML_Memory_Handling_Suite;
70struct XML_Parser_Struct {
73 xmlChar *_ns_separator;
76 xmlParserCtxtPtr parser;
78 XML_StartElementHandler h_start_element;
79 XML_EndElementHandler h_end_element;
80 XML_CharacterDataHandler h_cdata;
81 XML_ProcessingInstructionHandler h_pi;
82 XML_CommentHandler h_comment;
83 XML_DefaultHandler h_default;
84 XML_UnparsedEntityDeclHandler h_unparsed_entity_decl;
85 XML_NotationDeclHandler h_notation_decl;
86 XML_ExternalEntityRefHandler h_external_entity_ref;
87 XML_StartNamespaceDeclHandler h_start_ns;
88 XML_EndNamespaceDeclHandler h_end_ns;
114 XML_ERROR_NOT_STANDALONE,
115 XML_ERROR_UNEXPECTED_STATE,
116 XML_ERROR_ENTITY_DECLARED_IN_PE,
117 XML_ERROR_FEATURE_REQUIRES_XML_DTD,
118 XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING
121enum XML_Content_Type {
130PHP_XML_API XML_Parser XML_ParserCreate(
const XML_Char *);
131PHP_XML_API XML_Parser XML_ParserCreateNS(
const XML_Char *, XML_Char);
132PHP_XML_API XML_Parser XML_ParserCreate_MM(
const XML_Char *,
const XML_Memory_Handling_Suite *,
const XML_Char *);
133PHP_XML_API void XML_SetUserData(XML_Parser,
void *);
135PHP_XML_API void XML_SetElementHandler(XML_Parser, XML_StartElementHandler, XML_EndElementHandler);
136PHP_XML_API void XML_SetCharacterDataHandler(XML_Parser, XML_CharacterDataHandler);
137PHP_XML_API void XML_SetProcessingInstructionHandler(XML_Parser, XML_ProcessingInstructionHandler);
138PHP_XML_API void XML_SetDefaultHandler(XML_Parser, XML_DefaultHandler);
139PHP_XML_API void XML_SetUnparsedEntityDeclHandler(XML_Parser, XML_UnparsedEntityDeclHandler);
140PHP_XML_API void XML_SetNotationDeclHandler(XML_Parser, XML_NotationDeclHandler);
141PHP_XML_API void XML_SetExternalEntityRefHandler(XML_Parser, XML_ExternalEntityRefHandler);
142PHP_XML_API void XML_SetStartNamespaceDeclHandler(XML_Parser, XML_StartNamespaceDeclHandler);
143PHP_XML_API void XML_SetEndNamespaceDeclHandler(XML_Parser, XML_EndNamespaceDeclHandler);
144PHP_XML_API int XML_Parse(XML_Parser,
const XML_Char *,
int data_len,
int is_final);
147PHP_XML_API int XML_GetCurrentLineNumber(XML_Parser);
148PHP_XML_API int XML_GetCurrentColumnNumber(XML_Parser);
149PHP_XML_API long XML_GetCurrentByteIndex(XML_Parser);
150PHP_XML_API int XML_GetCurrentByteCount(XML_Parser);
154#elif defined(HAVE_LIBEXPAT)
const XML_ERROR_UNKNOWN_ENCODING
const XML_ERROR_PARAM_ENTITY_REF
const XML_ERROR_RECURSIVE_ENTITY_REF
const XML_ERROR_MISPLACED_XML_PI
const XML_ERROR_JUNK_AFTER_DOC_ELEMENT
const XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
const XML_ERROR_NO_ELEMENTS
const XML_ERROR_PARTIAL_CHAR
const XML_ERROR_INCORRECT_ENCODING
const XML_ERROR_ASYNC_ENTITY
const XML_ERROR_BAD_CHAR_REF
const XML_ERROR_EXTERNAL_ENTITY_HANDLING
const XML_ERROR_UNCLOSED_CDATA_SECTION
const XML_ERROR_INVALID_TOKEN
const XML_ERROR_UNDEFINED_ENTITY
const XML_ERROR_TAG_MISMATCH
const XML_ERROR_UNCLOSED_TOKEN
const XML_ERROR_NO_MEMORY
const XML_ERROR_DUPLICATE_ATTRIBUTE
const XML_ERROR_BINARY_ENTITY_REF
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)