diff options
Diffstat (limited to 'ext/libxml/php_libxml.h')
-rw-r--r-- | ext/libxml/php_libxml.h | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/ext/libxml/php_libxml.h b/ext/libxml/php_libxml.h index d208ad5d2a..2212056c46 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-2015 The PHP Group | +----------------------------------------------------------------------+ @@ -34,16 +34,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,38 +75,48 @@ 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) - XtOffsetOf(php_libxml_node_object, std)); +} + +#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) +#define LIBXML(v) ZEND_TSRMG(libxml_globals_id, zend_libxml_globals *, v) +#ifdef COMPILE_DL_LIBXML +ZEND_TSRMLS_CACHE_EXTERN; +#endif #else #define LIBXML(v) (libxml_globals.v) #endif |