diff options
author | Uwe Steinmann <steinm@php.net> | 2002-04-15 14:45:38 +0000 |
---|---|---|
committer | Uwe Steinmann <steinm@php.net> | 2002-04-15 14:45:38 +0000 |
commit | c7e391637c0942c6bf8b6df7a090765250410576 (patch) | |
tree | 9d7db52636cc51ab932f02aa0852eb4d36ccd365 /ext/domxml/php_domxml.c | |
parent | 08e3ee7e901332185e3334b1a4a5a021de900d01 (diff) | |
download | php-git-c7e391637c0942c6bf8b6df7a090765250410576.tar.gz |
- added DomNode->replace_child()
Diffstat (limited to 'ext/domxml/php_domxml.c')
-rw-r--r-- | ext/domxml/php_domxml.c | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/ext/domxml/php_domxml.c b/ext/domxml/php_domxml.c index 47bda16548..d2681a0330 100644 --- a/ext/domxml/php_domxml.c +++ b/ext/domxml/php_domxml.c @@ -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) |