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(php_sxe_object *sxe, xmlNodePtr node) in php_sxe_get_first_node() argument
82 if (sxe && sxe->iter.type != SXE_ITER_NONE) { in php_sxe_get_first_node()
83 return php_sxe_reset_iterator(sxe, 1); in php_sxe_get_first_node()
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()
119 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_get_element_by_offset()
120 if (sxe->iter.type == SXE_ITER_CHILD || ( in sxe_get_element_by_offset()
121 sxe->iter.type == SXE_ITER_ELEMENT && xmlStrEqual(node->name, sxe->iter.name))) { in sxe_get_element_by_offset()
140 static xmlNodePtr sxe_find_element_by_name(php_sxe_object *sxe, xmlNodePtr node, xmlChar *name) /* … in sxe_find_element_by_name() argument
144 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_find_element_by_name()
155 static xmlNodePtr sxe_get_element_by_name(php_sxe_object *sxe, xmlNodePtr node, char *name, SXE_ITE… in sxe_get_element_by_name() argument
160 if (sxe->iter.type != SXE_ITER_ATTRLIST) in sxe_get_element_by_name()
162 orgtype = sxe->iter.type; in sxe_get_element_by_name()
163 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_get_element_by_name()
164 sxe->iter.type = SXE_ITER_CHILD; in sxe_get_element_by_name()
166 node = php_sxe_get_first_node(sxe, node); in sxe_get_element_by_name()
167 sxe->iter.type = orgtype; in sxe_get_element_by_name()
170 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_get_element_by_name()
171 orgnode = sxe_find_element_by_name(sxe, node, sxe->iter.name); in sxe_get_element_by_name()
180 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_get_element_by_name()
197 php_sxe_object *sxe; in sxe_prop_dim_read() local
205 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_read()
208 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
217 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
236 GET_NODE(sxe, node); in sxe_prop_dim_read()
238 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
241 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_read()
243 test = sxe->iter.name != NULL; in sxe_prop_dim_read()
244 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_read()
245 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_read()
260 if (Z_TYPE_P(member) != IS_LONG || sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
263 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->it… in sxe_prop_dim_read()
265 …_node_as_zval(sxe, (xmlNodePtr) attr, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.ispre… in sxe_prop_dim_read()
274 …ual(attr->name, sxe->iter.name)) && xmlStrEqual(attr->name, (xmlChar *)name) && match_ns(sxe, (xml… in sxe_prop_dim_read()
275 …_node_as_zval(sxe, (xmlNodePtr) attr, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.ispre… in sxe_prop_dim_read()
285 if (!sxe->node) { in sxe_prop_dim_read()
286 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, node, NULL); in sxe_prop_dim_read()
292 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_read()
293 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_read()
295 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_prop_dim_read()
300 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, &cnt); 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()
311 _node_as_zval(sxe, node, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_prop_dim_read()
315 if (type != BP_VAR_IS || sxe_find_element_by_name(sxe, node->children, (xmlChar *) name)) { in sxe_prop_dim_read()
316 _node_as_zval(sxe, node, rv, SXE_ITER_ELEMENT, name, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_prop_dim_read()
365 php_sxe_object *sxe; in sxe_prop_dim_write() local
380 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_write()
383 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
395 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
422 GET_NODE(sxe, node); in sxe_prop_dim_write()
424 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
427 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_write()
429 test = sxe->iter.name != NULL; in sxe_prop_dim_write()
430 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_write()
432 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_write()
444 if (attribs && !node && sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_prop_dim_write()
445 node = xmlNewChild(mynode, mynode->ns, sxe->iter.name, NULL); in sxe_prop_dim_write()
489 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->it… in sxe_prop_dim_write()
501 …r->name, sxe->iter.name)) && xmlStrEqual(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_write()
522 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_prop_dim_write()
530 newnode = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, &cnt); in sxe_prop_dim_write()
540 …ual(node->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sxe, node, sxe->iter.nsprefix, sxe->ite… in sxe_prop_dim_write()
619 php_sxe_object *sxe; in sxe_property_get_adr() local
626 sxe = php_sxe_fetch_object(object); in sxe_property_get_adr()
627 GET_NODE(sxe, node); in sxe_property_get_adr()
632 node = sxe_get_element_by_name(sxe, node, name, &type); in sxe_property_get_adr()
643 _node_as_zval(sxe, node, &ret, type, name, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_property_get_adr()
645 if (!Z_ISUNDEF(sxe->tmp)) { in sxe_property_get_adr()
646 zval_ptr_dtor(&sxe->tmp); in sxe_property_get_adr()
649 ZVAL_COPY_VALUE(&sxe->tmp, &ret); in sxe_property_get_adr()
651 return &sxe->tmp; in sxe_property_get_adr()
658 php_sxe_object *sxe; in sxe_prop_dim_exists() local
674 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_exists()
676 GET_NODE(sxe, node); in sxe_prop_dim_exists()
679 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_exists()
682 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_exists()
683 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_exists()
688 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_exists()
691 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_exists()
693 test = sxe->iter.name != NULL; in sxe_prop_dim_exists()
694 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_exists()
695 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_exists()
706 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->it… in sxe_prop_dim_exists()
717 …r->name, sxe->iter.name)) && xmlStrEqual(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_exists()
734 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_exists()
735 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_exists()
737 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL); in sxe_prop_dim_exists()
739 node = sxe_find_element_by_name(sxe, node->children, (xmlChar *)Z_STRVAL_P(member)); in sxe_prop_dim_exists()
779 php_sxe_object *sxe; in sxe_prop_dim_delete() local
796 sxe = php_sxe_fetch_object(object); in sxe_prop_dim_delete()
798 GET_NODE(sxe, node); in sxe_prop_dim_delete()
801 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_delete()
804 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_delete()
805 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_delete()
810 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_delete()
813 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_delete()
815 test = sxe->iter.name != NULL; in sxe_prop_dim_delete()
816 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_delete()
817 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_delete()
830 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->it… in sxe_prop_dim_delete()
843 …r->name, sxe->iter.name)) && xmlStrEqual(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_delete()
855 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_delete()
856 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_delete()
858 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL); in sxe_prop_dim_delete()
870 …ual(node->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sxe, node, sxe->iter.nsprefix, sxe->ite… in sxe_prop_dim_delete()
973 php_sxe_object *sxe; in sxe_prop_is_empty() local
981 sxe = php_sxe_fetch_object(object); in sxe_prop_is_empty()
983 GET_NODE(sxe, node); in sxe_prop_is_empty()
988 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_prop_is_empty()
989 node = php_sxe_get_first_node(sxe, node); in sxe_prop_is_empty()
993 test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST; in sxe_prop_is_empty()
995 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr)attr, sxe->ite… in sxe_prop_is_empty()
1002 GET_NODE(sxe, node); in sxe_prop_is_empty()
1003 node = php_sxe_get_first_node(sxe, node); in sxe_prop_is_empty()
1006 if (node && sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_is_empty()
1009 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_is_empty()
1010 …if (sxe->iter.type == SXE_ITER_NONE || !node->children || !node->parent || node->children->next ||… in sxe_prop_is_empty()
1013 ZVAL_COPY_VALUE(&iter_data, &sxe->iter.data); in sxe_prop_is_empty()
1014 ZVAL_UNDEF(&sxe->iter.data); in sxe_prop_is_empty()
1015 node = php_sxe_reset_iterator(sxe, 0); in sxe_prop_is_empty()
1034 …if (node->type == XML_ELEMENT_NODE && (! match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefi… in sxe_prop_is_empty()
1046 node = php_sxe_iterator_fetch(sxe, node->next, 0); in sxe_prop_is_empty()
1054 if (!Z_ISUNDEF(sxe->iter.data)) { in sxe_prop_is_empty()
1055 zval_ptr_dtor(&sxe->iter.data); in sxe_prop_is_empty()
1057 ZVAL_COPY_VALUE(&sxe->iter.data, &iter_data); in sxe_prop_is_empty()
1069 php_sxe_object *sxe; in sxe_get_prop_hash() local
1080 sxe = php_sxe_fetch_object(object); in sxe_get_prop_hash()
1084 } else if (sxe->properties) { in sxe_get_prop_hash()
1085 zend_hash_clean(sxe->properties); in sxe_get_prop_hash()
1086 rv = sxe->properties; in sxe_get_prop_hash()
1089 sxe->properties = rv; in sxe_get_prop_hash()
1092 GET_NODE(sxe, node); in sxe_get_prop_hash()
1096 if (is_debug || sxe->iter.type != SXE_ITER_CHILD) { in sxe_get_prop_hash()
1097 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_get_prop_hash()
1098 node = php_sxe_get_first_node(sxe, node); in sxe_get_prop_hash()
1103 test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST; in sxe_get_prop_hash()
1105 …if ((!test || xmlStrEqual(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr)attr, sxe->ite… in sxe_get_prop_hash()
1106 ZVAL_STR(&value, sxe_xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, attr->children, 1)); in sxe_get_prop_hash()
1119 GET_NODE(sxe, node); in sxe_get_prop_hash()
1120 node = php_sxe_get_first_node(sxe, node); in sxe_get_prop_hash()
1122 if (node && sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_get_prop_hash()
1127 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_get_prop_hash()
1129 …if ( sxe->iter.type == SXE_ITER_NONE || !node->children || !node->parent || !node->next || node->c… in sxe_get_prop_hash()
1132 ZVAL_COPY_VALUE(&iter_data, &sxe->iter.data); in sxe_get_prop_hash()
1133 ZVAL_UNDEF(&sxe->iter.data); in sxe_get_prop_hash()
1135 node = php_sxe_reset_iterator(sxe, 0); in sxe_get_prop_hash()
1156 …if (node->type == XML_ELEMENT_NODE && (! match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefi… in sxe_get_prop_hash()
1167 _get_base_node_value(sxe, node, &value, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_get_prop_hash()
1182 node = php_sxe_iterator_fetch(sxe, node->next, 0); in sxe_get_prop_hash()
1190 if (!Z_ISUNDEF(sxe->iter.data)) { in sxe_get_prop_hash()
1191 zval_ptr_dtor(&sxe->iter.data); in sxe_get_prop_hash()
1193 ZVAL_COPY_VALUE(&sxe->iter.data, &iter_data); in sxe_get_prop_hash()
1201 php_sxe_object *sxe; in sxe_get_gc() local
1202 sxe = php_sxe_fetch_object(object); in sxe_get_gc()
1206 return sxe->properties; in sxe_get_gc()
1257 php_sxe_object *sxe; in PHP_METHOD() local
1272 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1274 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1278 GET_NODE(sxe, nodeptr); in PHP_METHOD()
1279 nodeptr = php_sxe_get_first_node(sxe, nodeptr); in PHP_METHOD()
1284 if (!sxe->xpath) { in PHP_METHOD()
1285 sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr); in PHP_METHOD()
1287 sxe->xpath->node = nodeptr; in PHP_METHOD()
1289 ns = xmlGetNsList((xmlDocPtr) sxe->document->ptr, nodeptr); in PHP_METHOD()
1296 sxe->xpath->namespaces = ns; in PHP_METHOD()
1297 sxe->xpath->nsNr = nsnbr; in PHP_METHOD()
1299 retval = xmlXPathEval((xmlChar *)query, sxe->xpath); in PHP_METHOD()
1302 sxe->xpath->namespaces = NULL; in PHP_METHOD()
1303 sxe->xpath->nsNr = 0; in PHP_METHOD()
1324 _node_as_zval(sxe, nodeptr->parent, &value, SXE_ITER_NONE, NULL, NULL, 0); in PHP_METHOD()
1326 …_node_as_zval(sxe, nodeptr->parent, &value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, nodeptr->ns ?… in PHP_METHOD()
1328 _node_as_zval(sxe, nodeptr, &value, SXE_ITER_NONE, NULL, NULL, 0); in PHP_METHOD()
1345 php_sxe_object *sxe; in PHP_METHOD() local
1353 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1354 if (!sxe->document) { in PHP_METHOD()
1359 if (!sxe->xpath) { in PHP_METHOD()
1360 sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr); in PHP_METHOD()
1363 if (xmlXPathRegisterNs(sxe->xpath, (xmlChar *)prefix, (xmlChar *)ns_uri) != 0) { in PHP_METHOD()
1374 php_sxe_object *sxe; in PHP_METHOD() local
1386 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1387 GET_NODE(sxe, node); in PHP_METHOD()
1388 node = php_sxe_get_first_node(sxe, node); in PHP_METHOD()
1397 bytes = xmlSaveFile(filename, (xmlDocPtr) sxe->document->ptr); in PHP_METHOD()
1410 xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, NULL); in PHP_METHOD()
1417 …xmlDocDumpMemoryEnc((xmlDocPtr) sxe->document->ptr, &strval, &strval_len, (const char *) ((xmlDocP… in PHP_METHOD()
1434 …xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, (const char *) ((xmlDocPtr) in PHP_METHOD()
1469 static void sxe_add_namespaces(php_sxe_object *sxe, xmlNodePtr node, bool recursive, zval *return_v… in sxe_add_namespaces() argument
1489 sxe_add_namespaces(sxe, node, recursive, return_value); in sxe_add_namespaces()
1496 static inline void sxe_object_free_iterxpath(php_sxe_object *sxe) in sxe_object_free_iterxpath() argument
1498 if (!Z_ISUNDEF(sxe->iter.data)) { in sxe_object_free_iterxpath()
1499 zval_ptr_dtor(&sxe->iter.data); in sxe_object_free_iterxpath()
1500 ZVAL_UNDEF(&sxe->iter.data); in sxe_object_free_iterxpath()
1503 if (sxe->iter.name) { in sxe_object_free_iterxpath()
1504 efree(sxe->iter.name); in sxe_object_free_iterxpath()
1505 sxe->iter.name = NULL; in sxe_object_free_iterxpath()
1507 if (sxe->iter.nsprefix) { in sxe_object_free_iterxpath()
1508 efree(sxe->iter.nsprefix); in sxe_object_free_iterxpath()
1509 sxe->iter.nsprefix = NULL; in sxe_object_free_iterxpath()
1511 if (!Z_ISUNDEF(sxe->tmp)) { in sxe_object_free_iterxpath()
1512 zval_ptr_dtor(&sxe->tmp); in sxe_object_free_iterxpath()
1513 ZVAL_UNDEF(&sxe->tmp); in sxe_object_free_iterxpath()
1516 php_libxml_node_decrement_resource((php_libxml_node_object *)sxe); in sxe_object_free_iterxpath()
1518 if (sxe->xpath) { in sxe_object_free_iterxpath()
1519 xmlXPathFreeContext(sxe->xpath); in sxe_object_free_iterxpath()
1520 sxe->xpath = NULL; in sxe_object_free_iterxpath()
1529 php_sxe_object *sxe; in PHP_METHOD() local
1538 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1539 GET_NODE(sxe, node); in PHP_METHOD()
1540 node = php_sxe_get_first_node(sxe, node); in PHP_METHOD()
1544 sxe_add_namespaces(sxe, node, recursive, return_value); in PHP_METHOD()
1552 static void sxe_add_registered_namespaces(php_sxe_object *sxe, xmlNodePtr node, bool recursive, zva… in sxe_add_registered_namespaces() argument
1565 sxe_add_registered_namespaces(sxe, node, recursive, return_value); in sxe_add_registered_namespaces()
1577 php_sxe_object *sxe; in PHP_METHOD() local
1584 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1586 if (!sxe->document) { in PHP_METHOD()
1591 node = xmlDocGetRootElement((xmlDocPtr)sxe->document->ptr); in PHP_METHOD()
1593 GET_NODE(sxe, node); in PHP_METHOD()
1601 sxe_add_registered_namespaces(sxe, node, recursive, return_value); in PHP_METHOD()
1608 php_sxe_object *sxe; in PHP_METHOD() local
1618 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1620 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1624 GET_NODE(sxe, node); in PHP_METHOD()
1625 node = php_sxe_get_first_node(sxe, node); in PHP_METHOD()
1630 _node_as_zval(sxe, node, return_value, SXE_ITER_CHILD, NULL, (xmlChar *)nsprefix, isprefix); in PHP_METHOD()
1638 php_sxe_object *sxe; in PHP_METHOD() local
1646 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1648 GET_NODE(sxe, node); in PHP_METHOD()
1649 node = php_sxe_get_first_node(sxe, node); in PHP_METHOD()
1662 php_sxe_object *sxe; in PHP_METHOD() local
1672 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1673 GET_NODE(sxe, node); in PHP_METHOD()
1674 node = php_sxe_get_first_node(sxe, node); in PHP_METHOD()
1679 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1683 _node_as_zval(sxe, node, return_value, SXE_ITER_ATTRLIST, NULL, (xmlChar *)nsprefix, isprefix); in PHP_METHOD()
1690 php_sxe_object *sxe; in PHP_METHOD() local
1707 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1708 GET_NODE(sxe, node); in PHP_METHOD()
1710 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
1715 node = php_sxe_get_first_node(sxe, node); in PHP_METHOD()
1744 _node_as_zval(sxe, newnode, return_value, SXE_ITER_NONE, (char *)localname, prefix, 0); in PHP_METHOD()
1756 php_sxe_object *sxe; in PHP_METHOD() local
1774 sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD()
1775 GET_NODE(sxe, node); in PHP_METHOD()
1777 node = php_sxe_get_first_node(sxe, node); in PHP_METHOD()
1861 php_sxe_object *sxe; in sxe_object_cast_ex() local
1867 sxe = php_sxe_fetch_object(readobj); in sxe_object_cast_ex()
1870 node = php_sxe_get_first_node(sxe, NULL); in sxe_object_cast_ex()
1879 if (sxe->iter.type != SXE_ITER_NONE) { in sxe_object_cast_ex()
1880 node = php_sxe_get_first_node(sxe, NULL); in sxe_object_cast_ex()
1882 contents = xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, node->children, 1); in sxe_object_cast_ex()
1885 if (!sxe->node) { in sxe_object_cast_ex()
1886 if (sxe->document) { in sxe_object_cast_ex()
1887 …php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement((xmlDocPtr) sxe-… in sxe_object_cast_ex()
1891 if (sxe->node && sxe->node->node) { in sxe_object_cast_ex()
1892 if (sxe->node->node->children) { in sxe_object_cast_ex()
1893 contents = xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, sxe->node->node->children, 1); in sxe_object_cast_ex()
1894 } else if (sxe->node->node->type == XML_COMMENT_NODE || sxe->node->node->type == XML_PI_NODE) { in sxe_object_cast_ex()
1895 contents = sxe->node->node->content; in sxe_object_cast_ex()
1938 static zend_result php_sxe_count_elements_helper(php_sxe_object *sxe, zend_long *count) /* {{{ */ in php_sxe_count_elements_helper() argument
1945 ZVAL_COPY_VALUE(&data, &sxe->iter.data); in php_sxe_count_elements_helper()
1946 ZVAL_UNDEF(&sxe->iter.data); in php_sxe_count_elements_helper()
1948 node = php_sxe_reset_iterator(sxe, 0); in php_sxe_count_elements_helper()
1953 node = php_sxe_iterator_fetch(sxe, node->next, 0); in php_sxe_count_elements_helper()
1956 if (!Z_ISUNDEF(sxe->iter.data)) { in php_sxe_count_elements_helper()
1957 zval_ptr_dtor(&sxe->iter.data); in php_sxe_count_elements_helper()
1959 ZVAL_COPY_VALUE(&sxe->iter.data, &data); in php_sxe_count_elements_helper()
1987 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
1993 php_sxe_count_elements_helper(sxe, &count); in PHP_METHOD()
2014 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2020 RETURN_BOOL(!Z_ISUNDEF(sxe->iter.data)); in PHP_METHOD()
2027 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2033 if (Z_ISUNDEF(sxe->iter.data)) { in PHP_METHOD()
2038 RETURN_COPY_DEREF(&sxe->iter.data); in PHP_METHOD()
2047 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2053 if (Z_ISUNDEF(sxe->iter.data)) { in PHP_METHOD()
2058 intern = Z_SXEOBJ_P(&sxe->iter.data); in PHP_METHOD()
2083 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2091 if (Z_ISUNDEF(sxe->iter.data) || sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
2094 child = Z_SXEOBJ_P(&sxe->iter.data); in PHP_METHOD()
2110 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2116 if (Z_ISUNDEF(sxe->iter.data) || sxe->iter.type == SXE_ITER_ATTRLIST) { in PHP_METHOD()
2120 RETURN_COPY_DEREF(&sxe->iter.data); in PHP_METHOD()
2129 php_sxe_object *sxe = php_sxe_fetch_object(object); in sxe_object_clone() local
2133 bool is_root_element = sxe->node && sxe->node->node && sxe->node->node->parent in sxe_object_clone()
2134 …&& (sxe->node->node->parent->type == XML_DOCUMENT_NODE || sxe->node->node->parent->type == XML_HTM… in sxe_object_clone()
2136 clone = php_sxe_object_new(sxe->zo.ce, sxe->fptr_count); in sxe_object_clone()
2139 docp = xmlCopyDoc(sxe->document->ptr, 1); in sxe_object_clone()
2142 clone->document = sxe->document; in sxe_object_clone()
2149 clone->iter.isprefix = sxe->iter.isprefix; in sxe_object_clone()
2150 if (sxe->iter.name != NULL) { in sxe_object_clone()
2151 clone->iter.name = (xmlChar*)estrdup((char*)sxe->iter.name); in sxe_object_clone()
2153 if (sxe->iter.nsprefix != NULL) { in sxe_object_clone()
2154 clone->iter.nsprefix = (xmlChar*)estrdup((char*)sxe->iter.nsprefix); in sxe_object_clone()
2156 clone->iter.type = sxe->iter.type; in sxe_object_clone()
2158 if (sxe->node) { in sxe_object_clone()
2162 nodep = xmlDocCopyNode(sxe->node->node, docp, 1); in sxe_object_clone()
2175 php_sxe_object *sxe; in sxe_object_free_storage() local
2177 sxe = php_sxe_fetch_object(object); in sxe_object_free_storage()
2179 zend_object_std_dtor(&sxe->zo); in sxe_object_free_storage()
2181 sxe_object_free_iterxpath(sxe); in sxe_object_free_storage()
2183 if (sxe->properties) { in sxe_object_free_storage()
2184 zend_hash_destroy(sxe->properties); in sxe_object_free_storage()
2185 FREE_HASHTABLE(sxe->properties); in sxe_object_free_storage()
2250 php_sxe_object *sxe; in PHP_FUNCTION() local
2284 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2285 sxe->iter.nsprefix = ns_len ? (xmlChar*)estrdup(ns) : NULL; in PHP_FUNCTION()
2286 sxe->iter.isprefix = isprefix; in PHP_FUNCTION()
2287 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in PHP_FUNCTION()
2288 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in PHP_FUNCTION()
2290 RETURN_OBJ(&sxe->zo); in PHP_FUNCTION()
2297 php_sxe_object *sxe; in PHP_FUNCTION() local
2339 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2340 sxe->iter.nsprefix = ns_len ? (xmlChar*)estrdup(ns) : NULL; in PHP_FUNCTION()
2341 sxe->iter.isprefix = isprefix; in PHP_FUNCTION()
2342 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in PHP_FUNCTION()
2343 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in PHP_FUNCTION()
2345 RETURN_OBJ(&sxe->zo); in PHP_FUNCTION()
2352 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in PHP_METHOD() local
2385 sxe_object_free_iterxpath(sxe); in PHP_METHOD()
2387 sxe->iter.nsprefix = ns_len ? (xmlChar*)estrdup(ns) : NULL; in PHP_METHOD()
2388 sxe->iter.isprefix = isprefix; in PHP_METHOD()
2389 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in PHP_METHOD()
2390 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in PHP_METHOD()
2406 static xmlNodePtr php_sxe_iterator_fetch(php_sxe_object *sxe, xmlNodePtr node, int use_data) /* {{{… in php_sxe_iterator_fetch() argument
2408 xmlChar *prefix = sxe->iter.nsprefix; in php_sxe_iterator_fetch()
2409 int isprefix = sxe->iter.isprefix; in php_sxe_iterator_fetch()
2411 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in php_sxe_iterator_fetch()
2412 if (sxe->iter.name) { in php_sxe_iterator_fetch()
2415 if (xmlStrEqual(node->name, sxe->iter.name) && match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2424 if (match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2431 } else if (sxe->iter.type == SXE_ITER_ELEMENT && sxe->iter.name) { in php_sxe_iterator_fetch()
2434 if (xmlStrEqual(node->name, sxe->iter.name) && match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2443 if (match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2452 _node_as_zval(sxe, node, &sxe->iter.data, SXE_ITER_NONE, NULL, prefix, isprefix); in php_sxe_iterator_fetch()
2459 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
2462 GET_NODE(sxe, node) in php_sxe_reset_iterator_no_clear_iter_data()
2465 switch (sxe->iter.type) { in php_sxe_reset_iterator_no_clear_iter_data()
2475 ZEND_ASSERT(Z_ISUNDEF(sxe->iter.data)); in php_sxe_reset_iterator_no_clear_iter_data()
2477 return php_sxe_iterator_fetch(sxe, node, use_data); in php_sxe_reset_iterator_no_clear_iter_data()
2482 static xmlNodePtr php_sxe_reset_iterator(php_sxe_object *sxe, int use_data) /* {{{ */ in php_sxe_reset_iterator() argument
2484 if (!Z_ISUNDEF(sxe->iter.data)) { in php_sxe_reset_iterator()
2485 zval_ptr_dtor(&sxe->iter.data); in php_sxe_reset_iterator()
2486 ZVAL_UNDEF(&sxe->iter.data); in php_sxe_reset_iterator()
2489 return php_sxe_reset_iterator_no_clear_iter_data(sxe, use_data); in php_sxe_reset_iterator()
2506 iterator->sxe = Z_SXEOBJ_P(object); in php_sxe_get_iterator()
2527 return Z_ISUNDEF(iterator->sxe->iter.data) ? FAILURE : SUCCESS; in php_sxe_iterator_valid()
2535 return &iterator->sxe->iter.data; in php_sxe_iterator_current_data()
2542 zval *curobj = &iterator->sxe->iter.data; in php_sxe_iterator_current_key()
2563 PHP_SXE_API void php_sxe_move_forward_iterator(php_sxe_object *sxe) /* {{{ */ in php_sxe_move_forward_iterator() argument
2568 if (!Z_ISUNDEF(sxe->iter.data)) { in php_sxe_move_forward_iterator()
2569 intern = Z_SXEOBJ_P(&sxe->iter.data); in php_sxe_move_forward_iterator()
2571 zval_ptr_dtor(&sxe->iter.data); in php_sxe_move_forward_iterator()
2572 ZVAL_UNDEF(&sxe->iter.data); in php_sxe_move_forward_iterator()
2576 php_sxe_iterator_fetch(sxe, node->next, 1); in php_sxe_move_forward_iterator()
2584 php_sxe_move_forward_iterator(iterator->sxe); in php_sxe_iterator_move_forward()
2588 PHP_SXE_API void php_sxe_rewind_iterator(php_sxe_object *sxe) /* {{{ */ in php_sxe_rewind_iterator() argument
2590 php_sxe_reset_iterator(sxe, 1); in php_sxe_rewind_iterator()
2596 php_sxe_object *sxe; in php_sxe_iterator_rewind() local
2599 sxe = iterator->sxe; in php_sxe_iterator_rewind()
2601 php_sxe_reset_iterator(sxe, 1); in php_sxe_iterator_rewind()
2607 php_sxe_object *sxe; in simplexml_export_node() local
2610 sxe = Z_SXEOBJ_P(object); in simplexml_export_node()
2611 GET_NODE(sxe, node); in simplexml_export_node()
2612 return php_sxe_get_first_node(sxe, node); in simplexml_export_node()
2619 php_sxe_object *sxe; in PHP_FUNCTION() local
2656 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2657 sxe->document = object->document; in PHP_FUNCTION()
2658 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, nodep->doc); in PHP_FUNCTION()
2659 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, nodep, NULL); in PHP_FUNCTION()
2661 RETURN_OBJ(&sxe->zo); in PHP_FUNCTION()