Lines Matching refs:sxe

46 static xmlNodePtr php_sxe_reset_iterator(php_sxe_object *sxe, int use_data);
47 static xmlNodePtr php_sxe_reset_iterator_no_clear_iter_data(php_sxe_object *sxe, int use_data);
48 static xmlNodePtr php_sxe_iterator_fetch(php_sxe_object *sxe, xmlNodePtr node, int use_data);
58 static void _node_as_zval(php_sxe_object *sxe, xmlNodePtr node, zval *value, SXE_ITER itertype, cha… in _node_as_zval() argument
62 subnode = php_sxe_object_new(sxe->zo.ce, sxe->fptr_count); in _node_as_zval()
63 subnode->document = sxe->document; in _node_as_zval()
80 static xmlNodePtr php_sxe_get_first_node_non_destructive(php_sxe_object *sxe, xmlNodePtr node) in php_sxe_get_first_node_non_destructive() argument
82 if (sxe && sxe->iter.type != SXE_ITER_NONE) { in php_sxe_get_first_node_non_destructive()
83 return php_sxe_reset_iterator_no_clear_iter_data(sxe, false); in php_sxe_get_first_node_non_destructive()
89 static inline int match_ns(php_sxe_object *sxe, xmlNodePtr node, xmlChar *name, int prefix) /* {{{ … in match_ns() argument
103 static xmlNodePtr sxe_get_element_by_offset(php_sxe_object *sxe, zend_long offset, xmlNodePtr node,… in sxe_get_element_by_offset() argument
107 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_get_element_by_offset()
118 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_get_element_by_offset()
119 if (sxe->iter.type == SXE_ITER_CHILD || ( in sxe_get_element_by_offset()
120 sxe->iter.type == SXE_ITER_ELEMENT && xmlStrEqual(node->name, sxe->iter.name))) { in sxe_get_element_by_offset()
138 static xmlNodePtr sxe_find_element_by_name(php_sxe_object *sxe, xmlNodePtr node, xmlChar *name) /* … in sxe_find_element_by_name() argument
141 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_find_element_by_name()
151 static xmlNodePtr sxe_get_element_by_name(php_sxe_object *sxe, xmlNodePtr node, char *name, SXE_ITE… in sxe_get_element_by_name() argument
156 if (sxe->iter.type != SXE_ITER_ATTRLIST) in sxe_get_element_by_name()
158 orgtype = sxe->iter.type; in sxe_get_element_by_name()
159 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_get_element_by_name()
160 sxe->iter.type = SXE_ITER_CHILD; in sxe_get_element_by_name()
162 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_get_element_by_name()
163 sxe->iter.type = orgtype; in sxe_get_element_by_name()
166 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_get_element_by_name()
167 orgnode = sxe_find_element_by_name(sxe, node, sxe->iter.name); in sxe_get_element_by_name()
175 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_get_element_by_name()
191 php_sxe_object *sxe; in sxe_prop_dim_read() local
199 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_read()
202 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
211 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
230 GET_NODE(sxe, node); in sxe_prop_dim_read()
232 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
235 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_read()
237 test = sxe->iter.name != NULL; in sxe_prop_dim_read()
238 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_read()
239 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_read()
254 if (Z_TYPE_P(member) != IS_LONG || sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
257 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->it… in sxe_prop_dim_read()
259 …_node_as_zval(sxe, (xmlNodePtr) attr, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.ispre… in sxe_prop_dim_read()
268 …ual(attr->name, sxe->iter.name)) && xmlStrEqual(attr->name, (xmlChar *)name) && match_ns(sxe, (xml… in sxe_prop_dim_read()
269 …_node_as_zval(sxe, (xmlNodePtr) attr, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.ispre… in sxe_prop_dim_read()
279 if (!sxe->node) { in sxe_prop_dim_read()
280 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, node, NULL); in sxe_prop_dim_read()
286 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_read()
287 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_read()
289 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_prop_dim_read()
294 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, &cnt); in sxe_prop_dim_read()
299 _node_as_zval(sxe, node, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_prop_dim_read()
305 _node_as_zval(sxe, node, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_prop_dim_read()
309 if (type != BP_VAR_IS || sxe_find_element_by_name(sxe, node->children, (xmlChar *) name)) { in sxe_prop_dim_read()
310 _node_as_zval(sxe, node, rv, SXE_ITER_ELEMENT, name, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_prop_dim_read()
359 php_sxe_object *sxe; in sxe_prop_dim_write() local
374 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_write()
377 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
389 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
416 GET_NODE(sxe, node); in sxe_prop_dim_write()
418 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
421 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_write()
423 test = sxe->iter.name != NULL; in sxe_prop_dim_write()
424 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_write()
426 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_write()
438 if (attribs && !node && sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_prop_dim_write()
439 node = xmlNewChild(mynode, mynode->ns, sxe->iter.name, NULL); in sxe_prop_dim_write()
483 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->it… in sxe_prop_dim_write()
495 …r->name, sxe->iter.name)) && xmlStrEqual(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_write()
516 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_prop_dim_write()
524 newnode = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, &cnt); in sxe_prop_dim_write()
534 …ual(node->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sxe, node, sxe->iter.nsprefix, sxe->ite… in sxe_prop_dim_write()
613 php_sxe_object *sxe; in sxe_property_get_adr() local
620 sxe = php_sxe_fetch_object(object); in sxe_property_get_adr()
621 GET_NODE(sxe, node); in sxe_property_get_adr()
626 node = sxe_get_element_by_name(sxe, node, name, &type); in sxe_property_get_adr()
637 _node_as_zval(sxe, node, &ret, type, name, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_property_get_adr()
639 if (!Z_ISUNDEF(sxe->tmp)) { in sxe_property_get_adr()
640 zval_ptr_dtor(&sxe->tmp); in sxe_property_get_adr()
643 ZVAL_COPY_VALUE(&sxe->tmp, &ret); in sxe_property_get_adr()
645 return &sxe->tmp; in sxe_property_get_adr()
652 php_sxe_object *sxe; in sxe_prop_dim_exists() local
668 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_exists()
670 GET_NODE(sxe, node); in sxe_prop_dim_exists()
673 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_exists()
676 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_exists()
677 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_exists()
682 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_exists()
685 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_exists()
687 test = sxe->iter.name != NULL; in sxe_prop_dim_exists()
688 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_exists()
689 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_exists()
700 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->it… in sxe_prop_dim_exists()
711 …r->name, sxe->iter.name)) && xmlStrEqual(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_exists()
728 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_exists()
729 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_exists()
731 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL); in sxe_prop_dim_exists()
733 node = sxe_find_element_by_name(sxe, node->children, (xmlChar *)Z_STRVAL_P(member)); in sxe_prop_dim_exists()
773 php_sxe_object *sxe; in sxe_prop_dim_delete() local
790 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_delete()
792 GET_NODE(sxe, node); in sxe_prop_dim_delete()
795 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_delete()
798 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_delete()
799 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_delete()
804 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_delete()
807 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_delete()
809 test = sxe->iter.name != NULL; in sxe_prop_dim_delete()
810 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_delete()
811 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_delete()
824 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->it… in sxe_prop_dim_delete()
837 …r->name, sxe->iter.name)) && xmlStrEqual(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_delete()
849 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_delete()
850 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_delete()
852 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL); in sxe_prop_dim_delete()
864 …ual(node->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sxe, node, sxe->iter.nsprefix, sxe->ite… in sxe_prop_dim_delete()
967 php_sxe_object *sxe; in sxe_prop_is_empty() local
974 sxe = php_sxe_fetch_object(object); in sxe_prop_is_empty()
976 GET_NODE(sxe, node); in sxe_prop_is_empty()
981 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_prop_is_empty()
982 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_is_empty()
986 test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST; in sxe_prop_is_empty()
988 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr)attr, sxe->ite… in sxe_prop_is_empty()
995 GET_NODE(sxe, node); in sxe_prop_is_empty()
996 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_is_empty()
998 if (node && sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_is_empty()
1001 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_is_empty()
1002 …if (sxe->iter.type == SXE_ITER_NONE || !node->children || !node->parent || node->children->next ||… in sxe_prop_is_empty()
1005 node = php_sxe_reset_iterator_no_clear_iter_data(sxe, 0); in sxe_prop_is_empty()
1024 …if (node->type == XML_ELEMENT_NODE && (! match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefi… in sxe_prop_is_empty()
1036 node = php_sxe_iterator_fetch(sxe, node->next, 0); in sxe_prop_is_empty()
1052 php_sxe_object *sxe; in sxe_get_prop_hash() local
1060 sxe = php_sxe_fetch_object(object); in sxe_get_prop_hash()
1064 } else if (sxe->properties) { in sxe_get_prop_hash()
1065 zend_hash_clean(sxe->properties); in sxe_get_prop_hash()
1066 rv = sxe->properties; in sxe_get_prop_hash()
1069 sxe->properties = rv; in sxe_get_prop_hash()
1072 GET_NODE(sxe, node); in sxe_get_prop_hash()
1076 if (is_debug || sxe->iter.type != SXE_ITER_CHILD) { in sxe_get_prop_hash()
1077 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_get_prop_hash()
1078 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_get_prop_hash()
1083 test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST; in sxe_get_prop_hash()
1085 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr)attr, sxe->ite… in sxe_get_prop_hash()
1086 ZVAL_STR(&value, sxe_xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, attr->children, 1)); in sxe_get_prop_hash()
1099 GET_NODE(sxe, node); in sxe_get_prop_hash()
1100 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_get_prop_hash()
1102 if (node && sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_get_prop_hash()
1107 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_get_prop_hash()
1108 …if ( sxe->iter.type == SXE_ITER_NONE || !node->children || !node->parent || !node->next || node->c… in sxe_get_prop_hash()
1111 node = php_sxe_reset_iterator_no_clear_iter_data(sxe, 0); in sxe_get_prop_hash()
1131 …if (node->type == XML_ELEMENT_NODE && (! match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefi… in sxe_get_prop_hash()
1142 _get_base_node_value(sxe, node, &value, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_get_prop_hash()
1157 node = php_sxe_iterator_fetch(sxe, node->next, 0); in sxe_get_prop_hash()
1169 php_sxe_object *sxe; in sxe_get_gc() local
1170 sxe = php_sxe_fetch_object(object); in sxe_get_gc()
1174 return sxe->properties; in sxe_get_gc()
1225 php_sxe_object *sxe; in PHP_METHOD() local
1240 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1242 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1246 GET_NODE(sxe, nodeptr); in PHP_METHOD()
1247 nodeptr = php_sxe_get_first_node_non_destructive(sxe, nodeptr); in PHP_METHOD()
1252 if (!sxe->xpath) { in PHP_METHOD()
1253 sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr); in PHP_METHOD()
1255 sxe->xpath->node = nodeptr; in PHP_METHOD()
1257 ns = xmlGetNsList((xmlDocPtr) sxe->document->ptr, nodeptr); in PHP_METHOD()
1264 sxe->xpath->namespaces = ns; in PHP_METHOD()
1265 sxe->xpath->nsNr = nsnbr; in PHP_METHOD()
1267 retval = xmlXPathEval((xmlChar *)query, sxe->xpath); in PHP_METHOD()
1270 sxe->xpath->namespaces = NULL; in PHP_METHOD()
1271 sxe->xpath->nsNr = 0; in PHP_METHOD()
1293 _node_as_zval(sxe, nodeptr->parent, &value, SXE_ITER_NONE, NULL, NULL, 0); in PHP_METHOD()
1295 …_node_as_zval(sxe, nodeptr->parent, &value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, nodeptr->ns ?… in PHP_METHOD()
1297 _node_as_zval(sxe, nodeptr, &value, SXE_ITER_NONE, NULL, NULL, 0); in PHP_METHOD()
1314 php_sxe_object *sxe; in PHP_METHOD() local
1322 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1323 if (!sxe->document) { in PHP_METHOD()
1328 if (!sxe->xpath) { in PHP_METHOD()
1329 sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr); in PHP_METHOD()
1332 if (xmlXPathRegisterNs(sxe->xpath, (xmlChar *)prefix, (xmlChar *)ns_uri) != 0) { in PHP_METHOD()
1343 php_sxe_object *sxe; in PHP_METHOD() local
1355 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1356 GET_NODE(sxe, node); in PHP_METHOD()
1357 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1366 bytes = xmlSaveFile(filename, (xmlDocPtr) sxe->document->ptr); in PHP_METHOD()
1379 xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, NULL); in PHP_METHOD()
1386 …xmlDocDumpMemoryEnc((xmlDocPtr) sxe->document->ptr, &strval, &strval_len, (const char *) ((xmlDocP… in PHP_METHOD()
1403 …xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, (const char *) ((xmlDocPtr) in PHP_METHOD()
1438 static void sxe_add_namespaces(php_sxe_object *sxe, xmlNodePtr node, bool recursive, zval *return_v… in sxe_add_namespaces() argument
1458 sxe_add_namespaces(sxe, node, recursive, return_value); in sxe_add_namespaces()
1469 php_sxe_object *sxe; in PHP_METHOD() local
1478 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1479 GET_NODE(sxe, node); in PHP_METHOD()
1480 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1484 sxe_add_namespaces(sxe, node, recursive, return_value); in PHP_METHOD()
1492 static void sxe_add_registered_namespaces(php_sxe_object *sxe, xmlNodePtr node, bool recursive, boo… in sxe_add_registered_namespaces() argument
1519 sxe_add_registered_namespaces(sxe, node, recursive, include_xmlns_attributes, return_value); in sxe_add_registered_namespaces()
1531 php_sxe_object *sxe; in PHP_METHOD() local
1538 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1540 if (!sxe->document) { in PHP_METHOD()
1545 node = xmlDocGetRootElement((xmlDocPtr)sxe->document->ptr); in PHP_METHOD()
1547 GET_NODE(sxe, node); in PHP_METHOD()
1555 bool include_xmlns_attributes = sxe->document->class_type == PHP_LIBXML_CLASS_MODERN; in PHP_METHOD()
1558 sxe_add_registered_namespaces(sxe, node, recursive, include_xmlns_attributes, return_value); in PHP_METHOD()
1565 php_sxe_object *sxe; in PHP_METHOD() local
1575 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1577 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1581 GET_NODE(sxe, node); in PHP_METHOD()
1582 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1587 _node_as_zval(sxe, node, return_value, SXE_ITER_CHILD, NULL, (xmlChar *)nsprefix, isprefix); in PHP_METHOD()
1595 php_sxe_object *sxe; in PHP_METHOD() local
1603 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1605 GET_NODE(sxe, node); in PHP_METHOD()
1606 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1619 php_sxe_object *sxe; in PHP_METHOD() local
1629 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1630 GET_NODE(sxe, node); in PHP_METHOD()
1631 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1636 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1640 _node_as_zval(sxe, node, return_value, SXE_ITER_ATTRLIST, NULL, (xmlChar *)nsprefix, isprefix); in PHP_METHOD()
1647 php_sxe_object *sxe; in PHP_METHOD() local
1664 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1665 GET_NODE(sxe, node); in PHP_METHOD()
1667 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1672 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1701 _node_as_zval(sxe, newnode, return_value, SXE_ITER_NONE, (char *)localname, prefix, 0); in PHP_METHOD()
1713 php_sxe_object *sxe; in PHP_METHOD() local
1731 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1732 GET_NODE(sxe, node); in PHP_METHOD()
1734 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1815 php_sxe_object *sxe; in sxe_object_cast_ex() local
1821 sxe = php_sxe_fetch_object(readobj); in sxe_object_cast_ex()
1824 node = php_sxe_get_first_node_non_destructive(sxe, NULL); in sxe_object_cast_ex()
1833 if (sxe->iter.type != SXE_ITER_NONE) { in sxe_object_cast_ex()
1834 node = php_sxe_get_first_node_non_destructive(sxe, NULL); in sxe_object_cast_ex()
1836 contents = xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, node->children, 1); in sxe_object_cast_ex()
1839 if (!sxe->node) { in sxe_object_cast_ex()
1840 if (sxe->document) { in sxe_object_cast_ex()
1841 …php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement((xmlDocPtr) sxe-… in sxe_object_cast_ex()
1845 if (sxe->node && sxe->node->node) { in sxe_object_cast_ex()
1846 if (sxe->node->node->children) { in sxe_object_cast_ex()
1847 contents = xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, sxe->node->node->children, 1); in sxe_object_cast_ex()
1848 } else if (sxe->node->node->type == XML_COMMENT_NODE || sxe->node->node->type == XML_PI_NODE) { in sxe_object_cast_ex()
1849 contents = sxe->node->node->content; in sxe_object_cast_ex()
1892 static zend_result php_sxe_count_elements_helper(php_sxe_object *sxe, zend_long *count) /* {{{ */ in php_sxe_count_elements_helper() argument
1896 xmlNodePtr node = php_sxe_reset_iterator_no_clear_iter_data(sxe, 0); in php_sxe_count_elements_helper()
1901 node = php_sxe_iterator_fetch(sxe, node->next, 0); in php_sxe_count_elements_helper()
1930 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
1936 php_sxe_count_elements_helper(sxe, &count); in PHP_METHOD()
1957 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
1963 RETURN_BOOL(!Z_ISUNDEF(sxe->iter.data)); in PHP_METHOD()
1970 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
1976 if (Z_ISUNDEF(sxe->iter.data)) { in PHP_METHOD()
1981 RETURN_COPY_DEREF(&sxe->iter.data); in PHP_METHOD()
1990 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
1996 if (Z_ISUNDEF(sxe->iter.data)) { in PHP_METHOD()
2001 intern = Z_SXEOBJ_P(&sxe->iter.data); in PHP_METHOD()
2026 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2034 if (Z_ISUNDEF(sxe->iter.data) || sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
2037 child = Z_SXEOBJ_P(&sxe->iter.data); in PHP_METHOD()
2053 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2059 if (Z_ISUNDEF(sxe->iter.data) || sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
2063 RETURN_COPY_DEREF(&sxe->iter.data); in PHP_METHOD()
2072 php_sxe_object *sxe = php_sxe_fetch_object(object); in sxe_object_clone() local
2076 bool is_root_element = sxe->node && sxe->node->node && sxe->node->node->parent in sxe_object_clone()
2077 …&& (sxe->node->node->parent->type == XML_DOCUMENT_NODE || sxe->node->node->parent->type == XML_HTM… in sxe_object_clone()
2079 clone = php_sxe_object_new(sxe->zo.ce, sxe->fptr_count); in sxe_object_clone()
2082 docp = xmlCopyDoc(sxe->document->ptr, 1); in sxe_object_clone()
2085 clone->document = sxe->document; in sxe_object_clone()
2092 clone->iter.isprefix = sxe->iter.isprefix; in sxe_object_clone()
2093 if (sxe->iter.name != NULL) { in sxe_object_clone()
2094 clone->iter.name = (xmlChar*)estrdup((char*)sxe->iter.name); in sxe_object_clone()
2096 if (sxe->iter.nsprefix != NULL) { in sxe_object_clone()
2097 clone->iter.nsprefix = (xmlChar*)estrdup((char*)sxe->iter.nsprefix); in sxe_object_clone()
2099 clone->iter.type = sxe->iter.type; in sxe_object_clone()
2101 if (sxe->node) { in sxe_object_clone()
2105 nodep = xmlDocCopyNode(sxe->node->node, docp, 1); in sxe_object_clone()
2118 php_sxe_object *sxe; in sxe_object_free_storage() local
2120 sxe = php_sxe_fetch_object(object); in sxe_object_free_storage()
2122 zend_object_std_dtor(&sxe->zo); in sxe_object_free_storage()
2124 if (!Z_ISUNDEF(sxe->iter.data)) { in sxe_object_free_storage()
2125 zval_ptr_dtor(&sxe->iter.data); in sxe_object_free_storage()
2126 ZVAL_UNDEF(&sxe->iter.data); in sxe_object_free_storage()
2129 if (sxe->iter.name) { in sxe_object_free_storage()
2130 efree(sxe->iter.name); in sxe_object_free_storage()
2131 sxe->iter.name = NULL; in sxe_object_free_storage()
2133 if (sxe->iter.nsprefix) { in sxe_object_free_storage()
2134 efree(sxe->iter.nsprefix); in sxe_object_free_storage()
2135 sxe->iter.nsprefix = NULL; in sxe_object_free_storage()
2137 if (!Z_ISUNDEF(sxe->tmp)) { in sxe_object_free_storage()
2138 zval_ptr_dtor(&sxe->tmp); in sxe_object_free_storage()
2139 ZVAL_UNDEF(&sxe->tmp); in sxe_object_free_storage()
2142 php_libxml_node_decrement_resource((php_libxml_node_object *)sxe); in sxe_object_free_storage()
2144 if (sxe->xpath) { in sxe_object_free_storage()
2145 xmlXPathFreeContext(sxe->xpath); in sxe_object_free_storage()
2148 if (sxe->properties) { in sxe_object_free_storage()
2149 zend_hash_destroy(sxe->properties); in sxe_object_free_storage()
2150 FREE_HASHTABLE(sxe->properties); in sxe_object_free_storage()
2215 php_sxe_object *sxe; in PHP_FUNCTION() local
2249 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2250 sxe->iter.nsprefix = ns_len ? (xmlChar*)estrdup(ns) : NULL; in PHP_FUNCTION()
2251 sxe->iter.isprefix = isprefix; in PHP_FUNCTION()
2252 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in PHP_FUNCTION()
2253 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in PHP_FUNCTION()
2255 RETURN_OBJ(&sxe->zo); in PHP_FUNCTION()
2262 php_sxe_object *sxe; in PHP_FUNCTION() local
2304 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2305 sxe->iter.nsprefix = ns_len ? (xmlChar*)estrdup(ns) : NULL; in PHP_FUNCTION()
2306 sxe->iter.isprefix = isprefix; in PHP_FUNCTION()
2307 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in PHP_FUNCTION()
2308 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in PHP_FUNCTION()
2310 RETURN_OBJ(&sxe->zo); in PHP_FUNCTION()
2317 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2346 ((php_libxml_node_object *)sxe)->document = NULL; in PHP_METHOD()
2351 sxe->iter.nsprefix = ns_len ? (xmlChar*)estrdup(ns) : NULL; in PHP_METHOD()
2352 sxe->iter.isprefix = isprefix; in PHP_METHOD()
2353 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in PHP_METHOD()
2354 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in PHP_METHOD()
2370 static xmlNodePtr php_sxe_iterator_fetch(php_sxe_object *sxe, xmlNodePtr node, int use_data) /* {{{… in php_sxe_iterator_fetch() argument
2372 xmlChar *prefix = sxe->iter.nsprefix; in php_sxe_iterator_fetch()
2373 int isprefix = sxe->iter.isprefix; in php_sxe_iterator_fetch()
2375 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in php_sxe_iterator_fetch()
2376 if (sxe->iter.name) { in php_sxe_iterator_fetch()
2379 if (xmlStrEqual(node->name, sxe->iter.name) && match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2388 if (match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2395 } else if (sxe->iter.type == SXE_ITER_ELEMENT && sxe->iter.name) { in php_sxe_iterator_fetch()
2398 if (xmlStrEqual(node->name, sxe->iter.name) && match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2407 if (match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2416 _node_as_zval(sxe, node, &sxe->iter.data, SXE_ITER_NONE, NULL, prefix, isprefix); in php_sxe_iterator_fetch()
2423 static xmlNodePtr php_sxe_reset_iterator_no_clear_iter_data(php_sxe_object *sxe, int use_data) in php_sxe_reset_iterator_no_clear_iter_data() argument
2426 GET_NODE(sxe, node) in php_sxe_reset_iterator_no_clear_iter_data()
2429 switch (sxe->iter.type) { in php_sxe_reset_iterator_no_clear_iter_data()
2439 ZEND_ASSERT(Z_ISUNDEF(sxe->iter.data)); in php_sxe_reset_iterator_no_clear_iter_data()
2441 return php_sxe_iterator_fetch(sxe, node, use_data); in php_sxe_reset_iterator_no_clear_iter_data()
2446 static xmlNodePtr php_sxe_reset_iterator(php_sxe_object *sxe, int use_data) /* {{{ */ in php_sxe_reset_iterator() argument
2448 if (!Z_ISUNDEF(sxe->iter.data)) { in php_sxe_reset_iterator()
2449 zval_ptr_dtor(&sxe->iter.data); in php_sxe_reset_iterator()
2450 ZVAL_UNDEF(&sxe->iter.data); in php_sxe_reset_iterator()
2453 return php_sxe_reset_iterator_no_clear_iter_data(sxe, use_data); in php_sxe_reset_iterator()
2470 iterator->sxe = Z_SXEOBJ_P(object); in php_sxe_get_iterator()
2491 return Z_ISUNDEF(iterator->sxe->iter.data) ? FAILURE : SUCCESS; in php_sxe_iterator_valid()
2499 return &iterator->sxe->iter.data; in php_sxe_iterator_current_data()
2506 zval *curobj = &iterator->sxe->iter.data; in php_sxe_iterator_current_key()
2522 PHP_SXE_API void php_sxe_move_forward_iterator(php_sxe_object *sxe) /* {{{ */ in php_sxe_move_forward_iterator() argument
2527 if (!Z_ISUNDEF(sxe->iter.data)) { in php_sxe_move_forward_iterator()
2528 intern = Z_SXEOBJ_P(&sxe->iter.data); in php_sxe_move_forward_iterator()
2530 zval_ptr_dtor(&sxe->iter.data); in php_sxe_move_forward_iterator()
2531 ZVAL_UNDEF(&sxe->iter.data); in php_sxe_move_forward_iterator()
2535 php_sxe_iterator_fetch(sxe, node->next, 1); in php_sxe_move_forward_iterator()
2543 php_sxe_move_forward_iterator(iterator->sxe); in php_sxe_iterator_move_forward()
2547 PHP_SXE_API void php_sxe_rewind_iterator(php_sxe_object *sxe) /* {{{ */ in php_sxe_rewind_iterator() argument
2549 php_sxe_reset_iterator(sxe, 1); in php_sxe_rewind_iterator()
2555 php_sxe_object *sxe; in php_sxe_iterator_rewind() local
2558 sxe = iterator->sxe; in php_sxe_iterator_rewind()
2560 php_sxe_reset_iterator(sxe, 1); in php_sxe_iterator_rewind()
2566 php_sxe_object *sxe; in simplexml_export_node() local
2569 sxe = Z_SXEOBJ_P(object); in simplexml_export_node()
2570 GET_NODE(sxe, node); in simplexml_export_node()
2571 return php_sxe_get_first_node_non_destructive(sxe, node); in simplexml_export_node()
2578 php_sxe_object *sxe; in PHP_FUNCTION() local
2615 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2616 sxe->document = object->document; in PHP_FUNCTION()
2617 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, nodep->doc); in PHP_FUNCTION()
2618 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, nodep, NULL); in PHP_FUNCTION()
2620 RETURN_OBJ(&sxe->zo); in PHP_FUNCTION()