summaryrefslogtreecommitdiff
path: root/ext/dom/xml_common.h
diff options
context:
space:
mode:
authorRob Richards <rrichards@php.net>2003-06-14 15:27:15 +0000
committerRob Richards <rrichards@php.net>2003-06-14 15:27:15 +0000
commit6414becb62cad2ef1ecd5787c8c138d777024534 (patch)
tree3430bee632f279976f3725e5260fa27fd18c639e /ext/dom/xml_common.h
parente6502514fb04d49d6333f847e7f114c0bf3b5787 (diff)
downloadphp-git-6414becb62cad2ef1ecd5787c8c138d777024534.tar.gz
fix xml_parser_inited on win32
add common structs for better interoprability
Diffstat (limited to 'ext/dom/xml_common.h')
-rw-r--r--ext/dom/xml_common.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/ext/dom/xml_common.h b/ext/dom/xml_common.h
index 7c6d784ba0..f931cfa3bb 100644
--- a/ext/dom/xml_common.h
+++ b/ext/dom/xml_common.h
@@ -27,12 +27,23 @@ typedef struct _node_list_pointer {
void *next;
} node_list_pointer;
+typedef struct _doc_ref_obj {
+ void *ptr;
+ int refcount;
+} doc_ref_obj;
+
typedef struct _dom_ref_obj {
void *ptr;
int refcount;
node_list_pointer *node_list;
} dom_ref_obj;
+typedef struct _node_object {
+ zend_object std;
+ xmlNodePtr node;
+ doc_ref_obj *document;
+} node_object;
+
typedef struct _dom_object {
zend_object std;
void *ptr;
@@ -50,6 +61,9 @@ typedef struct _dom_object {
#else
#define PHPAPI __declspec(dllimport)
#endif /* DOM_EXPORTS */
+#define DOM_IMPORT __declspec(dllimport)
+#else
+#define DOM_IMPORT extern
#endif /* PHP_WIN32 */
#ifdef ZTS
@@ -87,6 +101,16 @@ entry = zend_register_internal_class_ex(&ce, parent_ce, NULL TSRMLS_CC);
} \
}
+#define DOC_GET_OBJ(__ptr, __id, __prtype, __intern) { \
+ __intern = (node_object *)zend_object_store_get_object(__id TSRMLS_CC); \
+ if (__intern->document != NULL) { \
+ if (!(__ptr = (__prtype)__intern->document->ptr)) { \
+ php_error(E_WARNING, "Couldn't fetch %s", __intern->std.ce->name);\
+ RETURN_NULL();\
+ } \
+ } \
+}
+
#define DOM_DOMOBJ_NEW(zval, obj, ret, domobject) \
if (NULL == (zval = php_dom_create_object(obj, ret, zval, return_value, domobject TSRMLS_CC))) { \
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object"); \