From: foobar Date: Tue, 14 Aug 2001 07:14:23 +0000 (+0000) Subject: ws fix. Also added some missing protos and fold tags. X-Git-Tag: php-4.0.7RC1~44 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a870fd27576e342f96c75f7e94bb0bb9fc918fdc;p=php ws fix. Also added some missing protos and fold tags. --- diff --git a/ext/domxml/php_domxml.c b/ext/domxml/php_domxml.c index 3bc58096a4..f6d01734eb 100644 --- a/ext/domxml/php_domxml.c +++ b/ext/domxml/php_domxml.c @@ -75,40 +75,40 @@ static int node_attributes(zval **attributes, xmlNode *nodep TSRMLS_DC); static int node_children(zval **children, xmlNode *nodep TSRMLS_DC); static zend_function_entry domxml_functions[] = { - PHP_FE(domxml_version, NULL) - PHP_FE(xmldoc, NULL) - PHP_FE(xmldocfile, NULL) - PHP_FE(xmltree, NULL) - PHP_FALIAS(domxml_root, domxml_doc_document_element, NULL) - PHP_FE(domxml_add_root, NULL) - PHP_FE(domxml_dumpmem, NULL) - PHP_FE(domxml_node_attributes, NULL) - PHP_FALIAS(domxml_attributes, domxml_node_attributes, NULL) - PHP_FE(domxml_elem_get_attribute, NULL) - PHP_FALIAS(domxml_get_attribute, domxml_elem_get_attribute, NULL) - PHP_FALIAS(domxml_getattr, domxml_elem_get_attribute, NULL) - PHP_FE(domxml_elem_set_attribute, NULL) - PHP_FALIAS(domxml_set_attribute, domxml_elem_set_attribute, NULL) - PHP_FALIAS(domxml_setattr, domxml_elem_set_attribute, NULL) - PHP_FE(domxml_node_children, NULL) - PHP_FALIAS(domxml_children, domxml_node_children, NULL) - PHP_FE(domxml_node_new_child, NULL) - PHP_FALIAS(domxml_new_child, domxml_node_new_child, NULL) - PHP_FE(domxml_node, NULL) - PHP_FE(domxml_node_unlink_node, NULL) - PHP_FALIAS(domxml_unlink_node, domxml_node_unlink_node, NULL) - PHP_FE(domxml_node_set_content, NULL) - PHP_FALIAS(set_content, domxml_node_set_content, NULL) - PHP_FE(domxml_new_xmldoc, NULL) - PHP_FALIAS(new_xmldoc, domxml_new_xmldoc, NULL) + PHP_FE(domxml_version, NULL) + PHP_FE(xmldoc, NULL) + PHP_FE(xmldocfile, NULL) + PHP_FE(xmltree, NULL) + PHP_FALIAS(domxml_root, domxml_doc_document_element, NULL) + PHP_FE(domxml_add_root, NULL) + PHP_FE(domxml_dumpmem, NULL) + PHP_FE(domxml_node_attributes, NULL) + PHP_FALIAS(domxml_attributes, domxml_node_attributes, NULL) + PHP_FE(domxml_elem_get_attribute, NULL) + PHP_FALIAS(domxml_get_attribute, domxml_elem_get_attribute, NULL) + PHP_FALIAS(domxml_getattr, domxml_elem_get_attribute, NULL) + PHP_FE(domxml_elem_set_attribute, NULL) + PHP_FALIAS(domxml_set_attribute, domxml_elem_set_attribute, NULL) + PHP_FALIAS(domxml_setattr, domxml_elem_set_attribute, NULL) + PHP_FE(domxml_node_children, NULL) + PHP_FALIAS(domxml_children, domxml_node_children, NULL) + PHP_FE(domxml_node_new_child, NULL) + PHP_FALIAS(domxml_new_child, domxml_node_new_child, NULL) + PHP_FE(domxml_node, NULL) + PHP_FE(domxml_node_unlink_node, NULL) + PHP_FALIAS(domxml_unlink_node, domxml_node_unlink_node, NULL) + PHP_FE(domxml_node_set_content, NULL) + PHP_FALIAS(set_content, domxml_node_set_content, NULL) + PHP_FE(domxml_new_xmldoc, NULL) + PHP_FALIAS(new_xmldoc, domxml_new_xmldoc, NULL) #if defined(LIBXML_XPATH_ENABLED) - PHP_FE(xpath_new_context, NULL) - PHP_FE(xpath_eval, NULL) - PHP_FE(xpath_eval_expression, NULL) + PHP_FE(xpath_new_context, NULL) + PHP_FE(xpath_eval, NULL) + PHP_FE(xpath_eval_expression, NULL) #endif #if defined(LIBXML_XPTR_ENABLED) - PHP_FE(xptr_new_context, NULL) - PHP_FE(xptr_eval, NULL) + PHP_FE(xptr_new_context, NULL) + PHP_FE(xptr_eval, NULL) #endif {NULL, NULL, NULL} }; @@ -117,49 +117,53 @@ static zend_function_entry domxml_functions[] = { static function_entry php_domxmldoc_class_functions[] = { /* PHP_FALIAS(domdocument, xmldoc, NULL) */ {"domdocument", PHP_FN(xmldoc), NULL}, - PHP_FALIAS(doctype, domxml_doc_doctype, NULL) - PHP_FALIAS(implementation, domxml_doc_implementation, NULL) - PHP_FALIAS(root, domxml_doc_document_element, NULL) /* not DOM */ - PHP_FALIAS(document_element, domxml_doc_document_element, NULL) - PHP_FALIAS(documentelement, domxml_doc_document_element, NULL) - PHP_FALIAS(createelement, domxml_doc_create_element, NULL) - PHP_FALIAS(create_element, domxml_doc_create_element, NULL) - PHP_FALIAS(createtextnode, domxml_doc_create_text_node, NULL) - PHP_FALIAS(create_text_node, domxml_doc_create_text_node, NULL) - PHP_FALIAS(createcomment, domxml_doc_create_comment, NULL) - PHP_FALIAS(create_comment, domxml_doc_create_comment, NULL) - PHP_FALIAS(createattribute, domxml_doc_create_attribute, NULL) - PHP_FALIAS(create_attribute, domxml_doc_create_attribute, NULL) - PHP_FALIAS(createprocessinginstruction, domxml_doc_create_processing_instruction, NULL) + + PHP_FALIAS(doctype, domxml_doc_doctype, NULL) + PHP_FALIAS(implementation, domxml_doc_implementation, NULL) + PHP_FALIAS(root, domxml_doc_document_element, NULL) /* not DOM */ + PHP_FALIAS(document_element, domxml_doc_document_element, NULL) + PHP_FALIAS(documentelement, domxml_doc_document_element, NULL) + PHP_FALIAS(createelement, domxml_doc_create_element, NULL) + PHP_FALIAS(create_element, domxml_doc_create_element, NULL) + PHP_FALIAS(createtextnode, domxml_doc_create_text_node, NULL) + PHP_FALIAS(create_text_node, domxml_doc_create_text_node, NULL) + PHP_FALIAS(createcomment, domxml_doc_create_comment, NULL) + PHP_FALIAS(create_comment, domxml_doc_create_comment, NULL) + PHP_FALIAS(createattribute, domxml_doc_create_attribute, NULL) + PHP_FALIAS(create_attribute, domxml_doc_create_attribute, NULL) + PHP_FALIAS(createprocessinginstruction, domxml_doc_create_processing_instruction, NULL) PHP_FALIAS(create_processing_instruction, domxml_doc_create_processing_instruction, NULL) - PHP_FALIAS(children, domxml_node_children, NULL) - PHP_FALIAS(add_root, domxml_add_root, NULL) - PHP_FALIAS(importednode, domxml_doc_imported_node, NULL) - PHP_FALIAS(imported_node, domxml_doc_imported_node, NULL) - PHP_FALIAS(dtd, domxml_intdtd, NULL) - PHP_FALIAS(dumpmem, domxml_dumpmem, NULL) -/* PHP_FALIAS(createcdatasection, domxml_create_cdata_section, NULL) + PHP_FALIAS(children, domxml_node_children, NULL) + PHP_FALIAS(add_root, domxml_add_root, NULL) + PHP_FALIAS(importednode, domxml_doc_imported_node, NULL) + PHP_FALIAS(imported_node, domxml_doc_imported_node, NULL) + PHP_FALIAS(dtd, domxml_intdtd, NULL) + PHP_FALIAS(dumpmem, domxml_dumpmem, NULL) +/* + PHP_FALIAS(createcdatasection, domxml_create_cdata_section, NULL) PHP_FALIAS(create_cdata_section, domxml_create_cdata_section, NULL) */ #if defined(LIBXML_XPATH_ENABLED) - PHP_FALIAS(xpath_init, xpath_init, NULL) - PHP_FALIAS(xpath_new_context, xpath_new_context, NULL) - PHP_FALIAS(xptr_new_context, xptr_new_context, NULL) + PHP_FALIAS(xpath_init, xpath_init, NULL) + PHP_FALIAS(xpath_new_context, xpath_new_context, NULL) + PHP_FALIAS(xptr_new_context, xptr_new_context, NULL) #endif {NULL, NULL, NULL} }; static function_entry php_domxmldoctype_class_functions[] = { - PHP_FALIAS(name, domxml_doctype_name, NULL) -/* PHP_FALIAS(entities, domxml_doctype_entities, NULL) - PHP_FALIAS(notations, domxml_doctype_notations, NULL) - PHP_FALIAS(systemid, domxml_doctype_system_id, NULL) - PHP_FALIAS(system_id, domxml_doctype_system_id, NULL) - PHP_FALIAS(publicid, domxml_doctype_public_id, NULL) - PHP_FALIAS(public_id, domxml_doctype_public_id, NULL) - PHP_FALIAS(internalsubset, domxml_doctype_internal_subset, NULL) - PHP_FALIAS(internal_subset, domxml_doctype_internal_subset, NULL) -*/ {NULL, NULL, NULL} + PHP_FALIAS(name, domxml_doctype_name, NULL) +/* + PHP_FALIAS(entities, domxml_doctype_entities, NULL) + PHP_FALIAS(notations, domxml_doctype_notations, NULL) + PHP_FALIAS(systemid, domxml_doctype_system_id, NULL) + PHP_FALIAS(system_id, domxml_doctype_system_id, NULL) + PHP_FALIAS(publicid, domxml_doctype_public_id, NULL) + PHP_FALIAS(public_id, domxml_doctype_public_id, NULL) + PHP_FALIAS(internalsubset, domxml_doctype_internal_subset, NULL) + PHP_FALIAS(internal_subset, domxml_doctype_internal_subset, NULL) +*/ + {NULL, NULL, NULL} }; static zend_function_entry php_domxmldtd_class_functions[] = { @@ -167,65 +171,65 @@ static zend_function_entry php_domxmldtd_class_functions[] = { }; static zend_function_entry php_domxmlnode_class_functions[] = { - PHP_FALIAS(domnode, domxml_node, NULL) - PHP_FALIAS(firstchild, domxml_node_first_child, NULL) - PHP_FALIAS(first_child, domxml_node_first_child, NULL) - PHP_FALIAS(lastchild, domxml_node_last_child, NULL) - PHP_FALIAS(last_child, domxml_node_last_child, NULL) - PHP_FALIAS(add_child, domxml_node_add_child, NULL) - PHP_FALIAS(children, domxml_node_children, NULL) - PHP_FALIAS(childnodes, domxml_node_children, NULL) - PHP_FALIAS(child_nodes, domxml_node_children, NULL) - PHP_FALIAS(previoussibling, domxml_node_previous_sibling, NULL) - PHP_FALIAS(previous_sibling, domxml_node_previous_sibling, NULL) - PHP_FALIAS(nextsibling, domxml_node_next_sibling, NULL) - PHP_FALIAS(next_sibling, domxml_node_next_sibling, NULL) - PHP_FALIAS(has_child_nodes, domxml_node_has_child_nodes, NULL) - PHP_FALIAS(haschildnodes, domxml_node_has_child_nodes, NULL) - PHP_FALIAS(prefix, domxml_node_prefix, NULL) - PHP_FALIAS(parent, domxml_node_parent, NULL) - PHP_FALIAS(parentnode, domxml_node_parent, NULL) - PHP_FALIAS(parent_node, domxml_node_parent, NULL) - PHP_FALIAS(insert_before, domxml_node_insert_before, NULL) - PHP_FALIAS(insertbefore, domxml_node_insert_before, NULL) - PHP_FALIAS(append_child, domxml_node_append_child, NULL) - PHP_FALIAS(appendchild, domxml_node_append_child, NULL) - PHP_FALIAS(ownerdocument, domxml_node_owner_document, 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) - PHP_FALIAS(node, domxml_node, NULL) - PHP_FALIAS(unlink, domxml_node_unlink_node, NULL) - PHP_FALIAS(set_content, domxml_node_set_content, NULL) - PHP_FALIAS(text_concat, domxml_node_text_concat, NULL) - PHP_FALIAS(set_name, domxml_node_set_name, NULL) - PHP_FALIAS(node_name, domxml_node_name, NULL) - PHP_FALIAS(nodename, domxml_node_name, NULL) - PHP_FALIAS(node_value, domxml_node_value, NULL) - PHP_FALIAS(nodevalue, domxml_node_value, NULL) + PHP_FALIAS(domnode, domxml_node, NULL) + PHP_FALIAS(firstchild, domxml_node_first_child, NULL) + PHP_FALIAS(first_child, domxml_node_first_child, NULL) + PHP_FALIAS(lastchild, domxml_node_last_child, NULL) + PHP_FALIAS(last_child, domxml_node_last_child, NULL) + PHP_FALIAS(add_child, domxml_node_add_child, NULL) + PHP_FALIAS(children, domxml_node_children, NULL) + PHP_FALIAS(childnodes, domxml_node_children, NULL) + PHP_FALIAS(child_nodes, domxml_node_children, NULL) + PHP_FALIAS(previoussibling, domxml_node_previous_sibling, NULL) + PHP_FALIAS(previous_sibling, domxml_node_previous_sibling, NULL) + PHP_FALIAS(nextsibling, domxml_node_next_sibling, NULL) + PHP_FALIAS(next_sibling, domxml_node_next_sibling, NULL) + PHP_FALIAS(has_child_nodes, domxml_node_has_child_nodes, NULL) + PHP_FALIAS(haschildnodes, domxml_node_has_child_nodes, NULL) + PHP_FALIAS(prefix, domxml_node_prefix, NULL) + PHP_FALIAS(parent, domxml_node_parent, NULL) + PHP_FALIAS(parentnode, domxml_node_parent, NULL) + PHP_FALIAS(parent_node, domxml_node_parent, NULL) + PHP_FALIAS(insert_before, domxml_node_insert_before, NULL) + PHP_FALIAS(insertbefore, domxml_node_insert_before, NULL) + PHP_FALIAS(append_child, domxml_node_append_child, NULL) + PHP_FALIAS(appendchild, domxml_node_append_child, NULL) + PHP_FALIAS(ownerdocument, domxml_node_owner_document, 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) + PHP_FALIAS(node, domxml_node, NULL) + PHP_FALIAS(unlink, domxml_node_unlink_node, NULL) + PHP_FALIAS(set_content, domxml_node_set_content, NULL) + PHP_FALIAS(text_concat, domxml_node_text_concat, NULL) + PHP_FALIAS(set_name, domxml_node_set_name, NULL) + PHP_FALIAS(node_name, domxml_node_name, NULL) + PHP_FALIAS(nodename, domxml_node_name, NULL) + PHP_FALIAS(node_value, domxml_node_value, NULL) + PHP_FALIAS(nodevalue, domxml_node_value, NULL) {NULL, NULL, NULL} }; static zend_function_entry php_domxmlelement_class_functions[] = { - PHP_FALIAS(domelement, domxml_element, NULL) - PHP_FALIAS(tagname, domxml_elem_tagname, NULL) - PHP_FALIAS(getattribute, domxml_elem_get_attribute, NULL) - PHP_FALIAS(get_attribute, domxml_elem_get_attribute, NULL) - PHP_FALIAS(setattribute, domxml_elem_set_attribute, NULL) - PHP_FALIAS(set_attribute, domxml_elem_set_attribute, NULL) - PHP_FALIAS(removeattribute, domxml_elem_remove_attribute, NULL) - PHP_FALIAS(remove_attribute, domxml_elem_remove_attribute, NULL) - PHP_FALIAS(getattributenode, domxml_elem_get_attribute_node, NULL) - PHP_FALIAS(get_attributenode, domxml_elem_get_attribute_node, NULL) - PHP_FALIAS(setattributenode, domxml_elem_set_attribute_node, NULL) - PHP_FALIAS(set_attributenode, domxml_elem_set_attribute_node, NULL) - PHP_FALIAS(getelementbytagname, domxml_elem_get_element_by_tagname, NULL) - PHP_FALIAS(get_element_by_tagname, domxml_elem_get_element_by_tagname, NULL) + PHP_FALIAS(domelement, domxml_element, NULL) + PHP_FALIAS(tagname, domxml_elem_tagname, NULL) + PHP_FALIAS(getattribute, domxml_elem_get_attribute, NULL) + PHP_FALIAS(get_attribute, domxml_elem_get_attribute, NULL) + PHP_FALIAS(setattribute, domxml_elem_set_attribute, NULL) + PHP_FALIAS(set_attribute, domxml_elem_set_attribute, NULL) + PHP_FALIAS(removeattribute, domxml_elem_remove_attribute, NULL) + PHP_FALIAS(remove_attribute, domxml_elem_remove_attribute, NULL) + PHP_FALIAS(getattributenode, domxml_elem_get_attribute_node, NULL) + PHP_FALIAS(get_attributenode, domxml_elem_get_attribute_node, NULL) + PHP_FALIAS(setattributenode, domxml_elem_set_attribute_node, NULL) + PHP_FALIAS(set_attributenode, domxml_elem_set_attribute_node, NULL) + PHP_FALIAS(getelementbytagname, domxml_elem_get_element_by_tagname, NULL) + PHP_FALIAS(get_element_by_tagname, domxml_elem_get_element_by_tagname, NULL) {NULL, NULL, NULL} }; static zend_function_entry php_domxmlcdata_class_functions[] = { - PHP_FALIAS(length, domxml_cdata_length, NULL) + PHP_FALIAS(length, domxml_cdata_length, NULL) {NULL, NULL, NULL} }; @@ -238,10 +242,10 @@ static zend_function_entry php_domxmlcomment_class_functions[] = { }; static zend_function_entry php_domxmlnotation_class_functions[] = { - PHP_FALIAS(publicid, domxml_notation_public_id, NULL) - PHP_FALIAS(public_id, domxml_notation_public_id, NULL) - PHP_FALIAS(systemid, domxml_notation_system_id, NULL) - PHP_FALIAS(system_id, domxml_notation_system_id, NULL) + PHP_FALIAS(publicid, domxml_notation_public_id, NULL) + PHP_FALIAS(public_id, domxml_notation_public_id, NULL) + PHP_FALIAS(systemid, domxml_notation_system_id, NULL) + PHP_FALIAS(system_id, domxml_notation_system_id, NULL) {NULL, NULL, NULL} }; @@ -250,25 +254,27 @@ static zend_function_entry php_domxmlentityref_class_functions[] = { }; static zend_function_entry php_domxmlentity_class_functions[] = { -/* PHP_FALIAS(publicid, domxml_entity_public_id, NULL) - PHP_FALIAS(public_id, domxml_entity_public_id, NULL) - PHP_FALIAS(systemid, domxml_entity_system_id, NULL) - PHP_FALIAS(system_id, domxml_entity_system_id, NULL) - PHP_FALIAS(notationname, domxml_entity_notation_name, NULL) - PHP_FALIAS(notation_name, domxml_entity_notation_name, NULL) -*/ {NULL, NULL, NULL} +/* + PHP_FALIAS(publicid, domxml_entity_public_id, NULL) + PHP_FALIAS(public_id, domxml_entity_public_id, NULL) + PHP_FALIAS(systemid, domxml_entity_system_id, NULL) + PHP_FALIAS(system_id, domxml_entity_system_id, NULL) + PHP_FALIAS(notationname, domxml_entity_notation_name, NULL) + PHP_FALIAS(notation_name, domxml_entity_notation_name, NULL) +*/ + {NULL, NULL, NULL} }; static zend_function_entry php_domxmlpi_class_functions[] = { - PHP_FALIAS(target, domxml_pi_target, NULL) - PHP_FALIAS(data, domxml_pi_data, NULL) + PHP_FALIAS(target, domxml_pi_target, NULL) + PHP_FALIAS(data, domxml_pi_data, NULL) {NULL, NULL, NULL} }; #if defined(LIBXML_XPATH_ENABLED) static zend_function_entry php_xpathctx_class_functions[] = { - PHP_FALIAS(xpath_eval, xpath_eval, NULL) - PHP_FALIAS(xpath_eval_expression, xpath_eval_expression, NULL) + PHP_FALIAS(xpath_eval, xpath_eval, NULL) + PHP_FALIAS(xpath_eval_expression, xpath_eval_expression, NULL) {NULL, NULL, NULL} }; @@ -278,12 +284,14 @@ static zend_function_entry php_xpathobject_class_functions[] = { #endif static zend_function_entry php_domxmlattr_class_functions[] = { - PHP_FALIAS(name, domxml_attr_name, NULL) - PHP_FALIAS(value, domxml_attr_value, NULL) - PHP_FALIAS(specified, domxml_attr_specified, NULL) -/* PHP_FALIAS(ownerelement, domxml_attr_owner_element, NULL) - PHP_FALIAS(owner_element, domxml_attr_owner_element, NULL) -*/ {NULL, NULL, NULL} + PHP_FALIAS(name, domxml_attr_name, NULL) + PHP_FALIAS(value, domxml_attr_value, NULL) + PHP_FALIAS(specified, domxml_attr_specified, NULL) +/* + PHP_FALIAS(ownerelement, domxml_attr_owner_element, NULL) + PHP_FALIAS(owner_element, domxml_attr_owner_element, NULL) +*/ + {NULL, NULL, NULL} }; static zend_function_entry php_domxmlns_class_functions[] = { @@ -291,33 +299,47 @@ static zend_function_entry php_domxmlns_class_functions[] = { }; zend_module_entry domxml_module_entry = { - "domxml", domxml_functions, PHP_MINIT(domxml), NULL, PHP_RINIT(domxml), NULL, PHP_MINFO(domxml), STANDARD_MODULE_PROPERTIES + "domxml", + domxml_functions, + PHP_MINIT(domxml), + NULL, + PHP_RINIT(domxml), + NULL, + PHP_MINFO(domxml), + STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_DOMXML ZEND_GET_MODULE(domxml) #endif -static void dom_object_set_data(void *obj, zval *wrapper) { - /* + +static void dom_object_set_data(void *obj, zval *wrapper) +{ +/* char tmp[20]; sprintf(tmp, "%08X", obj); fprintf(stderr, "Adding %s to hash\n", tmp); - */ +*/ ((xmlNodePtr) obj)->_private = wrapper; } -static zval *dom_object_get_data(void *obj) { - /* char tmp[20]; - sprintf(tmp, "%08X", obj); - fprintf(stderr, "Trying getting %s from object ...", tmp); - if(((xmlNodePtr) obj)->_private) + +static zval *dom_object_get_data(void *obj) +{ +/* + char tmp[20]; + sprintf(tmp, "%08X", obj); + fprintf(stderr, "Trying getting %s from object ...", tmp); + if(((xmlNodePtr) obj)->_private) fprintf(stderr, " found\n"); - else - fprintf(stderr, " not found\n"); */ - return((zval *) (((xmlNodePtr) obj)->_private)); + else + fprintf(stderr, " not found\n"); +*/ + return ((zval *) (((xmlNodePtr) obj)->_private)); } + static inline void node_wrapper_dtor(xmlNodePtr node) { zval *wrapper; @@ -326,10 +348,12 @@ static inline void node_wrapper_dtor(xmlNodePtr node) return; wrapper = dom_object_get_data(node); + if (wrapper) zval_ptr_dtor(&wrapper); } + static inline void attr_list_wrapper_dtor(xmlAttrPtr attr) { while (attr != NULL) { @@ -338,6 +362,7 @@ static inline void attr_list_wrapper_dtor(xmlAttrPtr attr) } } + static inline void node_list_wrapper_dtor(xmlNodePtr node) { while (node != NULL) { @@ -348,22 +373,24 @@ static inline void node_list_wrapper_dtor(xmlNodePtr node) } } + static void php_free_xml_doc(zend_rsrc_list_entry *rsrc TSRMLS_DC) { - xmlDoc *doc = (xmlDoc *)rsrc->ptr; + xmlDoc *doc = (xmlDoc *) rsrc->ptr; if (doc) { node_list_wrapper_dtor(doc->children); - + node_wrapper_dtor((xmlNodePtr) doc); xmlFreeDoc(doc); } } + static void php_free_xml_node(zend_rsrc_list_entry *rsrc TSRMLS_DC) { xmlNodePtr node = (xmlNodePtr) rsrc->ptr; - + if (node) { zval *wrapper = dom_object_get_data(node); if (wrapper) @@ -371,64 +398,75 @@ static void php_free_xml_node(zend_rsrc_list_entry *rsrc TSRMLS_DC) } } + #if defined(LIBXML_XPATH_ENABLED) static void php_free_xpath_context(zend_rsrc_list_entry *rsrc TSRMLS_DC) { - xmlXPathContextPtr ctx = (xmlXPathContextPtr)rsrc->ptr; - if(ctx) + xmlXPathContextPtr ctx = (xmlXPathContextPtr) rsrc->ptr; + if (ctx) xmlXPathFreeContext(ctx); } static void php_free_xpath_object(zend_rsrc_list_entry *rsrc TSRMLS_DC) { - xmlXPathObjectPtr obj = (xmlXPathObjectPtr)rsrc->ptr; + xmlXPathObjectPtr obj = (xmlXPathObjectPtr) rsrc->ptr; - if(obj) + if (obj) xmlXPathFreeObject(obj); } #endif + void *php_xpath_get_object(zval *wrapper, int rsrc_type1, int rsrc_type2) { void *obj; zval **handle; int type; TSRMLS_FETCH(); - + if (Z_TYPE_P(wrapper) != IS_OBJECT) { php_error(E_ERROR, "Wrapper is not an object"); } - if (zend_hash_index_find(Z_OBJPROP_P(wrapper), 0, (void **)&handle) == FAILURE) { - php_error(E_ERROR, "Underlying object missing"); + + if (zend_hash_index_find(Z_OBJPROP_P(wrapper), 0, (void **) &handle) == FAILURE) { + php_error(E_ERROR, "Underlying object missing"); } + obj = zend_list_find(Z_LVAL_PP(handle), &type); if (!obj || ((type != rsrc_type1) && (type != rsrc_type2))) { php_error(E_ERROR, "Underlying object missing or of invalid type"); - } + } return obj; -} +} + static void xpath_object_set_data(void *obj, zval *wrapper) { -/* char tmp[20]; +/* + char tmp[20]; sprintf(tmp, "%08X", obj); - fprintf(stderr, "Adding %s to hash\n", tmp); */ + fprintf(stderr, "Adding %s to hash\n", tmp); +*/ ((xmlXPathObjectPtr) obj)->user = wrapper; } + static zval *xpath_object_get_data(void *obj) { -/* char tmp[20]; +/* + char tmp[20]; sprintf(tmp, "%08X", obj); fprintf(stderr, "Trying getting %s from hash ...", tmp); if(((xmlXPathObjectPtr) obj)->user) fprintf(stderr, " found\n"); else - fprintf(stderr, " not found\n"); */ - return((zval *) (((xmlXPathObjectPtr) obj)->user)); + fprintf(stderr, " not found\n"); +*/ + return ((zval *) (((xmlXPathObjectPtr) obj)->user)); } + static void php_xpath_set_object(zval *wrapper, void *obj, int rsrc_type) { zval *handle, *addr; @@ -436,16 +474,18 @@ static void php_xpath_set_object(zval *wrapper, void *obj, int rsrc_type) MAKE_STD_ZVAL(handle); Z_TYPE_P(handle) = IS_LONG; Z_LVAL_P(handle) = zend_list_insert(obj, rsrc_type); + MAKE_STD_ZVAL(addr); Z_TYPE_P(addr) = IS_LONG; Z_LVAL_P(addr) = (int) obj; + zend_hash_index_update(Z_OBJPROP_P(wrapper), 0, &handle, sizeof(zval *), NULL); - zend_hash_index_update(Z_OBJPROP_P(wrapper), 1, &addr, sizeof(zval *), NULL); + zend_hash_index_update(Z_OBJPROP_P(wrapper), 1, &addr, sizeof(zval *), NULL); zval_add_ref(&wrapper); xpath_object_set_data(obj, wrapper); } -static zval *php_xpathobject_new(xmlXPathObjectPtr obj, int *found TSRMLS_DC) +static zval *php_xpathobject_new(xmlXPathObjectPtr obj, int *found TSRMLS_DC) { zval *wrapper; @@ -456,20 +496,23 @@ static zval *php_xpathobject_new(xmlXPathObjectPtr obj, int *found TSRMLS_DC) return wrapper; } - if ((wrapper = (zval *)xpath_object_get_data((void *)obj))) { + if ((wrapper = (zval *) xpath_object_get_data((void *) obj))) { zval_add_ref(&wrapper); *found = 1; return wrapper; - } + } MAKE_STD_ZVAL(wrapper); object_init_ex(wrapper, xpathobject_class_entry); - /* rsrc_type = le_xpathobjectp; - php_xpath_set_object(wrapper, (void *) obj, rsrc_type); */ + +/* + rsrc_type = le_xpathobjectp; + php_xpath_set_object(wrapper, (void *) obj, rsrc_type); +*/ php_xpath_set_object(wrapper, (void *) obj, le_xpathobjectp); - return(wrapper); + return (wrapper); } void *php_xpath_get_context(zval *wrapper, int rsrc_type1, int rsrc_type2 TSRMLS_DC) @@ -477,39 +520,46 @@ void *php_xpath_get_context(zval *wrapper, int rsrc_type1, int rsrc_type2 TSRMLS void *obj; zval **handle; int type; - + if (Z_TYPE_P(wrapper) != IS_OBJECT) { php_error(E_ERROR, "Wrapper is not an object"); } - if (zend_hash_index_find(Z_OBJPROP_P(wrapper), 0, (void **)&handle) == FAILURE) { - php_error(E_ERROR, "Underlying object missing"); + + if (zend_hash_index_find(Z_OBJPROP_P(wrapper), 0, (void **) &handle) == + FAILURE) { + php_error(E_ERROR, "Underlying object missing"); } + obj = zend_list_find(Z_LVAL_PP(handle), &type); if (!obj || ((type != rsrc_type1) && (type != rsrc_type2))) { php_error(E_ERROR, "Underlying object missing or of invalid type"); - } + } return obj; -} +} static void xpath_context_set_data(void *obj, zval *wrapper) { -/* char tmp[20]; +/* + char tmp[20]; sprintf(tmp, "%08X", obj); - fprintf(stderr, "Adding %s to hash\n", tmp); */ + fprintf(stderr, "Adding %s to hash\n", tmp); +*/ ((xmlXPathContextPtr) obj)->user = (void *) wrapper; } static zval *xpath_context_get_data(void *obj) { -/* char tmp[20]; +/* + char tmp[20]; sprintf(tmp, "%08X", obj); fprintf(stderr, "Trying getting %s from hash ...", tmp); if(((xmlXPathContextPtr) obj)->user) fprintf(stderr, " found\n"); else - fprintf(stderr, " not found\n"); */ - return((zval *) (((xmlXPathContextPtr) obj)->user)); + fprintf(stderr, " not found\n"); +*/ + return ((zval *) (((xmlXPathContextPtr) obj)->user)); } static void php_xpath_set_context(zval *wrapper, void *obj, int rsrc_type) @@ -519,11 +569,13 @@ static void php_xpath_set_context(zval *wrapper, void *obj, int rsrc_type) MAKE_STD_ZVAL(handle); Z_TYPE_P(handle) = IS_LONG; Z_LVAL_P(handle) = zend_list_insert(obj, rsrc_type); + MAKE_STD_ZVAL(addr); Z_TYPE_P(addr) = IS_LONG; Z_LVAL_P(addr) = (int) obj; + zend_hash_index_update(Z_OBJPROP_P(wrapper), 0, &handle, sizeof(zval *), NULL); - zend_hash_index_update(Z_OBJPROP_P(wrapper), 1, &addr, sizeof(zval *), NULL); + zend_hash_index_update(Z_OBJPROP_P(wrapper), 1, &addr, sizeof(zval *), NULL); zval_add_ref(&wrapper); xpath_context_set_data(obj, wrapper); } @@ -540,41 +592,48 @@ static zval *php_xpathcontext_new(xmlXPathContextPtr obj, int *found TSRMLS_DC) return wrapper; } - if ((wrapper = (zval *)xpath_context_get_data((void *)obj))) { + if ((wrapper = (zval *) xpath_context_get_data((void *) obj))) { zval_add_ref(&wrapper); *found = 1; return wrapper; - } + } MAKE_STD_ZVAL(wrapper); -/* fprintf(stderr, "Adding new XPath Context\n"); */ +/* + fprintf(stderr, "Adding new XPath Context\n"); +*/ object_init_ex(wrapper, xpathctx_class_entry); rsrc_type = le_xpathctxp; php_xpath_set_context(wrapper, (void *) obj, rsrc_type); - return(wrapper); + return (wrapper); } + void *php_dom_get_object(zval *wrapper, int rsrc_type1, int rsrc_type2 TSRMLS_DC) { void *obj; zval **handle; int type; - + if (Z_TYPE_P(wrapper) != IS_OBJECT) { php_error(E_ERROR, "Wrapper is not an object"); } - if (zend_hash_index_find(Z_OBJPROP_P(wrapper), 0, (void **)&handle) == FAILURE) { - php_error(E_ERROR, "Underlying object missing"); + + if (zend_hash_index_find(Z_OBJPROP_P(wrapper), 0, (void **) &handle) == FAILURE) { + php_error(E_ERROR, "Underlying object missing"); } + obj = zend_list_find(Z_LVAL_PP(handle), &type); + /* The following test should be replaced with search in all parents */ - if (!obj) { /* || ((type != rsrc_type1) && (type != rsrc_type2))) { */ + if (!obj) { /* || ((type != rsrc_type1) && (type != rsrc_type2))) { */ php_error(E_ERROR, "Underlying object missing or of invalid type"); - } + } return obj; -} +} + static void php_dom_set_object(zval *wrapper, void *obj, int rsrc_type) { @@ -583,15 +642,18 @@ static void php_dom_set_object(zval *wrapper, void *obj, int rsrc_type) MAKE_STD_ZVAL(handle); Z_TYPE_P(handle) = IS_LONG; Z_LVAL_P(handle) = zend_list_insert(obj, rsrc_type); + MAKE_STD_ZVAL(addr); Z_TYPE_P(addr) = IS_LONG; Z_LVAL_P(addr) = (int) obj; + zend_hash_index_update(Z_OBJPROP_P(wrapper), 0, &handle, sizeof(zval *), NULL); - zend_hash_index_update(Z_OBJPROP_P(wrapper), 1, &addr, sizeof(zval *), NULL); + zend_hash_index_update(Z_OBJPROP_P(wrapper), 1, &addr, sizeof(zval *), NULL); zval_add_ref(&wrapper); dom_object_set_data(obj, wrapper); } + static zval *php_domobject_new(xmlNodePtr obj, int *found TSRMLS_DC) { zval *wrapper; @@ -605,15 +667,18 @@ static zval *php_domobject_new(xmlNodePtr obj, int *found TSRMLS_DC) return wrapper; } - if ((wrapper = (zval *)dom_object_get_data((void *)obj))) { + if ((wrapper = (zval *) dom_object_get_data((void *) obj))) { zval_add_ref(&wrapper); *found = 1; return wrapper; - } + } MAKE_STD_ZVAL(wrapper); - switch(obj->type) { - case XML_ELEMENT_NODE: { + + switch (obj->type) { + + case XML_ELEMENT_NODE: + { xmlNodePtr nodep = obj; object_init_ex(wrapper, domxmlelement_class_entry); rsrc_type = le_domxmlelementp; @@ -621,82 +686,96 @@ static zval *php_domobject_new(xmlNodePtr obj, int *found TSRMLS_DC) add_property_stringl(wrapper, "tagname", (char *) nodep->name, strlen(nodep->name), 1); break; } - case XML_TEXT_NODE: { + + case XML_TEXT_NODE: + { xmlNodePtr nodep = obj; object_init_ex(wrapper, domxmltext_class_entry); rsrc_type = le_domxmltextp; content = xmlNodeGetContent(nodep); - if(content) + if (content) add_property_stringl(wrapper, "content", (char *) content, strlen(content), 1); break; } - case XML_COMMENT_NODE: { + + case XML_COMMENT_NODE: + { xmlNodePtr nodep = obj; object_init_ex(wrapper, domxmlcomment_class_entry); rsrc_type = le_domxmlcommentp; content = xmlNodeGetContent(nodep); - if(content) + if (content) add_property_stringl(wrapper, "content", (char *) content, strlen(content), 1); break; } - case XML_PI_NODE: { + + case XML_PI_NODE: + { xmlNodePtr nodep = obj; object_init_ex(wrapper, domxmlpi_class_entry); rsrc_type = le_domxmlpip; content = xmlNodeGetContent(nodep); add_property_stringl(wrapper, "target", (char *) nodep->name, strlen(nodep->name), 1); - if(content) + if (content) add_property_stringl(wrapper, "data", (char *) content, strlen(content), 1); break; } - case XML_ENTITY_REF_NODE: { + + case XML_ENTITY_REF_NODE: + { xmlNodePtr nodep = obj; object_init_ex(wrapper, domxmlentityref_class_entry); rsrc_type = le_domxmlentityrefp; content = xmlNodeGetContent(nodep); add_property_stringl(wrapper, "name", (char *) nodep->name, strlen(nodep->name), 1); - if(content) + if (content) add_property_stringl(wrapper, "content", (char *) content, strlen(content), 1); break; } - case XML_ENTITY_DECL: - case XML_ELEMENT_DECL: { + + case XML_ENTITY_DECL: + case XML_ELEMENT_DECL: + { xmlNodePtr nodep = obj; object_init_ex(wrapper, domxmlnode_class_entry); rsrc_type = le_domxmlnodep; add_property_long(wrapper, "type", nodep->type); add_property_stringl(wrapper, "name", (char *) nodep->name, strlen(nodep->name), 1); - if(obj->type == XML_ENTITY_REF_NODE) { + if (obj->type == XML_ENTITY_REF_NODE) { content = xmlNodeGetContent(nodep); - if(content) + if (content) add_property_stringl(wrapper, "content", (char *) content, strlen(content), 1); } break; } - case XML_ATTRIBUTE_NODE: { + + case XML_ATTRIBUTE_NODE: + { xmlAttrPtr attrp = (xmlAttrPtr) obj; object_init_ex(wrapper, domxmlattr_class_entry); rsrc_type = le_domxmlattrp; add_property_stringl(wrapper, "name", (char *) attrp->name, strlen(attrp->name), 1); content = xmlNodeGetContent((xmlNodePtr) attrp); - if(content) + if (content) add_property_stringl(wrapper, "value", (char *) content, strlen(content), 1); break; } - case XML_DOCUMENT_NODE: { + + case XML_DOCUMENT_NODE: + { xmlDocPtr docp = (xmlDocPtr) obj; object_init_ex(wrapper, domxmldoc_class_entry); rsrc_type = le_domxmldocp; - if(docp->name) + if (docp->name) add_property_stringl(wrapper, "name", (char *) docp->name, strlen(docp->name), 1); else add_property_stringl(wrapper, "name", "", 0, 1); - if(docp->URL) + if (docp->URL) add_property_stringl(wrapper, "url", (char *) docp->URL, strlen(docp->URL), 1); else add_property_stringl(wrapper, "url", "", 0, 1); add_property_stringl(wrapper, "version", (char *) docp->version, strlen(docp->version), 1); - if(docp->encoding) + if (docp->encoding) add_property_stringl(wrapper, "encoding", (char *) docp->encoding, strlen(docp->encoding), 1); add_property_long(wrapper, "standalone", docp->standalone); add_property_long(wrapper, "type", docp->type); @@ -704,43 +783,49 @@ static zval *php_domobject_new(xmlNodePtr obj, int *found TSRMLS_DC) add_property_long(wrapper, "charset", docp->charset); break; } - case XML_DTD_NODE: { + + case XML_DTD_NODE: + { xmlDtdPtr dtd = (xmlDtdPtr) obj; object_init_ex(wrapper, domxmldtd_class_entry); rsrc_type = le_domxmldtdp; - if(dtd->ExternalID) + if (dtd->ExternalID) add_property_string(wrapper, "publicId", (char *) dtd->ExternalID, 1); - if(dtd->SystemID) + if (dtd->SystemID) add_property_string(wrapper, "systemId", (char *) dtd->SystemID, 1); - if(dtd->name) + if (dtd->name) add_property_string(wrapper, "name", (char *) dtd->name, 1); break; } - default: + + default: fprintf(stderr, "Unsupported Node type: %d\n", obj->type); return NULL; } - php_dom_set_object(wrapper, (void *) obj, rsrc_type); - return(wrapper); + php_dom_set_object(wrapper, (void *) obj, rsrc_type); + return (wrapper); } + PHP_RINIT_FUNCTION(domxml) { return SUCCESS; } + PHP_MINIT_FUNCTION(domxml) { zend_class_entry ce; - le_domxmldocp = zend_register_list_destructors_ex(php_free_xml_doc, NULL, "domdocument", module_number); + le_domxmldocp = zend_register_list_destructors_ex(php_free_xml_doc, NULL, "domdocument", module_number); /* Freeing the document contains freeing the complete tree. Therefore nodes, attributes etc. may not be freed seperately. - */ + */ le_domxmlnodep = zend_register_list_destructors_ex(php_free_xml_node, NULL, "domnode", module_number); le_domxmlattrp = zend_register_list_destructors_ex(php_free_xml_node, NULL, "domattribute", module_number); - le_domxmlelementp = zend_register_list_destructors_ex(php_free_xml_node, NULL, "domelement", module_number); + le_domxmlelementp = zend_register_list_destructors_ex(php_free_xml_node, NULL, "domelement", module_number); + #if defined(LIBXML_XPATH_ENABLED) le_xpathctxp = zend_register_list_destructors_ex(php_free_xpath_context, NULL, "xpathcontext", module_number); le_xpathobjectp = zend_register_list_destructors_ex(php_free_xpath_object, NULL, "xpathobject", module_number); @@ -754,7 +839,7 @@ PHP_MINIT_FUNCTION(domxml) INIT_OVERLOADED_CLASS_ENTRY(ce, "DomDocument", php_domxmldoc_class_functions, NULL, NULL, NULL); domxmldoc_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC); - INIT_OVERLOADED_CLASS_ENTRY(ce, "DomDocumentType", php_domxmldoctype_class_functions, NULL, NULL, NULL); + INIT_OVERLOADED_CLASS_ENTRY(ce, "DomDocumentType", php_domxmldoctype_class_functions, NULL, NULL, NULL); domxmldoctype_class_entry = zend_register_internal_class_ex(&ce, domxmlnode_class_entry, NULL TSRMLS_CC); INIT_OVERLOADED_CLASS_ENTRY(ce, "Dtd", php_domxmldtd_class_functions, NULL, NULL, NULL); @@ -798,60 +883,60 @@ PHP_MINIT_FUNCTION(domxml) xpathobject_class_entry = zend_register_internal_class_ex(&ce, NULL, NULL TSRMLS_CC); #endif - REGISTER_LONG_CONSTANT("XML_ELEMENT_NODE", XML_ELEMENT_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NODE", XML_ATTRIBUTE_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_TEXT_NODE", XML_TEXT_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_CDATA_SECTION_NODE", XML_CDATA_SECTION_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ENTITY_REF_NODE", XML_ENTITY_REF_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ENTITY_NODE", XML_ENTITY_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_PI_NODE", XML_PI_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_COMMENT_NODE", XML_COMMENT_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_DOCUMENT_NODE", XML_DOCUMENT_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_DOCUMENT_TYPE_NODE", XML_DOCUMENT_TYPE_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_DOCUMENT_FRAG_NODE", XML_DOCUMENT_FRAG_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_NOTATION_NODE", XML_NOTATION_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_HTML_DOCUMENT_NODE", XML_HTML_DOCUMENT_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_DTD_NODE", XML_DTD_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ELEMENT_DECL_NODE", XML_ELEMENT_DECL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_DECL_NODE", XML_ATTRIBUTE_DECL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ENTITY_DECL_NODE", XML_ENTITY_DECL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_NAMESPACE_DECL_NODE", XML_NAMESPACE_DECL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ELEMENT_NODE", XML_ELEMENT_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NODE", XML_ATTRIBUTE_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_TEXT_NODE", XML_TEXT_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_CDATA_SECTION_NODE", XML_CDATA_SECTION_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ENTITY_REF_NODE", XML_ENTITY_REF_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ENTITY_NODE", XML_ENTITY_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_PI_NODE", XML_PI_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_COMMENT_NODE", XML_COMMENT_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_DOCUMENT_NODE", XML_DOCUMENT_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_DOCUMENT_TYPE_NODE", XML_DOCUMENT_TYPE_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_DOCUMENT_FRAG_NODE", XML_DOCUMENT_FRAG_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_NOTATION_NODE", XML_NOTATION_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_HTML_DOCUMENT_NODE", XML_HTML_DOCUMENT_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_DTD_NODE", XML_DTD_NODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ELEMENT_DECL_NODE", XML_ELEMENT_DECL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_DECL_NODE", XML_ATTRIBUTE_DECL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ENTITY_DECL_NODE", XML_ENTITY_DECL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_NAMESPACE_DECL_NODE", XML_NAMESPACE_DECL, CONST_CS | CONST_PERSISTENT); #ifdef XML_GLOBAL_NAMESPACE - REGISTER_LONG_CONSTANT("XML_GLOBAL_NAMESPACE", XML_GLOBAL_NAMESPACE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_GLOBAL_NAMESPACE", XML_GLOBAL_NAMESPACE, CONST_CS | CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("XML_LOCAL_NAMESPACE", XML_LOCAL_NAMESPACE, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_CDATA", XML_ATTRIBUTE_CDATA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ID", XML_ATTRIBUTE_ID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_IDREF", XML_ATTRIBUTE_IDREF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_IDREFS", XML_ATTRIBUTE_IDREFS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ENTITY", XML_ATTRIBUTE_ENTITIES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NMTOKEN", XML_ATTRIBUTE_NMTOKEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NMTOKENS", XML_ATTRIBUTE_NMTOKENS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ENUMERATION", XML_ATTRIBUTE_ENUMERATION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NOTATION", XML_ATTRIBUTE_NOTATION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_LOCAL_NAMESPACE", XML_LOCAL_NAMESPACE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_CDATA", XML_ATTRIBUTE_CDATA, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ID", XML_ATTRIBUTE_ID, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_IDREF", XML_ATTRIBUTE_IDREF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_IDREFS", XML_ATTRIBUTE_IDREFS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ENTITY", XML_ATTRIBUTE_ENTITIES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NMTOKEN", XML_ATTRIBUTE_NMTOKEN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NMTOKENS", XML_ATTRIBUTE_NMTOKENS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ENUMERATION", XML_ATTRIBUTE_ENUMERATION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NOTATION", XML_ATTRIBUTE_NOTATION, CONST_CS | CONST_PERSISTENT); #if defined(LIBXML_XPATH_ENABLED) - REGISTER_LONG_CONSTANT("XPATH_UNDEFINED", XPATH_UNDEFINED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XPATH_NODESET", XPATH_NODESET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XPATH_BOOLEAN", XPATH_BOOLEAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XPATH_NUMBER", XPATH_NUMBER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XPATH_STRING", XPATH_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XPATH_POINT", XPATH_POINT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XPATH_RANGE", XPATH_RANGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XPATH_LOCATIONSET", XPATH_LOCATIONSET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XPATH_USERS", XPATH_USERS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XPATH_UNDEFINED", XPATH_UNDEFINED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XPATH_NODESET", XPATH_NODESET, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XPATH_BOOLEAN", XPATH_BOOLEAN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XPATH_NUMBER", XPATH_NUMBER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XPATH_STRING", XPATH_STRING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XPATH_POINT", XPATH_POINT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XPATH_RANGE", XPATH_RANGE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XPATH_LOCATIONSET", XPATH_LOCATIONSET, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XPATH_USERS", XPATH_USERS, CONST_CS | CONST_PERSISTENT); #endif return SUCCESS; } + /* {{{ proto int domxml_test(int id) Unity function for testing */ PHP_FUNCTION(domxml_test) { zval *id; - + if ((ZEND_NUM_ARGS() != 1) || getParameters(ht, 1, &id) == FAILURE) WRONG_PARAM_COUNT; @@ -860,14 +945,13 @@ PHP_FUNCTION(domxml_test) } /* }}} */ -/* }}} */ PHP_MINFO_FUNCTION(domxml) { /* don't know why that line was commented out in the previous version, so i left it (cmv) */ - php_info_print_table_start(); + php_info_print_table_start(); php_info_print_table_row(2, "DOM/XML", "enabled"); - php_info_print_table_row(2, "libxml Version", LIBXML_DOTTED_VERSION ); + php_info_print_table_row(2, "libxml Version", LIBXML_DOTTED_VERSION); #if defined(LIBXML_XPATH_ENABLED) php_info_print_table_row(2, "XPath Support", "enabled"); #endif @@ -885,10 +969,10 @@ PHP_FUNCTION(domxml_attr_name) { zval *id; xmlAttrPtr attrp; - + id = getThis(); attrp = php_dom_get_object(id, le_domxmlattrp, 0 TSRMLS_CC); - + RETURN_STRING((char *) (attrp->name), 1); } /* }}} */ @@ -899,10 +983,10 @@ PHP_FUNCTION(domxml_attr_value) { zval *id; xmlAttrPtr attrp; - + id = getThis(); attrp = php_dom_get_object(id, le_domxmlattrp, 0 TSRMLS_CC); - + RETURN_STRING((char *) xmlNodeGetContent((xmlNodePtr) attrp), 1); } /* }}} */ @@ -913,15 +997,17 @@ PHP_FUNCTION(domxml_attr_specified) { zval *id; xmlAttrPtr attrp; - + id = getThis(); attrp = php_dom_get_object(id, le_domxmlattrp, 0 TSRMLS_CC); - + RETURN_TRUE; } /* }}} */ + /* End of Methods DomAttr }}} */ + /* {{{ Methods of Class DomProcessingInstruction */ /* {{{ proto array domxml_pi_target() @@ -930,11 +1016,11 @@ PHP_FUNCTION(domxml_pi_target) { zval *id; xmlNodePtr nodep; - + id = getThis(); nodep = php_dom_get_object(id, le_domxmlpip, 0 TSRMLS_CC); - RETURN_STRING((char *)nodep->name, 1); + RETURN_STRING((char *) nodep->name, 1); } /* }}} */ @@ -944,15 +1030,17 @@ PHP_FUNCTION(domxml_pi_data) { zval *id; xmlNodePtr nodep; - + id = getThis(); nodep = php_dom_get_object(id, le_domxmlpip, 0 TSRMLS_CC); RETURN_STRING(xmlNodeGetContent(nodep), 1); } /* }}} */ + /* End of Methods of DomProcessingInstruction }}} */ + /* {{{ Methods of Class DomCData */ /* {{{ proto array domxml_cdata_length() @@ -961,15 +1049,17 @@ PHP_FUNCTION(domxml_cdata_length) { zval *id; xmlNodePtr nodep; - + id = getThis(); nodep = php_dom_get_object(id, le_domxmlcdatap, 0 TSRMLS_CC); - + RETURN_LONG(1); } /* }}} */ + /* End of Methods DomCDdata }}} */ + /* {{{ Methods of Class DomNode */ /* {{{ proto object domxml_node(string name) @@ -979,7 +1069,7 @@ PHP_FUNCTION(domxml_node) zval *arg, *rv; xmlNode *node; int ret; - + if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &arg) == FAILURE) { WRONG_PARAM_COUNT; } @@ -989,10 +1079,12 @@ PHP_FUNCTION(domxml_node) if (!node) { RETURN_FALSE; } + rv = php_domobject_new(node, &ret TSRMLS_CC); if (!rv) { RETURN_FALSE; } + SEPARATE_ZVAL(&rv); *return_value = *rv; FREE_ZVAL(rv); @@ -1006,42 +1098,48 @@ PHP_FUNCTION(domxml_node_name) zval *id; xmlNode *n; const char *str = NULL; - + id = getThis(); n = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); - switch (n->type) - { - case XML_ELEMENT_NODE: - str = n->name; - break; - - case XML_TEXT_NODE: - str = "#text"; - break; - - case XML_CDATA_SECTION_NODE: - str = "#cdata-section"; - break; - case XML_ENTITY_REF_NODE: - str = n->name; - break; - case XML_ENTITY_NODE: - str = NULL; - break; - case XML_PI_NODE: - str = n->name; - break; - case XML_COMMENT_NODE: - str = "#comment"; - break; - case XML_DOCUMENT_FRAG_NODE: - str = "#document-fragment"; - break; - default: - str = NULL; - break; - } + switch (n->type) { + case XML_ELEMENT_NODE: + str = n->name; + break; + + case XML_TEXT_NODE: + str = "#text"; + break; + + case XML_CDATA_SECTION_NODE: + str = "#cdata-section"; + break; + + case XML_ENTITY_REF_NODE: + str = n->name; + break; + + case XML_ENTITY_NODE: + str = NULL; + break; + + case XML_PI_NODE: + str = n->name; + break; + + case XML_COMMENT_NODE: + str = "#comment"; + break; + + case XML_DOCUMENT_FRAG_NODE: + str = "#document-fragment"; + break; + + default: + str = NULL; + break; + } + RETURN_STRING((char *) str, 1); } /* }}} */ @@ -1053,41 +1151,42 @@ PHP_FUNCTION(domxml_node_value) zval *id; xmlNode *n; char *str = NULL; - + id = getThis(); n = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); - + if (!n) { - RETURN_FALSE; - } - switch (n->type) - { - case XML_TEXT_NODE: - case XML_COMMENT_NODE: - case XML_CDATA_SECTION_NODE: - case XML_PI_NODE: - str = n->content; - break; - default: - str = NULL; - break; - } + RETURN_FALSE; + } + switch (n->type) { + case XML_TEXT_NODE: + case XML_COMMENT_NODE: + case XML_CDATA_SECTION_NODE: + case XML_PI_NODE: + str = n->content; + break; + default: + str = NULL; + break; + } RETURN_STRING(str, 1); } /* }}} */ +/* {{{ proto int domxml_node_type() + unknown */ PHP_FUNCTION(domxml_node_type) { zval *id; xmlNode *n; - + id = getThis(); n = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); if (!n) { RETURN_FALSE; } - RETURN_LONG(n->type); + RETURN_LONG(n->type); } /* }}} */ @@ -1098,7 +1197,7 @@ PHP_FUNCTION(domxml_node_first_child) zval *id, *rv; xmlNode *nodep, *first; int ret; - + id = getThis(); nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); @@ -1121,7 +1220,7 @@ PHP_FUNCTION(domxml_node_last_child) zval *id, *rv; xmlNode *nodep, *last; int ret; - + id = getThis(); nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); @@ -1144,10 +1243,9 @@ PHP_FUNCTION(domxml_node_next_sibling) zval *id, *rv; xmlNode *nodep, *first; int ret; - + id = getThis(); - if(NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) - RETURN_FALSE; + if (NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) RETURN_FALSE; first = nodep->next; if (!first) { @@ -1168,10 +1266,9 @@ PHP_FUNCTION(domxml_node_previous_sibling) zval *id, *rv; xmlNode *nodep, *first; int ret; - + id = getThis(); - if(NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) - RETURN_FALSE; + if (NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) RETURN_FALSE; first = nodep->prev; if (!first) { @@ -1191,12 +1288,11 @@ PHP_FUNCTION(domxml_node_owner_document) { zval *id, *rv; xmlNode *nodep; - xmlDocPtr docp; + xmlDocPtr docp; int ret; - + id = getThis(); - if(NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) - RETURN_FALSE; + if (NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) RETURN_FALSE; docp = nodep->doc; if (!docp) { @@ -1216,10 +1312,9 @@ PHP_FUNCTION(domxml_node_has_child_nodes) { zval *id; xmlNode *nodep; - + id = getThis(); - if(NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) - RETURN_FALSE; + if (NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) RETURN_FALSE; if (nodep->children) { RETURN_TRUE; @@ -1235,12 +1330,11 @@ PHP_FUNCTION(domxml_node_has_attributes) { zval *id; xmlNode *nodep; - + id = getThis(); - if(NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) - RETURN_FALSE; + if (NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) RETURN_FALSE; - if(nodep->type != XML_ELEMENT_NODE) + if (nodep->type != XML_ELEMENT_NODE) RETURN_FALSE; if (nodep->properties) { @@ -1257,18 +1351,17 @@ PHP_FUNCTION(domxml_node_prefix) { zval *id; xmlNode *nodep; - xmlNsPtr ns; - + xmlNsPtr ns; + id = getThis(); - if(NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) - RETURN_FALSE; + if (NULL == (nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC))) RETURN_FALSE; ns = nodep->ns; if (!ns) { RETURN_EMPTY_STRING(); } - if(ns->prefix) { + if (ns->prefix) { RETURN_STRING((char *) (ns->prefix), 1); } else { RETURN_EMPTY_STRING(); @@ -1283,7 +1376,7 @@ PHP_FUNCTION(domxml_node_parent) zval *id, *rv; xmlNode *nodep, *last; int ret; - + id = getThis(); nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); @@ -1291,6 +1384,7 @@ PHP_FUNCTION(domxml_node_parent) if (!last) { RETURN_FALSE; } + rv = php_domobject_new(last, &ret TSRMLS_CC); SEPARATE_ZVAL(&rv); *return_value = *rv; @@ -1305,14 +1399,14 @@ PHP_FUNCTION(domxml_node_children) zval *id; xmlNode *nodep, *last; int ret; - + id = getThis(); - nodep = php_dom_get_object(id, le_domxmlnodep, le_domxmldocp TSRMLS_CC); + nodep = php_dom_get_object(id, le_domxmlnodep, le_domxmldocp TSRMLS_CC); /* Even if the nodep is a XML_DOCUMENT_NODE the type is at the same position. - */ - if(nodep->type == XML_DOCUMENT_NODE) + */ + if (nodep->type == XML_DOCUMENT_NODE) last = ((xmlDoc *) nodep)->children; else last = nodep->children; @@ -1324,7 +1418,7 @@ PHP_FUNCTION(domxml_node_children) RETURN_FALSE; } - while(last) { + while (last) { zval *child; child = php_domobject_new(last, &ret TSRMLS_CC); add_next_index_zval(return_value, child); @@ -1339,13 +1433,13 @@ PHP_FUNCTION(domxml_node_unlink_node) { zval *id; xmlNode *nodep; - + id = getThis(); nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); xmlUnlinkNode(nodep); xmlFreeNode(nodep); - zval_dtor(id); /* This is not enough because the children won't be deleted */ + zval_dtor(id); /* This is not enough because the children won't be deleted */ RETURN_TRUE; } /* }}} */ @@ -1361,6 +1455,7 @@ PHP_FUNCTION(domxml_node_add_child) if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &node) == FAILURE) { WRONG_PARAM_COUNT; } + id = getThis(); nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); child = php_dom_get_object(node, le_domxmlnodep, 0 TSRMLS_CC); @@ -1388,6 +1483,7 @@ PHP_FUNCTION(domxml_node_append_child) if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &node) == FAILURE) { WRONG_PARAM_COUNT; } + id = getThis(); nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); child = php_dom_get_object(node, le_domxmlnodep, 0 TSRMLS_CC); @@ -1415,6 +1511,7 @@ PHP_FUNCTION(domxml_node_insert_before) if (ZEND_NUM_ARGS() != 2 || getParameters(ht, 2, &node, &ref) == FAILURE) { WRONG_PARAM_COUNT; } + id = getThis(); nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); child = php_dom_get_object(node, le_domxmlnodep, 0 TSRMLS_CC); @@ -1447,7 +1544,7 @@ PHP_FUNCTION(domxml_node_set_name) nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); convert_to_string(name); - if(Z_STRLEN_P(name)) + if (Z_STRLEN_P(name)) xmlNodeSetName(nodep, Z_STRVAL_P(name)); RETURN_TRUE; @@ -1463,11 +1560,11 @@ PHP_FUNCTION(domxml_node_attributes) #ifdef oldstyle_for_libxml_1_8_7 xmlAttr *attr; #endif - + id = getThis(); nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); - if(node_attributes(&attrs, nodep TSRMLS_CC) < 0) + if (node_attributes(&attrs, nodep TSRMLS_CC) < 0) RETURN_FALSE; *return_value = *attrs; @@ -1483,7 +1580,7 @@ PHP_FUNCTION(domxml_node_attributes) RETURN_FALSE; } - while(attr) { + while (attr) { add_assoc_string(return_value, (char *) attr->name, xmlNodeGetContent(attr), 1); attr = attr->next; } @@ -1502,19 +1599,22 @@ PHP_FUNCTION(domxml_node_new_child) if (ZEND_NUM_ARGS() != 2 || getParameters(ht, 2, &name, &content) == FAILURE) { WRONG_PARAM_COUNT; } + id = getThis(); nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); convert_to_string(name); convert_to_string(content); - if(Z_STRLEN_P(content)) + if (Z_STRLEN_P(content)) child = xmlNewChild(nodep, NULL, Z_STRVAL_P(name), Z_STRVAL_P(content)); else child = xmlNewChild(nodep, NULL, Z_STRVAL_P(name), NULL); + if (!child) { RETURN_FALSE; } + rv = php_domobject_new(child, &ret TSRMLS_CC); SEPARATE_ZVAL(&rv); *return_value = *rv; @@ -1537,18 +1637,20 @@ PHP_FUNCTION(domxml_node_set_content) nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); convert_to_string(content); - if(Z_STRLEN_P(content)) + if (Z_STRLEN_P(content)) xmlNodeSetContent(nodep, Z_STRVAL_P(content)); /* FIXME: Actually the property 'content' of the node has to be updated as well. Since 'content' should disappear sooner or later and being replaces by a function 'content()' I skip this for now - */ + */ RETURN_TRUE; } +/* }}} */ /* End of Methods DomNode }}} */ + /* {{{ Methods of Class DomNotation */ /* {{{ proto string domxml_notation_public_id() @@ -1557,9 +1659,9 @@ PHP_FUNCTION(domxml_notation_public_id) { zval *id; xmlNotationPtr nodep; - + id = getThis(); - nodep = (xmlNotationPtr) php_dom_get_object(id, le_domxmlnotationp, 0 TSRMLS_CC); + nodep = (xmlNotationPtr) php_dom_get_object(id, le_domxmlnotationp, 0 TSRMLS_CC); RETURN_STRING((char *) (nodep->PublicID), 1); } @@ -1571,7 +1673,7 @@ PHP_FUNCTION(domxml_notation_system_id) { zval *id; xmlNotationPtr nodep; - + id = getThis(); nodep = (xmlNotationPtr) php_dom_get_object(id, le_domxmlnotationp, 0 TSRMLS_CC); @@ -1581,6 +1683,7 @@ PHP_FUNCTION(domxml_notation_system_id) /* End of Methods DomNotation }}} */ + /* {{{ Methods of Class DomElement */ /* {{{ proto object domxml_element(string name) @@ -1590,21 +1693,24 @@ PHP_FUNCTION(domxml_element) zval *arg, *rv; xmlNode *node; int ret; - + if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &arg) == FAILURE) { WRONG_PARAM_COUNT; } + convert_to_string(arg); node = xmlNewNode(NULL, Z_STRVAL_P(arg)); if (!node) { RETURN_FALSE; } + rv = php_domobject_new(node, &ret TSRMLS_CC); SEPARATE_ZVAL(&rv); *return_value = *rv; FREE_ZVAL(rv); } + /* }}} */ /* {{{ proto string domxml_elem_tagname() @@ -1613,7 +1719,7 @@ PHP_FUNCTION(domxml_elem_tagname) { zval *id; xmlNode *nodep; - + id = getThis(); nodep = php_dom_get_object(id, le_domxmlelementp, 0 TSRMLS_CC); @@ -1628,14 +1734,14 @@ PHP_FUNCTION(domxml_elem_get_attribute) zval *id, *arg1; xmlNode *nodep; char *value; - + if ((ZEND_NUM_ARGS() == 1) && getParameters(ht, 1, &arg1) == SUCCESS) { id = getThis(); nodep = php_dom_get_object(id, le_domxmlelementp, 0 TSRMLS_CC); } else { WRONG_PARAM_COUNT; } - + convert_to_string(arg1); value = xmlGetProp(nodep, Z_STRVAL_P(arg1)); @@ -1656,13 +1762,14 @@ PHP_FUNCTION(domxml_elem_set_attribute) xmlAttr *attr; int ret; - if ((ZEND_NUM_ARGS() == 2) && getParameters(ht, 2, &arg1, &arg2) == SUCCESS) { + if ((ZEND_NUM_ARGS() == 2) + && getParameters(ht, 2, &arg1, &arg2) == SUCCESS) { id = getThis(); nodep = php_dom_get_object(id, le_domxmlelementp, 0 TSRMLS_CC); } else { WRONG_PARAM_COUNT; } - + convert_to_string(arg1); convert_to_string(arg2); @@ -1671,6 +1778,7 @@ PHP_FUNCTION(domxml_elem_set_attribute) php_error(E_WARNING, "No such attribute '%s'", Z_STRVAL_P(arg1)); RETURN_FALSE; } + rv = php_domobject_new((xmlNodePtr) attr, &ret TSRMLS_CC); SEPARATE_ZVAL(&rv); *return_value = *rv; @@ -1684,14 +1792,14 @@ PHP_FUNCTION(domxml_elem_remove_attribute) { zval *id, *arg1; xmlNode *nodep; - + if ((ZEND_NUM_ARGS() == 1) && getParameters(ht, 1, &arg1) == SUCCESS) { id = getThis(); nodep = php_dom_get_object(id, le_domxmlelementp, 0 TSRMLS_CC); } else { WRONG_PARAM_COUNT; } - + convert_to_string(arg1); /* FIXME: not implemented */ @@ -1705,14 +1813,14 @@ PHP_FUNCTION(domxml_elem_get_attribute_node) { zval *id, *arg1; xmlNode *nodep; - + if ((ZEND_NUM_ARGS() == 1) && getParameters(ht, 1, &arg1) == SUCCESS) { id = getThis(); nodep = php_dom_get_object(id, le_domxmlelementp, 0 TSRMLS_CC); } else { WRONG_PARAM_COUNT; } - + convert_to_string(arg1); /* FIXME: not implemented */ @@ -1749,22 +1857,24 @@ PHP_FUNCTION(domxml_elem_get_element_by_tagname) { zval *id, *arg1; xmlNode *nodep; - + if ((ZEND_NUM_ARGS() == 1) && getParameters(ht, 1, &arg1) == SUCCESS) { id = getThis(); nodep = php_dom_get_object(id, le_domxmlelementp, 0 TSRMLS_CC); } else { WRONG_PARAM_COUNT; } - + convert_to_string(arg1); /* FIXME: not implemented */ } /* }}} */ + /* End of Methods DomElement }}} */ + /* {{{ Methods of Class DomDocumentType */ /* {{{ proto array domxml_doctype_name() @@ -1773,16 +1883,17 @@ PHP_FUNCTION(domxml_doctype_name) { zval *id; xmlNodePtr attrp; - + id = getThis(); attrp = php_dom_get_object(id, le_domxmldoctypep, 0 TSRMLS_CC); - + RETURN_STRING((char *) (attrp->name), 1); } /* }}} */ /* End of Methods DomElementType }}} */ + /* {{{ Methods of Class DomDocument */ /* {{{ proto object domxml_doc_doctype() @@ -1793,9 +1904,9 @@ PHP_FUNCTION(domxml_doc_doctype) xmlDtdPtr dtd; xmlDocPtr docp; int ret; - + id = getThis(); - if(NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { + if (NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { RETURN_FALSE; } @@ -1813,13 +1924,15 @@ PHP_FUNCTION(domxml_doc_implementation) { zval *id; xmlDocPtr docp; - + id = getThis(); - if(NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { + if (NULL == + (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { RETURN_FALSE; } -/* rv = php_domobject_new(node, &ret TSRMLS_CC); +/* + rv = php_domobject_new(node, &ret TSRMLS_CC); SEPARATE_ZVAL(&rv); *return_value = *rv; */ @@ -1834,9 +1947,9 @@ PHP_FUNCTION(domxml_doc_document_element) xmlDoc *docp; xmlNode *node; int ret; - + id = getThis(); - + if (!id) { if ((ZEND_NUM_ARGS() != 1) || getParameters(ht, 1, &id) == FAILURE) { RETURN_FALSE; @@ -1850,8 +1963,8 @@ PHP_FUNCTION(domxml_doc_document_element) RETURN_FALSE; } - while(node) { - if(node->type == XML_ELEMENT_NODE) { + while (node) { + if (node->type == XML_ELEMENT_NODE) { zval *rv; rv = php_domobject_new(node, &ret TSRMLS_CC); SEPARATE_ZVAL(&rv); @@ -1872,9 +1985,9 @@ PHP_FUNCTION(domxml_doc_create_element) xmlNode *node; xmlDocPtr docp; int ret; - + id = getThis(); - if(NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { + if (NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { RETURN_FALSE; } @@ -1904,9 +2017,9 @@ PHP_FUNCTION(domxml_doc_create_text_node) xmlNode *node; xmlDocPtr docp; int ret; - + id = getThis(); - if(NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { + if (NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { RETURN_FALSE; } @@ -1936,9 +2049,9 @@ PHP_FUNCTION(domxml_doc_create_comment) xmlNode *node; xmlDocPtr docp; int ret; - + id = getThis(); - if(NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { + if (NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { RETURN_FALSE; } @@ -1968,13 +2081,14 @@ PHP_FUNCTION(domxml_doc_create_attribute) xmlAttrPtr node; xmlDocPtr docp; int ret; - + id = getThis(); - if(NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { + if (NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { RETURN_FALSE; } - if (ZEND_NUM_ARGS() != 2 || getParameters(ht, 2, &arg1, &arg2) == FAILURE) { + if (ZEND_NUM_ARGS() != 2 + || getParameters(ht, 2, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_string(arg1); @@ -2001,9 +2115,9 @@ PHP_FUNCTION(domxml_doc_create_processing_instruction) xmlNode *node; xmlDocPtr docp; int ret; - + id = getThis(); - if(NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { + if (NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { RETURN_FALSE; } @@ -2034,17 +2148,18 @@ PHP_FUNCTION(domxml_doc_imported_node) xmlNodePtr node, srcnode; xmlDocPtr docp; int ret; - + id = getThis(); - if(NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { + if (NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { RETURN_FALSE; } if (ZEND_NUM_ARGS() != 2 || getParameters(ht, 2, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; } - srcnode = php_dom_get_object(arg1, le_domxmlnodep, 0 TSRMLS_CC); - if(!srcnode) + + srcnode = php_dom_get_object(arg1, le_domxmlnodep, 0 TSRMLS_CC); + if (!srcnode) RETURN_FALSE; convert_to_long(arg2); @@ -2053,7 +2168,7 @@ PHP_FUNCTION(domxml_doc_imported_node) if (!node) { RETURN_FALSE; } - node->doc = docp; /* Not enough because other nodes in the tree are not set */ + node->doc = docp; /* Not enough because other nodes in the tree are not set */ rv = php_domobject_new(node, &ret TSRMLS_CC); SEPARATE_ZVAL(&rv); @@ -2070,7 +2185,7 @@ PHP_FUNCTION(domxml_intdtd) xmlDoc *docp; xmlDtd *dtd; int ret; - + id = getThis(); docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC); @@ -2078,6 +2193,7 @@ PHP_FUNCTION(domxml_intdtd) if (!dtd) { RETURN_FALSE; } + rv = php_domobject_new((xmlNodePtr) dtd, &ret TSRMLS_CC); SEPARATE_ZVAL(&rv); *return_value = *rv; @@ -2093,9 +2209,9 @@ PHP_FUNCTION(domxml_dumpmem) xmlDoc *docp; xmlChar *mem; int size; - + id = getThis(); - if(NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { + if (NULL == (docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC))) { RETURN_FALSE; } @@ -2116,15 +2232,16 @@ PHP_FUNCTION(xmldoc) xmlDoc *docp; int ret; - if(argc > 2) + if (argc > 2) WRONG_PARAM_COUNT; - if(zend_get_parameters_array_ex(argc, argv) == FAILURE) + if (zend_get_parameters_array_ex(argc, argv) == FAILURE) WRONG_PARAM_COUNT; convert_to_string_ex(argv[0]); - if(argc == 2) { + + if (argc == 2) { convert_to_boolean_ex(argv[1]); - if(Z_BVAL_PP(argv[1])) { + if (Z_BVAL_PP(argv[1])) { docp = xmlParseFile(Z_STRVAL_PP(argv[0])); } else { docp = xmlParseDoc(Z_STRVAL_PP(argv[0])); @@ -2134,6 +2251,7 @@ PHP_FUNCTION(xmldoc) } if (!docp) RETURN_FALSE; + rv = php_domobject_new((xmlNodePtr) docp, &ret TSRMLS_CC); SEPARATE_ZVAL(&rv); *return_value = *rv; @@ -2148,10 +2266,11 @@ PHP_FUNCTION(xmldocfile) zval *arg, *rv; xmlDoc *docp; int ret; - + if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &arg) == FAILURE) { WRONG_PARAM_COUNT; } + convert_to_string(arg); docp = xmlParseFile(Z_STRVAL_P(arg)); @@ -2166,12 +2285,12 @@ PHP_FUNCTION(xmldocfile) FREE_ZVAL(rv); add_property_resource(return_value, "doc", ret); - if(docp->name) + if (docp->name) add_property_stringl(return_value, "name", (char *) docp->name, strlen(docp->name), 1); - if(docp->URL) + if (docp->URL) add_property_stringl(return_value, "url", (char *) docp->URL, strlen(docp->URL), 1); add_property_stringl(return_value, "version", (char *) docp->version, strlen(docp->version), 1); - if(docp->encoding) + if (docp->encoding) add_property_stringl(return_value, "encoding", (char *) docp->encoding, strlen(docp->encoding), 1); add_property_long(return_value, "standalone", docp->standalone); add_property_long(return_value, "type", docp->type); @@ -2196,7 +2315,7 @@ PHP_FUNCTION(domxml_node_text_concat) nodep = php_dom_get_object(id, le_domxmlnodep, 0 TSRMLS_CC); convert_to_string(content); - if(Z_STRLEN_P(content)) + if (Z_STRLEN_P(content)) xmlTextConcat(nodep, Z_STRVAL_P(content), Z_STRLEN_P(content)); RETURN_TRUE; @@ -2211,8 +2330,8 @@ PHP_FUNCTION(domxml_add_root) xmlDoc *docp; xmlNode *nodep; int ret; - - if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &name)==FAILURE) { + + if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &name) == FAILURE) { WRONG_PARAM_COUNT; } @@ -2224,8 +2343,9 @@ PHP_FUNCTION(domxml_add_root) if (!nodep) { RETURN_FALSE; } - - xmlDocSetRootElement(docp, nodep); + + xmlDocSetRootElement(docp, nodep); + rv = php_domobject_new(nodep, &ret TSRMLS_CC); SEPARATE_ZVAL(&rv); *return_value = *rv; @@ -2240,16 +2360,18 @@ PHP_FUNCTION(domxml_new_xmldoc) zval *arg, *rv; xmlDoc *docp; int ret; - + if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &arg) == FAILURE) { WRONG_PARAM_COUNT; } + convert_to_string(arg); docp = xmlNewDoc(Z_STRVAL_P(arg)); if (!docp) { RETURN_FALSE; } + rv = php_domobject_new((xmlNodePtr) docp, &ret TSRMLS_CC); if (!rv) { RETURN_FALSE; @@ -2267,7 +2389,7 @@ static int node_namespace(zval **attributes, xmlNode *nodep TSRMLS_DC) { xmlNs *ns; - /* Get the children of the current node */ + /* Get the children of the current node */ ns = nodep->ns; if (!ns) { return -1; @@ -2279,24 +2401,27 @@ static int node_namespace(zval **attributes, xmlNode *nodep TSRMLS_DC) return -1; } - while(ns) { + while (ns) { zval *pattr; int ret; pattr = php_domobject_new((xmlNodePtr) ns, &ret TSRMLS_CC); SEPARATE_ZVAL(&pattr); + /* if(!ret) { */ - if(ns->href) - add_property_stringl(pattr, "href", (char *) ns->href, strlen(ns->href), 1); - if(ns->prefix) - add_property_stringl(pattr, "prefix", (char *) ns->prefix, strlen(ns->prefix), 1); - add_property_long(pattr, "type", ns->type); + if (ns->href) + add_property_stringl(pattr, "href", (char *) ns->href, strlen(ns->href), 1); + if (ns->prefix) + add_property_stringl(pattr, "prefix", (char *) ns->prefix, strlen(ns->prefix), 1); + add_property_long(pattr, "type", ns->type); /* } */ + zend_hash_next_index_insert(Z_ARRVAL_PP(attributes), &pattr, sizeof(zval *), NULL); ns = ns->next; } return 0; } +/* }}} */ #endif /* {{{ proto int node_attributes(zval **attributes, int node) @@ -2306,8 +2431,8 @@ static int node_attributes(zval **attributes, xmlNode *nodep TSRMLS_DC) xmlAttr *attr; int count = 0; - /* Get the children of the current node */ - if(nodep->type != XML_ELEMENT_NODE) + /* Get the children of the current node */ + if (nodep->type != XML_ELEMENT_NODE) return -1; attr = nodep->properties; if (!attr) @@ -2317,7 +2442,7 @@ static int node_attributes(zval **attributes, xmlNode *nodep TSRMLS_DC) MAKE_STD_ZVAL(*attributes); array_init(*attributes); - while(attr) { + while (attr) { zval *pattr; int ret; @@ -2326,7 +2451,7 @@ static int node_attributes(zval **attributes, xmlNode *nodep TSRMLS_DC) /* if(0 <= (n = node_children(&children, attr->children TSRMLS_CC))) { zend_hash_update(Z_OBJPROP_P(value), "children", sizeof("children"), (void *) &children, sizeof(zval *), NULL); } -*/ add_property_string(pattr, "name", (char *) (attr->name), 1); +*/ add_property_string(pattr, "name", (char *) (attr->name), 1); add_property_string(pattr, "value", xmlNodeGetContent((xmlNodePtr) attr), 1); zend_hash_next_index_insert(Z_ARRVAL_PP(attributes), &pattr, sizeof(zval *), NULL); attr = attr->next; @@ -2334,6 +2459,7 @@ static int node_attributes(zval **attributes, xmlNode *nodep TSRMLS_DC) } return count; } +/* }}} */ /* {{{ proto int node_children([int node]) Returns list of children nodes */ @@ -2344,7 +2470,7 @@ static int node_children(zval **children, xmlNode *nodep TSRMLS_DC) xmlNode *last; int count = 0; - /* Get the children of the current node */ + /* Get the children of the current node */ last = nodep; if (!last) { return -1; @@ -2354,25 +2480,26 @@ static int node_children(zval **children, xmlNode *nodep TSRMLS_DC) MAKE_STD_ZVAL(*children); array_init(*children); - while(last) { + while (last) { zval *child; int ret; - + child = php_domobject_new(last, &ret TSRMLS_CC); zend_hash_next_index_insert(Z_ARRVAL_PP(children), &child, sizeof(zval *), NULL); /* Get the namespace of the current node and add it as a property */ /* XXX FIXME XXX */ -/* if(!node_namespace(&namespace, last)) +/* + if(!node_namespace(&namespace, last)) zend_hash_update(Z_OBJPROP_P(child), "namespace", sizeof("namespace"), (void *) &namespace, sizeof(zval *), NULL); */ /* Get the attributes of the current node and add it as a property */ - if(node_attributes(&attributes, last TSRMLS_CC) >= 0) + if (node_attributes(&attributes, last TSRMLS_CC) >= 0) zend_hash_update(Z_OBJPROP_P(child), "attributes", sizeof("attributes"), (void *) &attributes, sizeof(zval *), NULL); /* Get recursively the children of the current node and add it as a property */ - if(node_children(&mchildren, last->children TSRMLS_CC) >= 0) + if (node_children(&mchildren, last->children TSRMLS_CC) >= 0) zend_hash_update(Z_OBJPROP_P(child), "children", sizeof("children"), (void *) &mchildren, sizeof(zval *), NULL); count++; last = last->next; @@ -2389,10 +2516,11 @@ PHP_FUNCTION(xmltree) xmlDoc *docp; xmlNode *root; int ret; - + if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &arg) == FAILURE) { WRONG_PARAM_COUNT; } + convert_to_string(arg); /* Create a new xml document */ @@ -2419,10 +2547,9 @@ PHP_FUNCTION(xmltree) /* The root itself maybe an array. Though you may not have two Elements as root, you may have a comment, pi and and element as root. Thanks to Paul DuBois for pointing me at this. - */ + */ if (node_children(&children, root TSRMLS_CC) >= 0) { - zend_hash_update(Z_OBJPROP_P(return_value), "children", - sizeof("children"), (void *) &children, sizeof(zval *), NULL); + zend_hash_update(Z_OBJPROP_P(return_value), "children",sizeof("children"), (void *) &children, sizeof(zval *), NULL); } /* xmlFreeDoc(docp); */ } @@ -2442,18 +2569,20 @@ PHP_FUNCTION(xpath_init) } /* }}} */ +/* {{{ php_xpathptr_new_context() + */ static void php_xpathptr_new_context(INTERNAL_FUNCTION_PARAMETERS, int mode) { zval *id, *rv; xmlXPathContextPtr ctx; xmlDocPtr docp; int ret; - + id = getThis(); docp = php_dom_get_object(id, le_domxmldocp, 0 TSRMLS_CC); - + #if defined(LIBXML_XPTR_ENABLED) - if(mode == PHP_XPTR) + if (mode == PHP_XPTR) ctx = xmlXPtrNewContext(docp, NULL, NULL); else #endif @@ -2461,6 +2590,7 @@ static void php_xpathptr_new_context(INTERNAL_FUNCTION_PARAMETERS, int mode) if (!ctx) { RETURN_FALSE; } + rv = php_xpathcontext_new(ctx, &ret TSRMLS_CC); SEPARATE_ZVAL(&rv); *return_value = *rv; @@ -2484,7 +2614,8 @@ PHP_FUNCTION(xptr_new_context) } /* }}} */ -/* {{{ */ +/* {{{ php_xpathptr_eval() + */ static void php_xpathptr_eval(INTERNAL_FUNCTION_PARAMETERS, int mode, int expr) { zval *id, *str, *rv, *contextnode; @@ -2492,48 +2623,46 @@ static void php_xpathptr_eval(INTERNAL_FUNCTION_PARAMETERS, int mode, int expr) xmlXPathObjectPtr xpathobjp; xmlNode *contextnodep; int ret; - + contextnode = NULL; contextnodep = NULL; id = getThis(); - - if (! id) { - switch(ZEND_NUM_ARGS()) { - case 2: - if ((getParameters(ht, 2, &id, &str)) == FAILURE) - { - WRONG_PARAM_COUNT; - } - break; - - case 3: - if ((getParameters(ht, 3, &id, &str, &contextnode)) == FAILURE) - { - WRONG_PARAM_COUNT; - } - break; - - default: + + if (!id) { + switch (ZEND_NUM_ARGS()) { + case 2: + if ((getParameters(ht, 2, &id, &str)) == FAILURE) { WRONG_PARAM_COUNT; + } + break; + + case 3: + if ((getParameters(ht, 3, &id, &str, &contextnode)) == FAILURE) { + WRONG_PARAM_COUNT; + } + break; + + default: + WRONG_PARAM_COUNT; } } - - + + ctxp = php_xpath_get_context(id, le_xpathctxp, 0 TSRMLS_CC); convert_to_string(str); - + if (contextnode) { contextnodep = php_dom_get_object(contextnode, le_domxmlnodep, 0 TSRMLS_CC); } ctxp->node = contextnodep; #if defined(LIBXML_XPTR_ENABLED) - if(mode == PHP_XPTR) { + if (mode == PHP_XPTR) { xpathobjp = xmlXPtrEval(BAD_CAST Z_STRVAL_P(str), ctxp); - } else{ + } else { #endif - if(expr) + if (expr) xpathobjp = xmlXPathEvalExpression(Z_STRVAL_P(str), ctxp); else xpathobjp = xmlXPathEval(Z_STRVAL_P(str), ctxp); @@ -2550,10 +2679,14 @@ static void php_xpathptr_eval(INTERNAL_FUNCTION_PARAMETERS, int mode, int expr) SEPARATE_ZVAL(&rv); add_property_long(rv, "type", xpathobjp->type); - switch(xpathobjp->type) { + + switch (xpathobjp->type) { + case XPATH_UNDEFINED: break; - case XPATH_NODESET: { + + case XPATH_NODESET: + { int i; zval *arr; xmlNodeSetPtr nodesetp; @@ -2563,12 +2696,13 @@ static void php_xpathptr_eval(INTERNAL_FUNCTION_PARAMETERS, int mode, int expr) zval_dtor(rv); RETURN_FALSE; } - if(NULL == (nodesetp = xpathobjp->nodesetval)) { + + if (NULL == (nodesetp = xpathobjp->nodesetval)) { zval_dtor(rv); RETURN_FALSE; } - for(i = 0;i < nodesetp->nodeNr;i++) { + for (i = 0; i < nodesetp->nodeNr; i++) { xmlNodePtr node = nodesetp->nodeTab[i]; zval *child; int retnode; @@ -2580,26 +2714,35 @@ static void php_xpathptr_eval(INTERNAL_FUNCTION_PARAMETERS, int mode, int expr) zend_hash_update(Z_OBJPROP_P(rv), "nodeset", sizeof("nodeset"), (void *) &arr, sizeof(zval *), NULL); break; } + case XPATH_BOOLEAN: add_property_bool(rv, "value", xpathobjp->boolval); break; + case XPATH_NUMBER: add_property_double(rv, "value", xpathobjp->floatval); break; + case XPATH_STRING: add_property_string(rv, "value", xpathobjp->stringval, 1); break; + case XPATH_POINT: break; + case XPATH_RANGE: break; + case XPATH_LOCATIONSET: break; + case XPATH_USERS: break; + case XPATH_XSLT_TREE: break; } + *return_value = *rv; } /* }}} */ @@ -2619,7 +2762,7 @@ PHP_FUNCTION(xpath_eval_expression) php_xpathptr_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_XPATH, 1); } /* }}} */ -#endif /* defined(LIBXML_XPATH_ENABLED) */ +#endif /* defined(LIBXML_XPATH_ENABLED) */ #if defined(LIBXML_XPTR_ENABLED) /* {{{ proto int xptr_eval([int xpathctx_handle, ] string str) @@ -2629,18 +2772,18 @@ PHP_FUNCTION(xptr_eval) php_xpathptr_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_XPTR, 0); } /* }}} */ -#endif /* LIBXML_XPTR_ENABLED */ +#endif /* LIBXML_XPTR_ENABLED */ /* {{{ proto string domxml_version() Dumps document into string */ PHP_FUNCTION(domxml_version) { - RETURN_STRING(LIBXML_DOTTED_VERSION, 1); } /* }}} */ #endif /* HAVE_DOMXML */ + /* * Local variables: * tab-width: 4