diff options
Diffstat (limited to 'ext/libxml/php_libxml.h')
-rw-r--r-- | ext/libxml/php_libxml.h | 51 |
1 files changed, 31 insertions, 20 deletions
diff --git a/ext/libxml/php_libxml.h b/ext/libxml/php_libxml.h index 98cf726a3d..11fca74938 100644 --- a/ext/libxml/php_libxml.h +++ b/ext/libxml/php_libxml.h @@ -1,6 +1,6 @@ /* +----------------------------------------------------------------------+ - | PHP Version 5 | + | PHP Version 7 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2016 The PHP Group | +----------------------------------------------------------------------+ @@ -26,6 +26,9 @@ extern zend_module_entry libxml_module_entry; #define libxml_module_ptr &libxml_module_entry +#include "php_version.h" +#define PHP_LIBXML_VERSION PHP_VERSION + #ifdef PHP_WIN32 # define PHP_LIBXML_API __declspec(dllexport) #elif defined(__GNUC__) && __GNUC__ >= 4 @@ -34,16 +37,17 @@ extern zend_module_entry libxml_module_entry; # define PHP_LIBXML_API #endif -#include "ext/standard/php_smart_str.h" +#include "zend_smart_str.h" #include <libxml/tree.h> #define LIBXML_SAVE_NOEMPTYTAG 1<<2 ZEND_BEGIN_MODULE_GLOBALS(libxml) - zval *stream_context; + zval stream_context; smart_str error_buffer; zend_llist *error_list; struct _php_libxml_entity_resolver { + zval object; zend_fcall_info fci; zend_fcall_info_cache fcc; } entity_loader; @@ -74,40 +78,47 @@ typedef struct _php_libxml_node_ptr { } php_libxml_node_ptr; typedef struct _php_libxml_node_object { - zend_object std; php_libxml_node_ptr *node; php_libxml_ref_obj *document; HashTable *properties; + zend_object std; } php_libxml_node_object; -typedef void * (*php_libxml_export_node) (zval *object TSRMLS_DC); -PHP_LIBXML_API int php_libxml_increment_node_ptr(php_libxml_node_object *object, xmlNodePtr node, void *private_data TSRMLS_DC); -PHP_LIBXML_API int php_libxml_decrement_node_ptr(php_libxml_node_object *object TSRMLS_DC); -PHP_LIBXML_API int php_libxml_increment_doc_ref(php_libxml_node_object *object, xmlDocPtr docp TSRMLS_DC); -PHP_LIBXML_API int php_libxml_decrement_doc_ref(php_libxml_node_object *object TSRMLS_DC); -PHP_LIBXML_API xmlNodePtr php_libxml_import_node(zval *object TSRMLS_DC); -PHP_LIBXML_API int php_libxml_register_export(zend_class_entry *ce, php_libxml_export_node export_function); +static inline php_libxml_node_object *php_libxml_node_fetch_object(zend_object *obj) { + return (php_libxml_node_object *)((char*)(obj) - obj->handlers->offset); +} + +#define Z_LIBXML_NODE_P(zv) php_libxml_node_fetch_object(Z_OBJ_P((zv))) + +typedef void * (*php_libxml_export_node) (zval *object); + +PHP_LIBXML_API int php_libxml_increment_node_ptr(php_libxml_node_object *object, xmlNodePtr node, void *private_data); +PHP_LIBXML_API int php_libxml_decrement_node_ptr(php_libxml_node_object *object); +PHP_LIBXML_API int php_libxml_increment_doc_ref(php_libxml_node_object *object, xmlDocPtr docp); +PHP_LIBXML_API int php_libxml_decrement_doc_ref(php_libxml_node_object *object); +PHP_LIBXML_API xmlNodePtr php_libxml_import_node(zval *object); +PHP_LIBXML_API zval *php_libxml_register_export(zend_class_entry *ce, php_libxml_export_node export_function); /* When an explicit freeing of node and children is required */ -PHP_LIBXML_API void php_libxml_node_free_resource(xmlNodePtr node TSRMLS_DC); +PHP_LIBXML_API void php_libxml_node_free_resource(xmlNodePtr node); /* When object dtor is called as node may still be referenced */ -PHP_LIBXML_API void php_libxml_node_decrement_resource(php_libxml_node_object *object TSRMLS_DC); +PHP_LIBXML_API void php_libxml_node_decrement_resource(php_libxml_node_object *object); PHP_LIBXML_API void php_libxml_error_handler(void *ctx, const char *msg, ...); PHP_LIBXML_API void php_libxml_ctx_warning(void *ctx, const char *msg, ...); PHP_LIBXML_API void php_libxml_ctx_error(void *ctx, const char *msg, ...); PHP_LIBXML_API int php_libxml_xmlCheckUTF8(const unsigned char *s); -PHP_LIBXML_API zval *php_libxml_switch_context(zval *context TSRMLS_DC); -PHP_LIBXML_API void php_libxml_issue_error(int level, const char *msg TSRMLS_DC); -PHP_LIBXML_API zend_bool php_libxml_disable_entity_loader(zend_bool disable TSRMLS_DC); +PHP_LIBXML_API void php_libxml_switch_context(zval *context, zval *oldcontext); +PHP_LIBXML_API void php_libxml_issue_error(int level, const char *msg); +PHP_LIBXML_API zend_bool php_libxml_disable_entity_loader(zend_bool disable); /* Init/shutdown functions*/ PHP_LIBXML_API void php_libxml_initialize(void); PHP_LIBXML_API void php_libxml_shutdown(void); -#ifdef ZTS -#define LIBXML(v) TSRMG(libxml_globals_id, zend_libxml_globals *, v) -#else -#define LIBXML(v) (libxml_globals.v) +#define LIBXML(v) ZEND_MODULE_GLOBALS_ACCESSOR(libxml, v) + +#if defined(ZTS) && defined(COMPILE_DL_LIBXML) +ZEND_TSRMLS_CACHE_EXTERN() #endif #else /* HAVE_LIBXML */ |