]> granicus.if.org Git - php/commitdiff
- added DomNode->replace_child()
authorUwe Steinmann <steinm@php.net>
Mon, 15 Apr 2002 14:45:38 +0000 (14:45 +0000)
committerUwe Steinmann <steinm@php.net>
Mon, 15 Apr 2002 14:45:38 +0000 (14:45 +0000)
ext/domxml/php_domxml.c
ext/domxml/php_domxml.h

index 47bda16548fab5f001499dfd037e422a051f3df3..d2681a033077fe941a550ca2ed1537555cbb0e7f 100644 (file)
@@ -326,9 +326,9 @@ static zend_function_entry php_domxmlnode_class_functions[] = {
        PHP_FALIAS(parent,                                      domxml_node_parent,                             NULL)
        PHP_FALIAS(parent_node,                         domxml_node_parent,                             NULL)
        PHP_FALIAS(insert_before,                       domxml_node_insert_before,              NULL)
-       PHP_FALIAS(append_sibling,                      domxml_node_append_sibling,             NULL)
        PHP_FALIAS(append_child,                        domxml_node_append_child,               NULL)
        PHP_FALIAS(remove_child,                        domxml_node_remove_child,               NULL)
+       PHP_FALIAS(replace_child,                       domxml_node_replace_child,              NULL)
        PHP_FALIAS(owner_document,                      domxml_node_owner_document,             NULL)
        PHP_FALIAS(new_child,                           domxml_node_new_child,                  NULL)
        PHP_FALIAS(attributes,                          domxml_node_attributes,                 NULL)
@@ -337,6 +337,7 @@ static zend_function_entry php_domxmlnode_class_functions[] = {
        PHP_FALIAS(clone_node,                          domxml_clone_node,                              NULL)
 /* Non DOM functions start here */
        PHP_FALIAS(add_child,                           domxml_node_add_child,                  NULL)
+       PHP_FALIAS(append_sibling,                      domxml_node_append_sibling,             NULL)
        PHP_FALIAS(node,                                        domxml_node,                                    NULL)
        PHP_FALIAS(unlink,                                      domxml_node_unlink_node,                NULL)
        PHP_FALIAS(unlink_node,                         domxml_node_unlink_node,                NULL)
@@ -2164,6 +2165,42 @@ PHP_FUNCTION(domxml_node_remove_child)
 }
 /* }}} */
 
+/* {{{ proto object domxml_node_replace_child(object newnode, object oldnode)
+   Replaces node in list of children */
+PHP_FUNCTION(domxml_node_replace_child)
+{
+       zval *id, *newnode, *oldnode;
+       xmlNodePtr children, newchild, oldchild, nodep;
+       int ret;
+
+       DOMXML_GET_THIS_OBJ(nodep, id, le_domxmlnodep);
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "oo", &newnode, &oldnode) == FAILURE) {
+               return;
+       }
+
+       DOMXML_GET_OBJ(newchild, newnode, le_domxmlnodep);
+       DOMXML_GET_OBJ(oldchild, oldnode, le_domxmlnodep);
+
+       children = nodep->children;
+       if (!children) {
+               RETURN_FALSE;
+       }
+
+       while (children) {
+               if (children == oldchild) {
+                       zval *rv;
+                       xmlNodePtr node;
+                       node = xmlReplaceNode(oldchild, newchild);
+                       DOMXML_RET_OBJ(rv, oldchild, &ret);
+                       return;
+               }
+               children = children->next;
+       }
+       RETURN_FALSE
+}
+/* }}} */
+
 /* {{{ proto bool domxml_node_set_name(string name)
    Sets name of a node */
 PHP_FUNCTION(domxml_node_set_name)
index 8da31fdc36169bd1b583e5aee7112bdb3d033292..f09fa07c4bf07b1b32906a762873a8293315919e 100644 (file)
@@ -111,6 +111,7 @@ PHP_FUNCTION(domxml_node_insert_before);
 PHP_FUNCTION(domxml_node_append_sibling);
 PHP_FUNCTION(domxml_node_append_child);
 PHP_FUNCTION(domxml_node_remove_child);
+PHP_FUNCTION(domxml_node_replace_child);
 PHP_FUNCTION(domxml_node_add_child);
 PHP_FUNCTION(domxml_node_has_attributes);
 PHP_FUNCTION(domxml_node_has_child_nodes);