diff options
Diffstat (limited to 'ext/dom/node.c')
-rw-r--r-- | ext/dom/node.c | 49 |
1 files changed, 28 insertions, 21 deletions
diff --git a/ext/dom/node.c b/ext/dom/node.c index b212fc70c2..6de8c585f6 100644 --- a/ext/dom/node.c +++ b/ext/dom/node.c @@ -28,84 +28,104 @@ #include "php_dom.h" /* {{{ arginfo */ +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_insert_before, 0, 0, 1) ZEND_ARG_OBJ_INFO(0, newChild, DOMNode, 0) ZEND_ARG_OBJ_INFO(0, refChild, DOMNode, 1) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_replace_child, 0, 0, 2) ZEND_ARG_OBJ_INFO(0, newChild, DOMNode, 0) ZEND_ARG_OBJ_INFO(0, oldChild, DOMNode, 0) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_remove_child, 0, 0, 1) ZEND_ARG_OBJ_INFO(0, oldChild, DOMNode, 0) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_append_child, 0, 0, 1) ZEND_ARG_OBJ_INFO(0, newChild, DOMNode, 0) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_has_child_nodes, 0, 0, 0) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_clone_node, 0, 0, 1) ZEND_ARG_INFO(0, deep) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_normalize, 0, 0, 0) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_is_supported, 0, 0, 2) ZEND_ARG_INFO(0, feature) ZEND_ARG_INFO(0, version) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_has_attributes, 0, 0, 0) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_compare_document_position, 0, 0, 1) ZEND_ARG_OBJ_INFO(0, other, DOMNode, 0) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_is_same_node, 0, 0, 1) ZEND_ARG_OBJ_INFO(0, other, DOMNode, 0) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_lookup_prefix, 0, 0, 1) ZEND_ARG_INFO(0, namespaceURI) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_is_default_namespace, 0, 0, 1) ZEND_ARG_INFO(0, namespaceURI) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_lookup_namespace_uri, 0, 0, 1) ZEND_ARG_INFO(0, prefix) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_is_equal_node, 0, 0, 1) ZEND_ARG_OBJ_INFO(0, arg, DOMNode, 0) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_get_feature, 0, 0, 2) ZEND_ARG_INFO(0, feature) ZEND_ARG_INFO(0, version) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_set_user_data, 0, 0, 3) ZEND_ARG_INFO(0, key) - ZEND_ARG_INFO(0, data) + ZEND_ARG_OBJ_INFO(0, data, DOMUserData, 0) ZEND_ARG_INFO(0, handler) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_get_user_data, 0, 0, 1) ZEND_ARG_INFO(0, key) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_getNodePath, 0, 0, 0) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_C14N, 0, 0, 0) ZEND_ARG_INFO(0, exclusive) ZEND_ARG_INFO(0, with_comments) @@ -113,6 +133,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_C14N, 0, 0, 0) ZEND_ARG_ARRAY_INFO(0, ns_prefixes, 1) ZEND_END_ARG_INFO(); +static ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_C14NFile, 0, 0, 1) ZEND_ARG_INFO(0, uri) ZEND_ARG_INFO(0, exclusive) @@ -157,29 +178,15 @@ const zend_function_entry php_dom_node_class_functions[] = { /* {{{ */ static void dom_reconcile_ns(xmlDocPtr doc, xmlNodePtr nodep) /* {{{ */ { - xmlNsPtr nsptr, nsdftptr, curns, prevns = NULL; + xmlNsPtr nsptr; if (nodep->type == XML_ELEMENT_NODE) { /* Following if block primarily used for inserting nodes created via createElementNS */ - if (nodep->nsDef != NULL) { - curns = nodep->nsDef; - while (curns) { - nsdftptr = curns->next; - if (curns->href != NULL) { - if((nsptr = xmlSearchNsByHref(doc, nodep->parent, curns->href)) && - (curns->prefix == NULL || xmlStrEqual(nsptr->prefix, curns->prefix))) { - curns->next = NULL; - if (prevns == NULL) { - nodep->nsDef = nsdftptr; - } else { - prevns->next = nsdftptr; - } - dom_set_old_ns(doc, curns); - curns = prevns; - } - } - prevns = curns; - curns = nsdftptr; + if (nodep->nsDef != NULL && nodep->nsDef->href != NULL) { + if((nsptr = xmlSearchNsByHref(doc, nodep->parent, nodep->nsDef->href)) && + (nodep->nsDef->prefix == NULL || xmlStrEqual(nsptr->prefix, nodep->nsDef->prefix))) { + dom_set_old_ns(doc, nodep->nsDef); + nodep->nsDef = NULL; } } xmlReconciliateNs(doc, nodep); |