This source file includes following definitions.
- ZEND_BEGIN_MODULE_GLOBALS
- ZEND_END_MODULE_GLOBALS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #ifndef PHP_LIBXML_H
23 #define PHP_LIBXML_H
24
25 #if HAVE_LIBXML
26 extern zend_module_entry libxml_module_entry;
27 #define libxml_module_ptr &libxml_module_entry
28
29 #ifdef PHP_WIN32
30 # define PHP_LIBXML_API __declspec(dllexport)
31 #elif defined(__GNUC__) && __GNUC__ >= 4
32 # define PHP_LIBXML_API __attribute__ ((visibility("default")))
33 #else
34 # define PHP_LIBXML_API
35 #endif
36
37 #include "ext/standard/php_smart_str.h"
38 #include <libxml/tree.h>
39
40 #define LIBXML_SAVE_NOEMPTYTAG 1<<2
41
42 ZEND_BEGIN_MODULE_GLOBALS(libxml)
43 zval *stream_context;
44 smart_str error_buffer;
45 zend_llist *error_list;
46 struct _php_libxml_entity_resolver {
47 zend_fcall_info fci;
48 zend_fcall_info_cache fcc;
49 } entity_loader;
50 zend_bool entity_loader_disabled;
51 ZEND_END_MODULE_GLOBALS(libxml)
52
53 typedef struct _libxml_doc_props {
54 int formatoutput;
55 int validateonparse;
56 int resolveexternals;
57 int preservewhitespace;
58 int substituteentities;
59 int stricterror;
60 int recover;
61 HashTable *classmap;
62 } libxml_doc_props;
63
64 typedef struct _php_libxml_ref_obj {
65 void *ptr;
66 int refcount;
67 libxml_doc_props *doc_props;
68 } php_libxml_ref_obj;
69
70 typedef struct _php_libxml_node_ptr {
71 xmlNodePtr node;
72 int refcount;
73 void *_private;
74 } php_libxml_node_ptr;
75
76 typedef struct _php_libxml_node_object {
77 zend_object std;
78 php_libxml_node_ptr *node;
79 php_libxml_ref_obj *document;
80 HashTable *properties;
81 } php_libxml_node_object;
82
83 typedef void * (*php_libxml_export_node) (zval *object TSRMLS_DC);
84
85 PHP_LIBXML_API int php_libxml_increment_node_ptr(php_libxml_node_object *object, xmlNodePtr node, void *private_data TSRMLS_DC);
86 PHP_LIBXML_API int php_libxml_decrement_node_ptr(php_libxml_node_object *object TSRMLS_DC);
87 PHP_LIBXML_API int php_libxml_increment_doc_ref(php_libxml_node_object *object, xmlDocPtr docp TSRMLS_DC);
88 PHP_LIBXML_API int php_libxml_decrement_doc_ref(php_libxml_node_object *object TSRMLS_DC);
89 PHP_LIBXML_API xmlNodePtr php_libxml_import_node(zval *object TSRMLS_DC);
90 PHP_LIBXML_API int php_libxml_register_export(zend_class_entry *ce, php_libxml_export_node export_function);
91
92 PHP_LIBXML_API void php_libxml_node_free_resource(xmlNodePtr node TSRMLS_DC);
93
94 PHP_LIBXML_API void php_libxml_node_decrement_resource(php_libxml_node_object *object TSRMLS_DC);
95 PHP_LIBXML_API void php_libxml_error_handler(void *ctx, const char *msg, ...);
96 PHP_LIBXML_API void php_libxml_ctx_warning(void *ctx, const char *msg, ...);
97 PHP_LIBXML_API void php_libxml_ctx_error(void *ctx, const char *msg, ...);
98 PHP_LIBXML_API int php_libxml_xmlCheckUTF8(const unsigned char *s);
99 PHP_LIBXML_API zval *php_libxml_switch_context(zval *context TSRMLS_DC);
100 PHP_LIBXML_API void php_libxml_issue_error(int level, const char *msg TSRMLS_DC);
101 PHP_LIBXML_API zend_bool php_libxml_disable_entity_loader(zend_bool disable TSRMLS_DC);
102
103
104 PHP_LIBXML_API void php_libxml_initialize(void);
105 PHP_LIBXML_API void php_libxml_shutdown(void);
106
107 #ifdef ZTS
108 #define LIBXML(v) TSRMG(libxml_globals_id, zend_libxml_globals *, v)
109 #else
110 #define LIBXML(v) (libxml_globals.v)
111 #endif
112
113 #else
114 #define libxml_module_ptr NULL
115 #endif
116
117 #define phpext_libxml_ptr libxml_module_ptr
118
119 #endif
120
121
122
123
124
125
126