Lines Matching refs:sxe

51 static xmlNodePtr php_sxe_reset_iterator(php_sxe_object *sxe, int use_data);
52 static xmlNodePtr php_sxe_iterator_fetch(php_sxe_object *sxe, xmlNodePtr node, int use_data);
63 static void _node_as_zval(php_sxe_object *sxe, xmlNodePtr node, zval *value, SXE_ITER itertype, cha… in _node_as_zval() argument
67 subnode = php_sxe_object_new(sxe->zo.ce, sxe->fptr_count); in _node_as_zval()
68 subnode->document = sxe->document; in _node_as_zval()
94 static xmlNodePtr php_sxe_get_first_node(php_sxe_object *sxe, xmlNodePtr node) /* {{{ */ in php_sxe_get_first_node() argument
99 if (sxe && sxe->iter.type != SXE_ITER_NONE) { in php_sxe_get_first_node()
100 php_sxe_reset_iterator(sxe, 1); in php_sxe_get_first_node()
101 if (!Z_ISUNDEF(sxe->iter.data)) { in php_sxe_get_first_node()
102 intern = Z_SXEOBJ_P(&sxe->iter.data); in php_sxe_get_first_node()
112 static inline int match_ns(php_sxe_object *sxe, xmlNodePtr node, xmlChar *name, int prefix) /* {{{ … in match_ns() argument
126 static xmlNodePtr sxe_get_element_by_offset(php_sxe_object *sxe, zend_long offset, xmlNodePtr node,… in sxe_get_element_by_offset() argument
130 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_get_element_by_offset()
142 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_get_element_by_offset()
143 if (sxe->iter.type == SXE_ITER_CHILD || ( in sxe_get_element_by_offset()
144 sxe->iter.type == SXE_ITER_ELEMENT && !xmlStrcmp(node->name, sxe->iter.name))) { in sxe_get_element_by_offset()
163 static xmlNodePtr sxe_find_element_by_name(php_sxe_object *sxe, xmlNodePtr node, xmlChar *name) /* … in sxe_find_element_by_name() argument
167 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_find_element_by_name()
178 static xmlNodePtr sxe_get_element_by_name(php_sxe_object *sxe, xmlNodePtr node, char **name, SXE_IT… in sxe_get_element_by_name() argument
184 if (sxe->iter.type != SXE_ITER_ATTRLIST) in sxe_get_element_by_name()
186 orgtype = sxe->iter.type; in sxe_get_element_by_name()
187 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_get_element_by_name()
188 sxe->iter.type = SXE_ITER_CHILD; in sxe_get_element_by_name()
190 node = php_sxe_get_first_node(sxe, node); in sxe_get_element_by_name()
191 sxe->iter.type = orgtype; in sxe_get_element_by_name()
194 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_get_element_by_name()
195 orgnode = sxe_find_element_by_name(sxe, node, sxe->iter.name); in sxe_get_element_by_name()
204 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_get_element_by_name()
233 php_sxe_object *sxe; in sxe_prop_dim_read() local
241 sxe = Z_SXEOBJ_P(object); in sxe_prop_dim_read()
244 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
253 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
272 GET_NODE(sxe, node); in sxe_prop_dim_read()
274 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
277 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_read()
279 test = sxe->iter.name != NULL; in sxe_prop_dim_read()
280 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_read()
281 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_read()
296 if (Z_TYPE_P(member) != IS_LONG || sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
299 …if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->ite… in sxe_prop_dim_read()
301 …_node_as_zval(sxe, (xmlNodePtr) attr, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.ispre… in sxe_prop_dim_read()
310 …rcmp(attr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, (xmlChar *)name) && match_ns(sxe, (xml… in sxe_prop_dim_read()
311 …_node_as_zval(sxe, (xmlNodePtr) attr, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.ispre… in sxe_prop_dim_read()
321 if (!sxe->node) { in sxe_prop_dim_read()
322 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, node, NULL); in sxe_prop_dim_read()
328 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_read()
329 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_read()
331 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_prop_dim_read()
336 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, &cnt); in sxe_prop_dim_read()
341 _node_as_zval(sxe, node, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_prop_dim_read()
347 _node_as_zval(sxe, node, rv, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_prop_dim_read()
351 if (type != BP_VAR_IS || sxe_find_element_by_name(sxe, node->children, (xmlChar *) name)) { in sxe_prop_dim_read()
352 _node_as_zval(sxe, node, rv, SXE_ITER_ELEMENT, name, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_prop_dim_read()
424 php_sxe_object *sxe; in sxe_prop_dim_write() local
439 sxe = Z_SXEOBJ_P(object); in sxe_prop_dim_write()
442 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
454 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
481 GET_NODE(sxe, node); in sxe_prop_dim_write()
483 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
486 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_write()
488 test = sxe->iter.name != NULL; in sxe_prop_dim_write()
489 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_write()
491 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_write()
503 if (attribs && !node && sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_prop_dim_write()
504 node = xmlNewChild(mynode, mynode->ns, sxe->iter.name, NULL); in sxe_prop_dim_write()
546 …if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->ite… in sxe_prop_dim_write()
558 …tr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_write()
579 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_prop_dim_write()
587 newnode = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, &cnt); in sxe_prop_dim_write()
597 …cmp(node->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sxe, node, sxe->iter.nsprefix, sxe->ite… in sxe_prop_dim_write()
677 php_sxe_object *sxe; in sxe_property_get_adr() local
687 sxe = Z_SXEOBJ_P(object); in sxe_property_get_adr()
688 GET_NODE(sxe, node); in sxe_property_get_adr()
690 node = sxe_get_element_by_name(sxe, node, &name, &type); in sxe_property_get_adr()
700 _node_as_zval(sxe, node, &ret, type, name, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_property_get_adr()
702 if (!Z_ISUNDEF(sxe->tmp)) { in sxe_property_get_adr()
703 zval_ptr_dtor(&sxe->tmp); in sxe_property_get_adr()
706 ZVAL_COPY_VALUE(&sxe->tmp, &ret); in sxe_property_get_adr()
708 return &sxe->tmp; in sxe_property_get_adr()
716 php_sxe_object *sxe; in sxe_prop_dim_exists() local
732 sxe = Z_SXEOBJ_P(object); in sxe_prop_dim_exists()
734 GET_NODE(sxe, node); in sxe_prop_dim_exists()
737 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_exists()
740 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_exists()
741 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_exists()
746 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_exists()
749 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_exists()
751 test = sxe->iter.name != NULL; in sxe_prop_dim_exists()
752 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_exists()
753 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_exists()
764 …if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->ite… in sxe_prop_dim_exists()
775 …tr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_exists()
792 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_exists()
793 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_exists()
795 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL); in sxe_prop_dim_exists()
797 node = sxe_find_element_by_name(sxe, node->children, (xmlChar *)Z_STRVAL_P(member)); in sxe_prop_dim_exists()
838 php_sxe_object *sxe; in sxe_prop_dim_delete() local
855 sxe = Z_SXEOBJ_P(object); in sxe_prop_dim_delete()
857 GET_NODE(sxe, node); in sxe_prop_dim_delete()
860 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_delete()
863 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_delete()
864 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_delete()
869 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_delete()
872 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_delete()
874 test = sxe->iter.name != NULL; in sxe_prop_dim_delete()
875 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_delete()
876 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_delete()
887 …if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->ite… in sxe_prop_dim_delete()
900 …tr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_delete()
912 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_delete()
913 node = php_sxe_get_first_node(sxe, node); in sxe_prop_dim_delete()
915 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL); in sxe_prop_dim_delete()
927 …cmp(node->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sxe, node, sxe->iter.nsprefix, sxe->ite… in sxe_prop_dim_delete()
1031 php_sxe_object *sxe; in sxe_prop_is_empty() local
1039 sxe = Z_SXEOBJ_P(object); in sxe_prop_is_empty()
1041 GET_NODE(sxe, node); in sxe_prop_is_empty()
1046 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_prop_is_empty()
1047 node = php_sxe_get_first_node(sxe, node); in sxe_prop_is_empty()
1051 test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST; in sxe_prop_is_empty()
1053 …if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr)attr, sxe->iter… in sxe_prop_is_empty()
1060 GET_NODE(sxe, node); in sxe_prop_is_empty()
1061 node = php_sxe_get_first_node(sxe, node); in sxe_prop_is_empty()
1064 if (node && sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_is_empty()
1067 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_is_empty()
1068 …if (sxe->iter.type == SXE_ITER_NONE || !node->children || !node->parent || node->children->next ||… in sxe_prop_is_empty()
1071 ZVAL_COPY_VALUE(&iter_data, &sxe->iter.data); in sxe_prop_is_empty()
1072 ZVAL_UNDEF(&sxe->iter.data); in sxe_prop_is_empty()
1073 node = php_sxe_reset_iterator(sxe, 0); in sxe_prop_is_empty()
1092 …if (node->type == XML_ELEMENT_NODE && (! match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefi… in sxe_prop_is_empty()
1104 node = php_sxe_iterator_fetch(sxe, node->next, 0); in sxe_prop_is_empty()
1112 if (!Z_ISUNDEF(sxe->iter.data)) { in sxe_prop_is_empty()
1113 zval_ptr_dtor(&sxe->iter.data); in sxe_prop_is_empty()
1115 ZVAL_COPY_VALUE(&sxe->iter.data, &iter_data); in sxe_prop_is_empty()
1127 php_sxe_object *sxe; in sxe_get_prop_hash() local
1138 sxe = Z_SXEOBJ_P(object); in sxe_get_prop_hash()
1142 } else if (sxe->properties) { in sxe_get_prop_hash()
1143 zend_hash_clean(sxe->properties); in sxe_get_prop_hash()
1144 rv = sxe->properties; in sxe_get_prop_hash()
1147 sxe->properties = rv; in sxe_get_prop_hash()
1150 GET_NODE(sxe, node); in sxe_get_prop_hash()
1154 if (is_debug || sxe->iter.type != SXE_ITER_CHILD) { in sxe_get_prop_hash()
1155 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_get_prop_hash()
1156 node = php_sxe_get_first_node(sxe, node); in sxe_get_prop_hash()
1161 test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST; in sxe_get_prop_hash()
1163 …if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr)attr, sxe->iter… in sxe_get_prop_hash()
1164 ZVAL_STR(&value, sxe_xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, attr->children, 1)); in sxe_get_prop_hash()
1177 GET_NODE(sxe, node); in sxe_get_prop_hash()
1178 node = php_sxe_get_first_node(sxe, node); in sxe_get_prop_hash()
1180 if (node && sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_get_prop_hash()
1185 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_get_prop_hash()
1187 …if ( sxe->iter.type == SXE_ITER_NONE || !node->children || !node->parent || !node->next || node->c… in sxe_get_prop_hash()
1190 ZVAL_COPY_VALUE(&iter_data, &sxe->iter.data); in sxe_get_prop_hash()
1191 ZVAL_UNDEF(&sxe->iter.data); in sxe_get_prop_hash()
1193 node = php_sxe_reset_iterator(sxe, 0); in sxe_get_prop_hash()
1214 …if (node->type == XML_ELEMENT_NODE && (! match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefi… in sxe_get_prop_hash()
1225 _get_base_node_value(sxe, node, &value, sxe->iter.nsprefix, sxe->iter.isprefix); in sxe_get_prop_hash()
1234 node = php_sxe_iterator_fetch(sxe, node->next, 0); in sxe_get_prop_hash()
1242 if (!Z_ISUNDEF(sxe->iter.data)) { in sxe_get_prop_hash()
1243 zval_ptr_dtor(&sxe->iter.data); in sxe_get_prop_hash()
1245 ZVAL_COPY_VALUE(&sxe->iter.data, &iter_data); in sxe_get_prop_hash()
1253 php_sxe_object *sxe; in sxe_get_gc() local
1254 sxe = Z_SXEOBJ_P(object); in sxe_get_gc()
1258 return sxe->properties; in sxe_get_gc()
1300 php_sxe_object *sxe; in SXE_METHOD() local
1315 sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD()
1317 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in SXE_METHOD()
1321 if (!sxe->xpath) { in SXE_METHOD()
1322 sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr); in SXE_METHOD()
1324 if (!sxe->node) { in SXE_METHOD()
1325 …php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement((xmlDocPtr) sxe-… in SXE_METHOD()
1326 if (!sxe->node) { in SXE_METHOD()
1331 nodeptr = php_sxe_get_first_node(sxe, sxe->node->node); in SXE_METHOD()
1333 sxe->xpath->node = nodeptr; in SXE_METHOD()
1335 ns = xmlGetNsList((xmlDocPtr) sxe->document->ptr, nodeptr); in SXE_METHOD()
1342 sxe->xpath->namespaces = ns; in SXE_METHOD()
1343 sxe->xpath->nsNr = nsnbr; in SXE_METHOD()
1345 retval = xmlXPathEval((xmlChar *)query, sxe->xpath); in SXE_METHOD()
1348 sxe->xpath->namespaces = NULL; in SXE_METHOD()
1349 sxe->xpath->nsNr = 0; in SXE_METHOD()
1370 _node_as_zval(sxe, nodeptr->parent, &value, SXE_ITER_NONE, NULL, NULL, 0); in SXE_METHOD()
1372 …_node_as_zval(sxe, nodeptr->parent, &value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, nodeptr->ns ?… in SXE_METHOD()
1374 _node_as_zval(sxe, nodeptr, &value, SXE_ITER_NONE, NULL, NULL, 0); in SXE_METHOD()
1392 php_sxe_object *sxe; in SXE_METHOD() local
1400 sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD()
1401 if (!sxe->xpath) { in SXE_METHOD()
1402 sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr); in SXE_METHOD()
1405 if (xmlXPathRegisterNs(sxe->xpath, (xmlChar *)prefix, (xmlChar *)ns_uri) != 0) { in SXE_METHOD()
1417 php_sxe_object *sxe; in SXE_METHOD() local
1434 sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD()
1435 GET_NODE(sxe, node); in SXE_METHOD()
1436 node = php_sxe_get_first_node(sxe, node); in SXE_METHOD()
1441 bytes = xmlSaveFile(filename, (xmlDocPtr) sxe->document->ptr); in SXE_METHOD()
1454 xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, NULL); in SXE_METHOD()
1463 sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD()
1464 GET_NODE(sxe, node); in SXE_METHOD()
1465 node = php_sxe_get_first_node(sxe, node); in SXE_METHOD()
1469 …xmlDocDumpMemoryEnc((xmlDocPtr) sxe->document->ptr, &strval, &strval_len, (const char *) ((xmlDocP… in SXE_METHOD()
1486 …xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, (const char *) ((xmlDocPtr) in SXE_METHOD()
1524 static void sxe_add_namespaces(php_sxe_object *sxe, xmlNodePtr node, zend_bool recursive, zval *ret… in sxe_add_namespaces() argument
1544 sxe_add_namespaces(sxe, node, recursive, return_value); in sxe_add_namespaces()
1556 php_sxe_object *sxe; in SXE_METHOD() local
1565 sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD()
1566 GET_NODE(sxe, node); in SXE_METHOD()
1567 node = php_sxe_get_first_node(sxe, node); in SXE_METHOD()
1571 sxe_add_namespaces(sxe, node, recursive, return_value); in SXE_METHOD()
1579 static void sxe_add_registered_namespaces(php_sxe_object *sxe, xmlNodePtr node, zend_bool recursive… in sxe_add_registered_namespaces() argument
1592 sxe_add_registered_namespaces(sxe, node, recursive, return_value); in sxe_add_registered_namespaces()
1605 php_sxe_object *sxe; in SXE_METHOD() local
1612 sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD()
1614 node = xmlDocGetRootElement((xmlDocPtr)sxe->document->ptr); in SXE_METHOD()
1616 GET_NODE(sxe, node); in SXE_METHOD()
1624 sxe_add_registered_namespaces(sxe, node, recursive, return_value); in SXE_METHOD()
1632 php_sxe_object *sxe; in SXE_METHOD() local
1642 sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD()
1644 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in SXE_METHOD()
1648 GET_NODE(sxe, node); in SXE_METHOD()
1649 node = php_sxe_get_first_node(sxe, node); in SXE_METHOD()
1651 _node_as_zval(sxe, node, return_value, SXE_ITER_CHILD, NULL, (xmlChar *)nsprefix, isprefix); in SXE_METHOD()
1660 php_sxe_object *sxe; in SXE_METHOD() local
1664 sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD()
1666 GET_NODE(sxe, node); in SXE_METHOD()
1667 node = php_sxe_get_first_node(sxe, node); in SXE_METHOD()
1681 php_sxe_object *sxe; in SXE_METHOD() local
1691 sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD()
1692 GET_NODE(sxe, node); in SXE_METHOD()
1694 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in SXE_METHOD()
1698 node = php_sxe_get_first_node(sxe, node); in SXE_METHOD()
1700 _node_as_zval(sxe, node, return_value, SXE_ITER_ATTRLIST, NULL, (xmlChar *)nsprefix, isprefix); in SXE_METHOD()
1708 php_sxe_object *sxe; in SXE_METHOD() local
1725 sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD()
1726 GET_NODE(sxe, node); in SXE_METHOD()
1728 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in SXE_METHOD()
1733 node = php_sxe_get_first_node(sxe, node); in SXE_METHOD()
1760 _node_as_zval(sxe, newnode, return_value, SXE_ITER_NONE, (char *)localname, prefix, 0); in SXE_METHOD()
1773 php_sxe_object *sxe; in SXE_METHOD() local
1791 sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD()
1792 GET_NODE(sxe, node); in SXE_METHOD()
1794 node = php_sxe_get_first_node(sxe, node); in SXE_METHOD()
1880 php_sxe_object *sxe; in sxe_object_cast_ex() local
1885 sxe = Z_SXEOBJ_P(readobj); in sxe_object_cast_ex()
1888 node = php_sxe_get_first_node(sxe, NULL); in sxe_object_cast_ex()
1897 if (sxe->iter.type != SXE_ITER_NONE) { in sxe_object_cast_ex()
1898 node = php_sxe_get_first_node(sxe, NULL); in sxe_object_cast_ex()
1900 contents = xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, node->children, 1); in sxe_object_cast_ex()
1903 if (!sxe->node) { in sxe_object_cast_ex()
1904 if (sxe->document) { in sxe_object_cast_ex()
1905 …php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement((xmlDocPtr) sxe-… in sxe_object_cast_ex()
1909 if (sxe->node && sxe->node->node) { in sxe_object_cast_ex()
1910 if (sxe->node->node->children) { in sxe_object_cast_ex()
1911 contents = xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, sxe->node->node->children, 1); in sxe_object_cast_ex()
1950 static int php_sxe_count_elements_helper(php_sxe_object *sxe, zend_long *count) /* {{{ */ in php_sxe_count_elements_helper() argument
1957 ZVAL_COPY_VALUE(&data, &sxe->iter.data); in php_sxe_count_elements_helper()
1958 ZVAL_UNDEF(&sxe->iter.data); in php_sxe_count_elements_helper()
1960 node = php_sxe_reset_iterator(sxe, 0); in php_sxe_count_elements_helper()
1965 node = php_sxe_iterator_fetch(sxe, node->next, 0); in php_sxe_count_elements_helper()
1968 if (!Z_ISUNDEF(sxe->iter.data)) { in php_sxe_count_elements_helper()
1969 zval_ptr_dtor(&sxe->iter.data); in php_sxe_count_elements_helper()
1971 ZVAL_COPY_VALUE(&sxe->iter.data, &data); in php_sxe_count_elements_helper()
2000 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD() local
2006 php_sxe_count_elements_helper(sxe, &count); in SXE_METHOD()
2030 php_sxe_object *sxe = Z_SXEOBJ_P(object); in sxe_object_clone() local
2035 clone = php_sxe_object_new(sxe->zo.ce, sxe->fptr_count); in sxe_object_clone()
2036 clone->document = sxe->document; in sxe_object_clone()
2042 clone->iter.isprefix = sxe->iter.isprefix; in sxe_object_clone()
2043 if (sxe->iter.name != NULL) { in sxe_object_clone()
2044 clone->iter.name = (xmlChar*)estrdup((char*)sxe->iter.name); in sxe_object_clone()
2046 if (sxe->iter.nsprefix != NULL) { in sxe_object_clone()
2047 clone->iter.nsprefix = (xmlChar*)estrdup((char*)sxe->iter.nsprefix); in sxe_object_clone()
2049 clone->iter.type = sxe->iter.type; in sxe_object_clone()
2051 if (sxe->node) { in sxe_object_clone()
2052 nodep = xmlDocCopyNode(sxe->node->node, docp, 1); in sxe_object_clone()
2066 php_sxe_object *sxe; in sxe_object_dtor() local
2068 sxe = php_sxe_fetch_object(object); in sxe_object_dtor()
2070 if (!Z_ISUNDEF(sxe->iter.data)) { in sxe_object_dtor()
2071 zval_ptr_dtor(&sxe->iter.data); in sxe_object_dtor()
2072 ZVAL_UNDEF(&sxe->iter.data); in sxe_object_dtor()
2075 if (sxe->iter.name) { in sxe_object_dtor()
2076 efree(sxe->iter.name); in sxe_object_dtor()
2077 sxe->iter.name = NULL; in sxe_object_dtor()
2079 if (sxe->iter.nsprefix) { in sxe_object_dtor()
2080 efree(sxe->iter.nsprefix); in sxe_object_dtor()
2081 sxe->iter.nsprefix = NULL; in sxe_object_dtor()
2083 if (!Z_ISUNDEF(sxe->tmp)) { in sxe_object_dtor()
2084 zval_ptr_dtor(&sxe->tmp); in sxe_object_dtor()
2085 ZVAL_UNDEF(&sxe->tmp); in sxe_object_dtor()
2094 php_sxe_object *sxe; in sxe_object_free_storage() local
2096 sxe = php_sxe_fetch_object(object); in sxe_object_free_storage()
2098 zend_object_std_dtor(&sxe->zo); in sxe_object_free_storage()
2100 php_libxml_node_decrement_resource((php_libxml_node_object *)sxe); in sxe_object_free_storage()
2102 if (sxe->xpath) { in sxe_object_free_storage()
2103 xmlXPathFreeContext(sxe->xpath); in sxe_object_free_storage()
2106 if (sxe->properties) { in sxe_object_free_storage()
2107 zend_hash_destroy(sxe->properties); in sxe_object_free_storage()
2108 FREE_HASHTABLE(sxe->properties); in sxe_object_free_storage()
2177 php_sxe_object *sxe; in PHP_FUNCTION() local
2209 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2210 sxe->iter.nsprefix = ns_len ? (xmlChar*)estrdup(ns) : NULL; in PHP_FUNCTION()
2211 sxe->iter.isprefix = isprefix; in PHP_FUNCTION()
2212 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in PHP_FUNCTION()
2213 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in PHP_FUNCTION()
2215 ZVAL_OBJ(return_value, &sxe->zo); in PHP_FUNCTION()
2223 php_sxe_object *sxe; in PHP_FUNCTION() local
2263 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2264 sxe->iter.nsprefix = ns_len ? (xmlChar*)estrdup(ns) : NULL; in PHP_FUNCTION()
2265 sxe->iter.isprefix = isprefix; in PHP_FUNCTION()
2266 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in PHP_FUNCTION()
2267 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in PHP_FUNCTION()
2269 ZVAL_OBJ(return_value, &sxe->zo); in PHP_FUNCTION()
2277 php_sxe_object *sxe = Z_SXEOBJ_P(ZEND_THIS); in SXE_METHOD() local
2304 ((php_libxml_node_object *)sxe)->document = NULL; in SXE_METHOD()
2309 sxe->iter.nsprefix = ns_len ? (xmlChar*)estrdup(ns) : NULL; in SXE_METHOD()
2310 sxe->iter.isprefix = isprefix; in SXE_METHOD()
2311 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp); in SXE_METHOD()
2312 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL); in SXE_METHOD()
2327 static xmlNodePtr php_sxe_iterator_fetch(php_sxe_object *sxe, xmlNodePtr node, int use_data) /* {{{… in php_sxe_iterator_fetch() argument
2329 xmlChar *prefix = sxe->iter.nsprefix; in php_sxe_iterator_fetch()
2330 int isprefix = sxe->iter.isprefix; in php_sxe_iterator_fetch()
2332 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in php_sxe_iterator_fetch()
2333 if (sxe->iter.name) { in php_sxe_iterator_fetch()
2336 if (!xmlStrcmp(node->name, sxe->iter.name) && match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2345 if (match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2352 } else if (sxe->iter.type == SXE_ITER_ELEMENT && sxe->iter.name) { in php_sxe_iterator_fetch()
2355 if (!xmlStrcmp(node->name, sxe->iter.name) && match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2364 if (match_ns(sxe, node, prefix, isprefix)) { in php_sxe_iterator_fetch()
2373 _node_as_zval(sxe, node, &sxe->iter.data, SXE_ITER_NONE, NULL, prefix, isprefix); in php_sxe_iterator_fetch()
2380 static xmlNodePtr php_sxe_reset_iterator(php_sxe_object *sxe, int use_data) /* {{{ */ in php_sxe_reset_iterator() argument
2384 if (!Z_ISUNDEF(sxe->iter.data)) { in php_sxe_reset_iterator()
2385 zval_ptr_dtor(&sxe->iter.data); in php_sxe_reset_iterator()
2386 ZVAL_UNDEF(&sxe->iter.data); in php_sxe_reset_iterator()
2389 GET_NODE(sxe, node) in php_sxe_reset_iterator()
2392 switch (sxe->iter.type) { in php_sxe_reset_iterator()
2401 return php_sxe_iterator_fetch(sxe, node, use_data); in php_sxe_reset_iterator()
2421 iterator->sxe = Z_SXEOBJ_P(object); in php_sxe_get_iterator()
2442 return Z_ISUNDEF(iterator->sxe->iter.data) ? FAILURE : SUCCESS; in php_sxe_iterator_valid()
2450 return &iterator->sxe->iter.data; in php_sxe_iterator_current_data()
2457 zval *curobj = &iterator->sxe->iter.data; in php_sxe_iterator_current_key()
2473 PHP_SXE_API void php_sxe_move_forward_iterator(php_sxe_object *sxe) /* {{{ */ in php_sxe_move_forward_iterator() argument
2478 if (!Z_ISUNDEF(sxe->iter.data)) { in php_sxe_move_forward_iterator()
2479 intern = Z_SXEOBJ_P(&sxe->iter.data); in php_sxe_move_forward_iterator()
2481 zval_ptr_dtor(&sxe->iter.data); in php_sxe_move_forward_iterator()
2482 ZVAL_UNDEF(&sxe->iter.data); in php_sxe_move_forward_iterator()
2486 php_sxe_iterator_fetch(sxe, node->next, 1); in php_sxe_move_forward_iterator()
2494 php_sxe_move_forward_iterator(iterator->sxe); in php_sxe_iterator_move_forward()
2498 PHP_SXE_API void php_sxe_rewind_iterator(php_sxe_object *sxe) /* {{{ */ in php_sxe_rewind_iterator() argument
2500 php_sxe_reset_iterator(sxe, 1); in php_sxe_rewind_iterator()
2506 php_sxe_object *sxe; in php_sxe_iterator_rewind() local
2509 sxe = iterator->sxe; in php_sxe_iterator_rewind()
2511 php_sxe_reset_iterator(sxe, 1); in php_sxe_iterator_rewind()
2517 php_sxe_object *sxe; in simplexml_export_node() local
2520 sxe = Z_SXEOBJ_P(object); in simplexml_export_node()
2521 GET_NODE(sxe, node); in simplexml_export_node()
2522 return php_sxe_get_first_node(sxe, node); in simplexml_export_node()
2530 php_sxe_object *sxe; in PHP_FUNCTION() local
2562 sxe = php_sxe_object_new(ce, fptr_count); in PHP_FUNCTION()
2563 sxe->document = object->document; in PHP_FUNCTION()
2564 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, nodep->doc); in PHP_FUNCTION()
2565 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, nodep, NULL); in PHP_FUNCTION()
2567 ZVAL_OBJ(return_value, &sxe->zo); in PHP_FUNCTION()
2701 zend_class_entry sxe; in PHP_MINIT_FUNCTION() local
2703 INIT_CLASS_ENTRY(sxe, "SimpleXMLElement", sxe_functions); in PHP_MINIT_FUNCTION()
2704 sxe.create_object = sxe_object_new; in PHP_MINIT_FUNCTION()
2705 sxe_class_entry = zend_register_internal_class(&sxe); in PHP_MINIT_FUNCTION()
2737 PHP_MINIT(sxe)(INIT_FUNC_ARGS_PASSTHRU); in PHP_MINIT_FUNCTION() local