php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
expat_compat.h
Go to the documentation of this file.
1/*
2 +----------------------------------------------------------------------+
3 | Copyright (c) The PHP Group |
4 +----------------------------------------------------------------------+
5 | This source file is subject to version 3.01 of the PHP license, |
6 | that is bundled with this package in the file LICENSE, and is |
7 | available through the world-wide-web at the following url: |
8 | https://www.php.net/license/3_01.txt |
9 | If you did not receive a copy of the PHP license and are unable to |
10 | obtain it through the world-wide-web, please send a note to |
11 | license@php.net so we can mail you a copy immediately. |
12 +----------------------------------------------------------------------+
13 | Authors: Sterling Hughes <sterling@php.net> |
14 +----------------------------------------------------------------------+
15*/
16
17#ifndef PHP_EXPAT_COMPAT_H
18#define PHP_EXPAT_COMPAT_H
19
20#ifdef PHP_WIN32
21#include "config.w32.h"
22#else
23#include <php_config.h>
24#endif
25
26#ifdef PHP_WIN32
27# define PHP_XML_API __declspec(dllexport)
28#elif defined(__GNUC__) && __GNUC__ >= 4
29# define PHP_XML_API __attribute__ ((visibility("default")))
30#else
31# define PHP_XML_API
32#endif
33
34#if !defined(HAVE_LIBEXPAT) && defined(HAVE_LIBXML)
35#define LIBXML_EXPAT_COMPAT 1
36
37#include "php.h"
38#include "php_compat.h"
39
40#include <libxml/parser.h>
41#include <libxml/parserInternals.h>
42#include <libxml/tree.h>
43#include <libxml/hash.h>
44
45/* For compatibility with the misspelled version. */
46#define _ns_seperator _ns_separator
47
48typedef xmlChar XML_Char;
49
50typedef struct XML_Parser_Struct *XML_Parser;
51
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 *);
63
64typedef struct XML_Memory_Handling_Suite {
65 void *(*malloc_fcn)(size_t size);
66 void *(*realloc_fcn)(void *ptr, size_t size);
67 void (*free_fcn)(void *ptr);
68} XML_Memory_Handling_Suite;
69
70struct XML_Parser_Struct {
71 int use_namespace;
72
73 xmlChar *_ns_separator;
74
75 void *user;
76 xmlParserCtxtPtr parser;
77
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;
89};
90
91enum XML_Error {
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
119};
120
121enum XML_Content_Type {
122 XML_CTYPE_EMPTY = 1,
123 XML_CTYPE_ANY,
124 XML_CTYPE_MIXED,
125 XML_CTYPE_NAME,
126 XML_CTYPE_CHOICE,
127 XML_CTYPE_SEQ
128};
129
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 *);
134PHP_XML_API void *XML_GetUserData(XML_Parser);
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);
145PHP_XML_API int XML_GetErrorCode(XML_Parser);
146PHP_XML_API const XML_Char *XML_ErrorString(int);
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);
151PHP_XML_API const XML_Char *XML_ExpatVersion(void);
152PHP_XML_API void XML_ParserFree(XML_Parser);
153
154#elif defined(HAVE_LIBEXPAT)
155#include "php.h"
156#include <expat.h>
157#endif /* HAVE_LIBEXPAT */
158
159#endif /* PHP_EXPAT_COMPAT_H */
#define PHP_XML_API
new_type size
Definition ffi.c:4365
void * ptr
Definition ffi.c:3814
const XML_ERROR_UNKNOWN_ENCODING
Definition xml.stub.php:99
const XML_ERROR_PARAM_ENTITY_REF
Definition xml.stub.php:59
const XML_ERROR_RECURSIVE_ENTITY_REF
Definition xml.stub.php:69
const XML_ERROR_MISPLACED_XML_PI
Definition xml.stub.php:94
const XML_ERROR_JUNK_AFTER_DOC_ELEMENT
Definition xml.stub.php:54
const XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
Definition xml.stub.php:89
const XML_ERROR_NO_ELEMENTS
Definition xml.stub.php:24
const XML_ERROR_SYNTAX
Definition xml.stub.php:19
const XML_ERROR_NONE
Definition xml.stub.php:9
const XML_ERROR_PARTIAL_CHAR
Definition xml.stub.php:39
const XML_ERROR_INCORRECT_ENCODING
Definition xml.stub.php:104
const XML_ERROR_ASYNC_ENTITY
Definition xml.stub.php:74
const XML_ERROR_BAD_CHAR_REF
Definition xml.stub.php:79
const XML_ERROR_EXTERNAL_ENTITY_HANDLING
Definition xml.stub.php:114
const XML_ERROR_UNCLOSED_CDATA_SECTION
Definition xml.stub.php:109
const XML_ERROR_INVALID_TOKEN
Definition xml.stub.php:29
const XML_ERROR_UNDEFINED_ENTITY
Definition xml.stub.php:64
const XML_ERROR_TAG_MISMATCH
Definition xml.stub.php:44
const XML_ERROR_UNCLOSED_TOKEN
Definition xml.stub.php:34
const XML_ERROR_NO_MEMORY
Definition xml.stub.php:14
const XML_ERROR_DUPLICATE_ATTRIBUTE
Definition xml.stub.php:49
const XML_ERROR_BINARY_ENTITY_REF
Definition xml.stub.php:84
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)