Lines Matching refs:sxe

45 static xmlNodePtr php_sxe_reset_iterator(php_sxe_object *sxe);
46 static xmlNodePtr php_sxe_reset_iterator_no_clear_iter_data(php_sxe_object *sxe, int use_data);
47 static xmlNodePtr php_sxe_iterator_fetch(php_sxe_object *sxe, xmlNodePtr node, int use_data);
57 static void node_as_zval(php_sxe_object *sxe, xmlNodePtr node, zval *value, SXE_ITER itertype, zend… in node_as_zval() argument
61 subnode = php_sxe_object_new(sxe->zo.ce, sxe->fptr_count); in node_as_zval()
62 subnode->document = sxe->document; in node_as_zval()
79 static void node_as_zval_str(php_sxe_object *sxe, xmlNodePtr node, zval *value, SXE_ITER itertype, … in node_as_zval_str() argument
83 node_as_zval(sxe, node, value, itertype, name_str, ns_str, isprefix); in node_as_zval_str()
90 static xmlNodePtr php_sxe_get_first_node_non_destructive(php_sxe_object *sxe, xmlNodePtr node) in php_sxe_get_first_node_non_destructive() argument
92 if (sxe && sxe->iter.type != SXE_ITER_NONE) { in php_sxe_get_first_node_non_destructive()
93 return php_sxe_reset_iterator_no_clear_iter_data(sxe, false); in php_sxe_get_first_node_non_destructive()
113 static xmlNodePtr sxe_get_element_by_offset(php_sxe_object *sxe, zend_long offset, xmlNodePtr node,… in sxe_get_element_by_offset() argument
117 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_get_element_by_offset()
128 if (node->type == XML_ELEMENT_NODE && match_ns(node, sxe->iter.nsprefix, sxe->iter.isprefix)) { in sxe_get_element_by_offset()
129 if (sxe->iter.type == SXE_ITER_CHILD || ( in sxe_get_element_by_offset()
130sxe->iter.type == SXE_ITER_ELEMENT && xmlStrEqual(node->name, BAD_CAST ZSTR_VAL(sxe->iter.name))))… in sxe_get_element_by_offset()
148 static xmlNodePtr sxe_find_element_by_name(php_sxe_object *sxe, xmlNodePtr node, const zend_string … in sxe_find_element_by_name() argument
152 if (node->type == XML_ELEMENT_NODE && match_ns(node, sxe->iter.nsprefix, sxe->iter.isprefix)) { in sxe_find_element_by_name()
162 static xmlNodePtr sxe_get_element_by_name(php_sxe_object *sxe, xmlNodePtr node, char *name, SXE_ITE… in sxe_get_element_by_name() argument
167 if (sxe->iter.type != SXE_ITER_ATTRLIST) in sxe_get_element_by_name()
169 orgtype = sxe->iter.type; in sxe_get_element_by_name()
170 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_get_element_by_name()
171 sxe->iter.type = SXE_ITER_CHILD; in sxe_get_element_by_name()
173 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_get_element_by_name()
174 sxe->iter.type = orgtype; in sxe_get_element_by_name()
177 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_get_element_by_name()
178 orgnode = sxe_find_element_by_name(sxe, node, sxe->iter.name); in sxe_get_element_by_name()
186 if (node->type == XML_ELEMENT_NODE && match_ns(node, sxe->iter.nsprefix, sxe->iter.isprefix)) { in sxe_get_element_by_name()
202 php_sxe_object *sxe; in sxe_prop_dim_read() local
210 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_read()
213 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
222 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
241 GET_NODE(sxe, node); in sxe_prop_dim_read()
243 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
246 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_read()
248 test = sxe->iter.name != NULL; in sxe_prop_dim_read()
249 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_read()
250 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_read()
265 if (Z_TYPE_P(member) != IS_LONG || sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
268 …lStrEqual(attr->name, BAD_CAST ZSTR_VAL(sxe->iter.name))) && match_ns((xmlNodePtr) attr, sxe->iter… in sxe_prop_dim_read()
270 …node_as_zval(sxe, (xmlNodePtr) attr, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.ispref… in sxe_prop_dim_read()
279 …CAST ZSTR_VAL(sxe->iter.name))) && xmlStrEqual(attr->name, BAD_CAST ZSTR_VAL(name)) && match_ns((x… in sxe_prop_dim_read()
280 …node_as_zval(sxe, (xmlNodePtr) attr, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.ispref… in sxe_prop_dim_read()
290 if (!sxe->node) { in sxe_prop_dim_read()
291 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, node, NULL); in sxe_prop_dim_read()
297 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_read()
298 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_read()
300 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_prop_dim_read()
305 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, &cnt); in sxe_prop_dim_read()
310 node_as_zval(sxe, node, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_prop_dim_read()
316 node_as_zval(sxe, node, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_prop_dim_read()
320 if (type != BP_VAR_IS || sxe_find_element_by_name(sxe, node->children, name)) { in sxe_prop_dim_read()
321 node_as_zval(sxe, node, rv, SXE_ITER_ELEMENT, name, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_prop_dim_read()
370 php_sxe_object *sxe; in sxe_prop_dim_write() local
385 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_write()
388 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
400 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
427 GET_NODE(sxe, node); in sxe_prop_dim_write()
429 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
432 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_write()
434 test = sxe->iter.name != NULL; in sxe_prop_dim_write()
435 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_write()
437 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_write()
449 if (attribs && !node && sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_prop_dim_write()
450 node = xmlNewChild(mynode, mynode->ns, BAD_CAST ZSTR_VAL(sxe->iter.name), NULL); in sxe_prop_dim_write()
493 …lStrEqual(attr->name, BAD_CAST ZSTR_VAL(sxe->iter.name))) && match_ns((xmlNodePtr) attr, sxe->iter… in sxe_prop_dim_write()
505 …T ZSTR_VAL(sxe->iter.name))) && xmlStrEqual(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns… in sxe_prop_dim_write()
526 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_prop_dim_write()
534 newnode = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, &cnt); in sxe_prop_dim_write()
544 …ual(node->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(node, sxe->iter.nsprefix, sxe->iter.isp… in sxe_prop_dim_write()
623 php_sxe_object *sxe; in sxe_property_get_adr() local
630 sxe = php_sxe_fetch_object(object); in sxe_property_get_adr()
631 GET_NODE(sxe, node); in sxe_property_get_adr()
636 node = sxe_get_element_by_name(sxe, node, name, &type); in sxe_property_get_adr()
646 node_as_zval(sxe, node, &ret, type, NULL, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_property_get_adr()
648 if (!Z_ISUNDEF(sxe->tmp)) { in sxe_property_get_adr()
649 zval_ptr_dtor(&sxe->tmp); in sxe_property_get_adr()
652 ZVAL_COPY_VALUE(&sxe->tmp, &ret); in sxe_property_get_adr()
654 return &sxe->tmp; in sxe_property_get_adr()
661 php_sxe_object *sxe; in sxe_prop_dim_exists() local
677 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_exists()
679 GET_NODE(sxe, node); in sxe_prop_dim_exists()
682 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_exists()
685 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_exists()
686 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_exists()
691 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_exists()
694 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_exists()
696 test = sxe->iter.name != NULL; in sxe_prop_dim_exists()
697 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_exists()
698 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_exists()
709 …lStrEqual(attr->name, BAD_CAST ZSTR_VAL(sxe->iter.name))) && match_ns((xmlNodePtr) attr, sxe->iter… in sxe_prop_dim_exists()
720 …T ZSTR_VAL(sxe->iter.name))) && xmlStrEqual(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns… in sxe_prop_dim_exists()
737 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_exists()
738 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_exists()
740 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL); in sxe_prop_dim_exists()
742 node = sxe_find_element_by_name(sxe, node->children, Z_STR_P(member)); in sxe_prop_dim_exists()
782 php_sxe_object *sxe; in sxe_prop_dim_delete() local
799 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_delete()
801 GET_NODE(sxe, node); in sxe_prop_dim_delete()
804 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_delete()
807 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_delete()
808 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_delete()
813 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_delete()
816 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_delete()
818 test = sxe->iter.name != NULL; in sxe_prop_dim_delete()
819 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_delete()
820 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_delete()
833 …lStrEqual(attr->name, BAD_CAST ZSTR_VAL(sxe->iter.name))) && match_ns((xmlNodePtr) attr, sxe->iter… in sxe_prop_dim_delete()
846 …T ZSTR_VAL(sxe->iter.name))) && xmlStrEqual(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns… in sxe_prop_dim_delete()
858 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_delete()
859 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_dim_delete()
861 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL); in sxe_prop_dim_delete()
873 …ual(node->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(node, sxe->iter.nsprefix, sxe->iter.isp… in sxe_prop_dim_delete()
976 php_sxe_object *sxe; in sxe_prop_is_empty() local
983 sxe = php_sxe_fetch_object(object); in sxe_prop_is_empty()
985 GET_NODE(sxe, node); in sxe_prop_is_empty()
990 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_prop_is_empty()
991 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_is_empty()
995 test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST; in sxe_prop_is_empty()
997 …mlStrEqual(attr->name, BAD_CAST ZSTR_VAL(sxe->iter.name))) && match_ns((xmlNodePtr)attr, sxe->iter… in sxe_prop_is_empty()
1004 GET_NODE(sxe, node); in sxe_prop_is_empty()
1005 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_prop_is_empty()
1007 if (node && sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_is_empty()
1010 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_is_empty()
1011 …if (sxe->iter.type == SXE_ITER_NONE || !node->children || !node->parent || node->children->next ||… in sxe_prop_is_empty()
1014 node = php_sxe_reset_iterator_no_clear_iter_data(sxe, 0); in sxe_prop_is_empty()
1033 …if (node->type == XML_ELEMENT_NODE && (! match_ns(node, sxe->iter.nsprefix, sxe->iter.isprefix))) { in sxe_prop_is_empty()
1045 node = php_sxe_iterator_fetch(sxe, node->next, 0); in sxe_prop_is_empty()
1061 php_sxe_object *sxe; in sxe_get_prop_hash() local
1069 sxe = php_sxe_fetch_object(object); in sxe_get_prop_hash()
1073 } else if (sxe->properties) { in sxe_get_prop_hash()
1074 zend_hash_clean(sxe->properties); in sxe_get_prop_hash()
1075 rv = sxe->properties; in sxe_get_prop_hash()
1078 sxe->properties = rv; in sxe_get_prop_hash()
1081 GET_NODE(sxe, node); in sxe_get_prop_hash()
1085 if (is_debug || sxe->iter.type != SXE_ITER_CHILD) { in sxe_get_prop_hash()
1086 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_get_prop_hash()
1087 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_get_prop_hash()
1092 test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST; in sxe_get_prop_hash()
1094 …mlStrEqual(attr->name, BAD_CAST ZSTR_VAL(sxe->iter.name))) && match_ns((xmlNodePtr)attr, sxe->iter… in sxe_get_prop_hash()
1095 ZVAL_STR(&value, sxe_xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, attr->children, 1)); in sxe_get_prop_hash()
1108 GET_NODE(sxe, node); in sxe_get_prop_hash()
1109 node = php_sxe_get_first_node_non_destructive(sxe, node); in sxe_get_prop_hash()
1111 if (node && sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_get_prop_hash()
1116 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_get_prop_hash()
1117 …if ( sxe->iter.type == SXE_ITER_NONE || !node->children || !node->parent || !node->next || node->c… in sxe_get_prop_hash()
1120 node = php_sxe_reset_iterator_no_clear_iter_data(sxe, 0); in sxe_get_prop_hash()
1140 …if (node->type == XML_ELEMENT_NODE && (! match_ns(node, sxe->iter.nsprefix, sxe->iter.isprefix))) { in sxe_get_prop_hash()
1151 get_base_node_value(sxe, node, &value, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_get_prop_hash()
1166 node = php_sxe_iterator_fetch(sxe, node->next, 0); in sxe_get_prop_hash()
1178 php_sxe_object *sxe; in sxe_get_gc() local
1179 sxe = php_sxe_fetch_object(object); in sxe_get_gc()
1183 return sxe->properties; in sxe_get_gc()
1234 php_sxe_object *sxe; in PHP_METHOD() local
1249 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1251 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1255 GET_NODE(sxe, nodeptr); in PHP_METHOD()
1256 nodeptr = php_sxe_get_first_node_non_destructive(sxe, nodeptr); in PHP_METHOD()
1261 if (!sxe->xpath) { in PHP_METHOD()
1262 sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr); in PHP_METHOD()
1264 sxe->xpath->node = nodeptr; in PHP_METHOD()
1266 ns = xmlGetNsList((xmlDocPtr) sxe->document->ptr, nodeptr); in PHP_METHOD()
1273 sxe->xpath->namespaces = ns; in PHP_METHOD()
1274 sxe->xpath->nsNr = nsnbr; in PHP_METHOD()
1276 retval = xmlXPathEval((xmlChar *)query, sxe->xpath); in PHP_METHOD()
1279 sxe->xpath->namespaces = NULL; in PHP_METHOD()
1280 sxe->xpath->nsNr = 0; in PHP_METHOD()
1302 node_as_zval(sxe, nodeptr->parent, &value, SXE_ITER_NONE, NULL, NULL, 0); in PHP_METHOD()
1304 …node_as_zval_str(sxe, nodeptr->parent, &value, SXE_ITER_ATTRLIST, nodeptr->name, nodeptr->ns ? BAD… in PHP_METHOD()
1306 node_as_zval(sxe, nodeptr, &value, SXE_ITER_NONE, NULL, NULL, 0); in PHP_METHOD()
1323 php_sxe_object *sxe; in PHP_METHOD() local
1331 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1332 if (!sxe->document) { in PHP_METHOD()
1337 if (!sxe->xpath) { in PHP_METHOD()
1338 sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr); in PHP_METHOD()
1341 if (xmlXPathRegisterNs(sxe->xpath, (xmlChar *)prefix, (xmlChar *)ns_uri) != 0) { in PHP_METHOD()
1352 php_sxe_object *sxe; in PHP_METHOD() local
1361 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1362 GET_NODE(sxe, node); in PHP_METHOD()
1363 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1369 xmlDocPtr doc = sxe->document->ptr; in PHP_METHOD()
1374 …bytes = sxe->document->handlers->dump_doc_to_file(filename, doc, false, (const char *) doc->encodi… in PHP_METHOD()
1376 bytes = sxe->document->handlers->dump_node_to_file(filename, doc, node, false, NULL); in PHP_METHOD()
1387 result = sxe->document->handlers->dump_doc_to_str(doc, 0, (const char *) doc->encoding); in PHP_METHOD()
1389 …result = sxe->document->handlers->dump_node_to_str(doc, node, false, (const char *) doc->encoding); in PHP_METHOD()
1421 static void sxe_add_namespaces(php_sxe_object *sxe, xmlNodePtr node, bool recursive, zval *return_v… in sxe_add_namespaces() argument
1441 sxe_add_namespaces(sxe, node, recursive, return_value); in sxe_add_namespaces()
1448 static inline void sxe_object_free_iterxpath(php_sxe_object *sxe) in sxe_object_free_iterxpath() argument
1450 if (!Z_ISUNDEF(sxe->iter.data)) { in sxe_object_free_iterxpath()
1451 zval_ptr_dtor(&sxe->iter.data); in sxe_object_free_iterxpath()
1452 ZVAL_UNDEF(&sxe->iter.data); in sxe_object_free_iterxpath()
1455 if (sxe->iter.name) { in sxe_object_free_iterxpath()
1456 zend_string_release(sxe->iter.name); in sxe_object_free_iterxpath()
1457 sxe->iter.name = NULL; in sxe_object_free_iterxpath()
1459 if (sxe->iter.nsprefix) { in sxe_object_free_iterxpath()
1460 zend_string_release(sxe->iter.nsprefix); in sxe_object_free_iterxpath()
1461 sxe->iter.nsprefix = NULL; in sxe_object_free_iterxpath()
1463 if (!Z_ISUNDEF(sxe->tmp)) { in sxe_object_free_iterxpath()
1464 zval_ptr_dtor(&sxe->tmp); in sxe_object_free_iterxpath()
1465 ZVAL_UNDEF(&sxe->tmp); in sxe_object_free_iterxpath()
1468 php_libxml_node_decrement_resource((php_libxml_node_object *)sxe); in sxe_object_free_iterxpath()
1470 if (sxe->xpath) { in sxe_object_free_iterxpath()
1471 xmlXPathFreeContext(sxe->xpath); in sxe_object_free_iterxpath()
1472 sxe->xpath = NULL; in sxe_object_free_iterxpath()
1481 php_sxe_object *sxe; in PHP_METHOD() local
1490 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1491 GET_NODE(sxe, node); in PHP_METHOD()
1492 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1496 sxe_add_namespaces(sxe, node, recursive, return_value); in PHP_METHOD()
1504 static void sxe_add_registered_namespaces(php_sxe_object *sxe, xmlNodePtr node, bool recursive, boo… in sxe_add_registered_namespaces() argument
1531 sxe_add_registered_namespaces(sxe, node, recursive, include_xmlns_attributes, return_value); in sxe_add_registered_namespaces()
1543 php_sxe_object *sxe; in PHP_METHOD() local
1550 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1552 if (!sxe->document) { in PHP_METHOD()
1557 node = xmlDocGetRootElement((xmlDocPtr)sxe->document->ptr); in PHP_METHOD()
1559 GET_NODE(sxe, node); in PHP_METHOD()
1567 bool include_xmlns_attributes = sxe->document->class_type == PHP_LIBXML_CLASS_MODERN; in PHP_METHOD()
1570 sxe_add_registered_namespaces(sxe, node, recursive, include_xmlns_attributes, return_value); in PHP_METHOD()
1577 php_sxe_object *sxe; in PHP_METHOD() local
1586 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1588 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1592 GET_NODE(sxe, node); in PHP_METHOD()
1593 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1598 node_as_zval(sxe, node, return_value, SXE_ITER_CHILD, NULL, nsprefix, isprefix); in PHP_METHOD()
1605 php_sxe_object *sxe; in PHP_METHOD() local
1613 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1615 GET_NODE(sxe, node); in PHP_METHOD()
1616 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1629 php_sxe_object *sxe; in PHP_METHOD() local
1638 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1639 GET_NODE(sxe, node); in PHP_METHOD()
1640 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1645 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1649 node_as_zval(sxe, node, return_value, SXE_ITER_ATTRLIST, NULL, nsprefix, isprefix); in PHP_METHOD()
1656 php_sxe_object *sxe; in PHP_METHOD() local
1673 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1674 GET_NODE(sxe, node); in PHP_METHOD()
1676 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1681 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1710 node_as_zval_str(sxe, newnode, return_value, SXE_ITER_NONE, localname, prefix, 0); in PHP_METHOD()
1722 php_sxe_object *sxe; in PHP_METHOD() local
1740 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1741 GET_NODE(sxe, node); in PHP_METHOD()
1743 node = php_sxe_get_first_node_non_destructive(sxe, node); in PHP_METHOD()
1824 php_sxe_object *sxe; in sxe_object_cast_ex() local
1830 sxe = php_sxe_fetch_object(readobj); in sxe_object_cast_ex()
1833 node = php_sxe_get_first_node_non_destructive(sxe, NULL); in sxe_object_cast_ex()
1842 if (sxe->iter.type != SXE_ITER_NONE) { in sxe_object_cast_ex()
1843 node = php_sxe_get_first_node_non_destructive(sxe, NULL); in sxe_object_cast_ex()
1845 contents = xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, node->children, 1); in sxe_object_cast_ex()
1848 if (!sxe->node) { in sxe_object_cast_ex()
1849 if (sxe->document) { in sxe_object_cast_ex()
1850 …php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement((xmlDocPtr) sxe-… in sxe_object_cast_ex()
1854 if (sxe->node && sxe->node->node) { in sxe_object_cast_ex()
1855 if (sxe->node->node->children) { in sxe_object_cast_ex()
1856 contents = xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, sxe->node->node->children, 1); in sxe_object_cast_ex()
1857 } else if (sxe->node->node->type == XML_COMMENT_NODE || sxe->node->node->type == XML_PI_NODE) { in sxe_object_cast_ex()
1858 contents = sxe->node->node->content; in sxe_object_cast_ex()
1900 static zend_long php_sxe_count_elements_helper(php_sxe_object *sxe) /* {{{ */ in php_sxe_count_elements_helper() argument
1903 xmlNodePtr node = php_sxe_reset_iterator_no_clear_iter_data(sxe, 0); in php_sxe_count_elements_helper()
1908 node = php_sxe_iterator_fetch(sxe, node->next, 0); in php_sxe_count_elements_helper()
1937 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
1943 RETURN_LONG(php_sxe_count_elements_helper(sxe)); in PHP_METHOD()
1962 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
1968 RETURN_BOOL(!Z_ISUNDEF(sxe->iter.data)); in PHP_METHOD()
1975 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
1981 if (Z_ISUNDEF(sxe->iter.data)) { in PHP_METHOD()
1986 RETURN_COPY_DEREF(&sxe->iter.data); in PHP_METHOD()
1995 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2001 if (Z_ISUNDEF(sxe->iter.data)) { in PHP_METHOD()
2006 intern = Z_SXEOBJ_P(&sxe->iter.data); in PHP_METHOD()
2031 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2039 if (Z_ISUNDEF(sxe->iter.data) || sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
2042 child = Z_SXEOBJ_P(&sxe->iter.data); in PHP_METHOD()
2058 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2064 if (Z_ISUNDEF(sxe->iter.data) || sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
2068 RETURN_COPY_DEREF(&sxe->iter.data); in PHP_METHOD()
2077 php_sxe_object *sxe = php_sxe_fetch_object(object); in sxe_object_clone() local
2081 bool is_root_element = sxe->node && sxe->node->node && sxe->node->node->parent in sxe_object_clone()
2082 …&& (sxe->node->node->parent->type == XML_DOCUMENT_NODE || sxe->node->node->parent->type == XML_HTM… in sxe_object_clone()
2084 clone = php_sxe_object_new(sxe->zo.ce, sxe->fptr_count); in sxe_object_clone()
2087 docp = xmlCopyDoc(sxe->document->ptr, 1); in sxe_object_clone()
2090 clone->document = sxe->document; in sxe_object_clone()
2097 clone->iter.isprefix = sxe->iter.isprefix; in sxe_object_clone()
2098 if (sxe->iter.name != NULL) { in sxe_object_clone()
2099 clone->iter.name = zend_string_copy(sxe->iter.name); in sxe_object_clone()
2101 if (sxe->iter.nsprefix != NULL) { in sxe_object_clone()
2102 clone->iter.nsprefix = zend_string_copy(sxe->iter.nsprefix); in sxe_object_clone()
2104 clone->iter.type = sxe->iter.type; in sxe_object_clone()
2106 if (sxe->node) { in sxe_object_clone()
2110 nodep = xmlDocCopyNode(sxe->node->node, docp, 1); in sxe_object_clone()
2123 php_sxe_object *sxe; in sxe_object_free_storage() local
2125 sxe = php_sxe_fetch_object(object); in sxe_object_free_storage()
2127 zend_object_std_dtor(&sxe->zo); in sxe_object_free_storage()
2129 sxe_object_free_iterxpath(sxe); in sxe_object_free_storage()
2131 if (sxe->properties) { in sxe_object_free_storage()
2132 zend_hash_destroy(sxe->properties); in sxe_object_free_storage()
2133 FREE_HASHTABLE(sxe->properties); in sxe_object_free_storage()
2198 php_sxe_object *sxe; in PHP_FUNCTION() local
2231 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2232 sxe->iter.nsprefix = ZSTR_LEN(ns) ? zend_string_copy(ns) : NULL; in PHP_FUNCTION()
2233 sxe->iter.isprefix = isprefix; in PHP_FUNCTION()
2234 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in PHP_FUNCTION()
2235 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in PHP_FUNCTION()
2237 RETURN_OBJ(&sxe->zo); in PHP_FUNCTION()
2244 php_sxe_object *sxe; in PHP_FUNCTION() local
2285 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2286 sxe->iter.nsprefix = ZSTR_LEN(ns) ? zend_string_copy(ns) : NULL; in PHP_FUNCTION()
2287 sxe->iter.isprefix = isprefix; in PHP_FUNCTION()
2288 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in PHP_FUNCTION()
2289 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in PHP_FUNCTION()
2291 RETURN_OBJ(&sxe->zo); in PHP_FUNCTION()
2298 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2332 sxe_object_free_iterxpath(sxe); in PHP_METHOD()
2334 sxe->iter.nsprefix = ZSTR_LEN(ns) ? zend_string_copy(ns) : NULL; in PHP_METHOD()
2335 sxe->iter.isprefix = isprefix; in PHP_METHOD()
2336 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in PHP_METHOD()
2337 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in PHP_METHOD()
2353 static xmlNodePtr php_sxe_iterator_fetch(php_sxe_object *sxe, xmlNodePtr node, int use_data) /* {{{… in php_sxe_iterator_fetch() argument
2355 zend_string *prefix = sxe->iter.nsprefix; in php_sxe_iterator_fetch()
2356 int isprefix = sxe->iter.isprefix; in php_sxe_iterator_fetch()
2358 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in php_sxe_iterator_fetch()
2359 if (sxe->iter.name) { in php_sxe_iterator_fetch()
2362 …if (xmlStrEqual(node->name, BAD_CAST ZSTR_VAL(sxe->iter.name)) && match_ns(node, prefix, isprefix)… in php_sxe_iterator_fetch()
2378 } else if (sxe->iter.type == SXE_ITER_ELEMENT && sxe->iter.name) { in php_sxe_iterator_fetch()
2381 …if (xmlStrEqual(node->name, BAD_CAST ZSTR_VAL(sxe->iter.name)) && match_ns(node, prefix, isprefix)… in php_sxe_iterator_fetch()
2399 node_as_zval(sxe, node, &sxe->iter.data, SXE_ITER_NONE, NULL, prefix, isprefix); in php_sxe_iterator_fetch()
2406 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
2409 GET_NODE(sxe, node) in php_sxe_reset_iterator_no_clear_iter_data()
2412 switch (sxe->iter.type) { in php_sxe_reset_iterator_no_clear_iter_data()
2422 ZEND_ASSERT(Z_ISUNDEF(sxe->iter.data)); in php_sxe_reset_iterator_no_clear_iter_data()
2424 return php_sxe_iterator_fetch(sxe, node, use_data); in php_sxe_reset_iterator_no_clear_iter_data()
2429 static xmlNodePtr php_sxe_reset_iterator(php_sxe_object *sxe) /* {{{ */ in php_sxe_reset_iterator() argument
2431 if (!Z_ISUNDEF(sxe->iter.data)) { in php_sxe_reset_iterator()
2432 zval_ptr_dtor(&sxe->iter.data); in php_sxe_reset_iterator()
2433 ZVAL_UNDEF(&sxe->iter.data); in php_sxe_reset_iterator()
2436 return php_sxe_reset_iterator_no_clear_iter_data(sxe, 1); in php_sxe_reset_iterator()
2453 iterator->sxe = Z_SXEOBJ_P(object); in php_sxe_get_iterator()
2474 return Z_ISUNDEF(iterator->sxe->iter.data) ? FAILURE : SUCCESS; in php_sxe_iterator_valid()
2482 return &iterator->sxe->iter.data; in php_sxe_iterator_current_data()
2489 zval *curobj = &iterator->sxe->iter.data; in php_sxe_iterator_current_key()
2510 PHP_SXE_API void php_sxe_move_forward_iterator(php_sxe_object *sxe) /* {{{ */ in php_sxe_move_forward_iterator() argument
2515 if (!Z_ISUNDEF(sxe->iter.data)) { in php_sxe_move_forward_iterator()
2516 intern = Z_SXEOBJ_P(&sxe->iter.data); in php_sxe_move_forward_iterator()
2518 zval_ptr_dtor(&sxe->iter.data); in php_sxe_move_forward_iterator()
2519 ZVAL_UNDEF(&sxe->iter.data); in php_sxe_move_forward_iterator()
2523 php_sxe_iterator_fetch(sxe, node->next, 1); in php_sxe_move_forward_iterator()
2531 php_sxe_move_forward_iterator(iterator->sxe); in php_sxe_iterator_move_forward()
2535 PHP_SXE_API void php_sxe_rewind_iterator(php_sxe_object *sxe) /* {{{ */ in php_sxe_rewind_iterator() argument
2537 php_sxe_reset_iterator(sxe); in php_sxe_rewind_iterator()
2543 php_sxe_object *sxe; in php_sxe_iterator_rewind() local
2546 sxe = iterator->sxe; in php_sxe_iterator_rewind()
2548 php_sxe_reset_iterator(sxe); in php_sxe_iterator_rewind()
2554 php_sxe_object *sxe; in simplexml_export_node() local
2557 sxe = Z_SXEOBJ_P(object); in simplexml_export_node()
2558 GET_NODE(sxe, node); in simplexml_export_node()
2559 return php_sxe_get_first_node_non_destructive(sxe, node); in simplexml_export_node()
2566 php_sxe_object *sxe; in PHP_FUNCTION() local
2603 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2604 sxe->document = object->document; in PHP_FUNCTION()
2605 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, nodep->doc); in PHP_FUNCTION()
2606 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, nodep, NULL); in PHP_FUNCTION()
2608 RETURN_OBJ(&sxe->zo); in PHP_FUNCTION()