]> granicus.if.org Git - php/commitdiff
fix xml_parser_inited on win32
authorRob Richards <rrichards@php.net>
Sat, 14 Jun 2003 15:27:15 +0000 (15:27 +0000)
committerRob Richards <rrichards@php.net>
Sat, 14 Jun 2003 15:27:15 +0000 (15:27 +0000)
add common structs for better interoprability

ext/dom/php_dom.c
ext/dom/xml_common.h

index 633cf55de7f6114c7c708919d8bcc077451dfcd9..e3ff9958043e780792e9b09555ec3ba3e379e8cd 100644 (file)
@@ -37,7 +37,7 @@
 #define PHP_XPATH 1
 #define PHP_XPTR 2
 
-extern int xml_parser_inited;
+DOM_IMPORT int xml_parser_inited;
 
 zend_object_handlers dom_object_handlers;
 
index 7c6d784ba0ed34d59da757090f5b9b062c1d4798..f931cfa3bb4eff22469144908a4568328d5875f5 100644 (file)
@@ -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"); \