(const xmlChar *) "http://www.w3.org/2000/xmlns/"
#define NODE_GET_OBJ(__ptr, __id, __prtype, __intern) { \
- __intern = (php_libxml_node_object *)zend_object_store_get_object(__id TSRMLS_CC); \
+ __intern = Z_LIBXML_NODE_P(__id); \
if (__intern->node == NULL || !(__ptr = (__prtype)__intern->node->node)) { \
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", __intern->std.ce->name);\
RETURN_NULL();\
}
#define DOC_GET_OBJ(__ptr, __id, __prtype, __intern) { \
- __intern = (php_libxml_node_object *)zend_object_store_get_object(__id TSRMLS_CC); \
+ __intern = Z_LIBXML_NODE_P(__id); \
if (__intern->document != NULL) { \
if (!(__ptr = (__prtype)__intern->document->ptr)) { \
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", __intern->std.ce->name);\
zend_object std;
} php_libxml_node_object;
+
+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 TSRMLS_DC);
PHP_LIBXML_API int php_libxml_increment_node_ptr(php_libxml_node_object *object, xmlNodePtr node, void *private_data TSRMLS_DC);
return;
}
- object = (php_libxml_node_object *) ((char *) Z_OBJ_P(node) - Z_OBJ_HT_P(node)->offset);
+ object = Z_LIBXML_NODE_P(node);
nodep = php_libxml_import_node(node TSRMLS_CC);