Lines Matching refs:sxe

56 static xmlNodePtr php_sxe_reset_iterator(php_sxe_object *sxe, int use_data TSRMLS_DC);
57 static xmlNodePtr php_sxe_iterator_fetch(php_sxe_object *sxe, xmlNodePtr node, int use_data TSRMLS_…
68 static void _node_as_zval(php_sxe_object *sxe, xmlNodePtr node, zval *value, SXE_ITER itertype, cha… in _node_as_zval() argument
72 subnode = php_sxe_object_new(sxe->zo.ce TSRMLS_CC); in _node_as_zval()
73 subnode->document = sxe->document; in _node_as_zval()
111 static xmlNodePtr php_sxe_get_first_node(php_sxe_object *sxe, xmlNodePtr node TSRMLS_DC) /* {{{ */ in php_sxe_get_first_node() argument
116 if (sxe && sxe->iter.type != SXE_ITER_NONE) { in php_sxe_get_first_node()
117 php_sxe_reset_iterator(sxe, 1 TSRMLS_CC); in php_sxe_get_first_node()
118 if (sxe->iter.data) { in php_sxe_get_first_node()
119 intern = (php_sxe_object *)zend_object_store_get_object(sxe->iter.data TSRMLS_CC); in php_sxe_get_first_node()
129 static inline int match_ns(php_sxe_object *sxe, xmlNodePtr node, xmlChar *name, int prefix) /* {{{ … in match_ns() argument
143 static xmlNodePtr sxe_get_element_by_offset(php_sxe_object *sxe, long offset, xmlNodePtr node, long… in sxe_get_element_by_offset() argument
147 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_get_element_by_offset()
159 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_get_element_by_offset()
160 if (sxe->iter.type == SXE_ITER_CHILD || ( in sxe_get_element_by_offset()
161 sxe->iter.type == SXE_ITER_ELEMENT && !xmlStrcmp(node->name, sxe->iter.name))) { in sxe_get_element_by_offset()
180 static xmlNodePtr sxe_find_element_by_name(php_sxe_object *sxe, xmlNodePtr node, xmlChar *name TSRM… in sxe_find_element_by_name() argument
184 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_find_element_by_name()
195 static xmlNodePtr sxe_get_element_by_name(php_sxe_object *sxe, xmlNodePtr node, char **name, SXE_IT… in sxe_get_element_by_name() argument
201 if (sxe->iter.type != SXE_ITER_ATTRLIST) in sxe_get_element_by_name()
203 orgtype = sxe->iter.type; in sxe_get_element_by_name()
204 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_get_element_by_name()
205 sxe->iter.type = SXE_ITER_CHILD; in sxe_get_element_by_name()
207 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_get_element_by_name()
208 sxe->iter.type = orgtype; in sxe_get_element_by_name()
211 if (sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_get_element_by_name()
212 orgnode = sxe_find_element_by_name(sxe, node, sxe->iter.name TSRMLS_CC); in sxe_get_element_by_name()
221 …if (node->type == XML_ELEMENT_NODE && match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefix))… in sxe_get_element_by_name()
251 php_sxe_object *sxe; in sxe_prop_dim_read() local
259 sxe = php_sxe_fetch_object(object TSRMLS_CC); in sxe_prop_dim_read()
262 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
281 GET_NODE(sxe, node); in sxe_prop_dim_read()
283 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
286 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_read()
288 test = sxe->iter.name != NULL; in sxe_prop_dim_read()
289 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_read()
290 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_read()
306 if (Z_TYPE_P(member) != IS_LONG || sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_read()
309 …if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->ite… in sxe_prop_dim_read()
311 …_node_as_zval(sxe, (xmlNodePtr) attr, return_value, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->… in sxe_prop_dim_read()
320 …rcmp(attr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, (xmlChar *)name) && match_ns(sxe, (xml… in sxe_prop_dim_read()
321 …_node_as_zval(sxe, (xmlNodePtr) attr, return_value, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->… in sxe_prop_dim_read()
331 if (!sxe->node) { in sxe_prop_dim_read()
332 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, node, NULL TSRMLS_CC); in sxe_prop_dim_read()
338 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_read()
339 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_read()
341 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_prop_dim_read()
346 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, &cnt); in sxe_prop_dim_read()
351 …_node_as_zval(sxe, node, return_value, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.isprefix… in sxe_prop_dim_read()
357 …_node_as_zval(sxe, node, return_value, SXE_ITER_NONE, NULL, sxe->iter.nsprefix, sxe->iter.isprefix… in sxe_prop_dim_read()
363 GET_NODE(sxe, node); in sxe_prop_dim_read()
364 node = sxe_get_element_by_name(sxe, node, &name, &newtype TSRMLS_CC); in sxe_prop_dim_read()
366 …_node_as_zval(sxe, node, return_value, newtype, name, sxe->iter.nsprefix, sxe->iter.isprefix TSRML… in sxe_prop_dim_read()
369 …_node_as_zval(sxe, node, return_value, SXE_ITER_ELEMENT, name, sxe->iter.nsprefix, sxe->iter.ispre… in sxe_prop_dim_read()
454 php_sxe_object *sxe; in sxe_prop_dim_write() local
469 sxe = php_sxe_fetch_object(object TSRMLS_CC); in sxe_prop_dim_write()
472 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
502 GET_NODE(sxe, node); in sxe_prop_dim_write()
504 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_write()
507 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_write()
509 test = sxe->iter.name != NULL; in sxe_prop_dim_write()
510 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_write()
512 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_write()
524 if (attribs && !node && sxe->iter.type == SXE_ITER_ELEMENT) { in sxe_prop_dim_write()
525 node = xmlNewChild(mynode, mynode->ns, sxe->iter.name, NULL); in sxe_prop_dim_write()
568 …if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->ite… in sxe_prop_dim_write()
580 …tr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_write()
598 if (sxe->iter.type == SXE_ITER_NONE) { in sxe_prop_dim_write()
606 newnode = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, &cnt); in sxe_prop_dim_write()
699 php_sxe_object *sxe; in sxe_property_get_adr() local
705 sxe = php_sxe_fetch_object(object TSRMLS_CC); in sxe_property_get_adr()
707 GET_NODE(sxe, node); in sxe_property_get_adr()
710 node = sxe_get_element_by_name(sxe, node, &name, &type TSRMLS_CC); in sxe_property_get_adr()
721 …_node_as_zval(sxe, node, return_value, type, name, sxe->iter.nsprefix, sxe->iter.isprefix TSRMLS_C… in sxe_property_get_adr()
723 sxe = php_sxe_fetch_object(return_value TSRMLS_CC); in sxe_property_get_adr()
724 if (sxe->tmp) { in sxe_property_get_adr()
725 zval_ptr_dtor(&sxe->tmp); in sxe_property_get_adr()
727 sxe->tmp = return_value; in sxe_property_get_adr()
730 return &sxe->tmp; in sxe_property_get_adr()
738 php_sxe_object *sxe; in sxe_prop_dim_exists() local
752 sxe = php_sxe_fetch_object(object TSRMLS_CC); in sxe_prop_dim_exists()
754 GET_NODE(sxe, node); in sxe_prop_dim_exists()
757 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_exists()
760 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_exists()
761 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_exists()
766 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_exists()
769 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_exists()
771 test = sxe->iter.name != NULL; in sxe_prop_dim_exists()
772 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_exists()
773 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_exists()
784 …if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->ite… in sxe_prop_dim_exists()
795 …tr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_exists()
812 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_exists()
813 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_exists()
815 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL); in sxe_prop_dim_exists()
867 php_sxe_object *sxe; in sxe_prop_dim_delete() local
882 sxe = php_sxe_fetch_object(object TSRMLS_CC); in sxe_prop_dim_delete()
884 GET_NODE(sxe, node); in sxe_prop_dim_delete()
887 if (sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_prop_dim_delete()
890 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_delete()
891 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_delete()
896 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in sxe_prop_dim_delete()
899 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_delete()
901 test = sxe->iter.name != NULL; in sxe_prop_dim_delete()
902 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_prop_dim_delete()
903 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_delete()
914 …if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr) attr, sxe->ite… in sxe_prop_dim_delete()
927 …tr->name, sxe->iter.name)) && !xmlStrcmp(attr->name, (xmlChar *)Z_STRVAL_P(member)) && match_ns(sx… in sxe_prop_dim_delete()
939 if (sxe->iter.type == SXE_ITER_CHILD) { in sxe_prop_dim_delete()
940 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_prop_dim_delete()
942 node = sxe_get_element_by_offset(sxe, Z_LVAL_P(member), node, NULL); in sxe_prop_dim_delete()
1066 php_sxe_object *sxe; in sxe_get_prop_hash() local
1077 sxe = php_sxe_fetch_object(object TSRMLS_CC); in sxe_get_prop_hash()
1083 else if (sxe->properties) { in sxe_get_prop_hash()
1084 zend_hash_clean(sxe->properties); in sxe_get_prop_hash()
1085 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 TSRMLS_CC); in sxe_get_prop_hash()
1103 test = sxe->iter.name && sxe->iter.type == SXE_ITER_ATTRLIST; in sxe_get_prop_hash()
1105 …if ((!test || !xmlStrcmp(attr->name, sxe->iter.name)) && match_ns(sxe, (xmlNodePtr)attr, sxe->iter… in sxe_get_prop_hash()
1107 …ZVAL_STRING(value, sxe_xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, attr->children, 1), 0); in sxe_get_prop_hash()
1121 GET_NODE(sxe, node); in sxe_get_prop_hash()
1122 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in sxe_get_prop_hash()
1124 if (node && sxe->iter.type != SXE_ITER_ATTRLIST) { in sxe_get_prop_hash()
1130 } else if (sxe->iter.type != SXE_ITER_CHILD) { in sxe_get_prop_hash()
1132 …if ( sxe->iter.type == SXE_ITER_NONE || !node->children || !node->parent || node->children->next |… in sxe_get_prop_hash()
1135 iter_data = sxe->iter.data; in sxe_get_prop_hash()
1136 sxe->iter.data = NULL; in sxe_get_prop_hash()
1138 node = php_sxe_reset_iterator(sxe, 0 TSRMLS_CC); in sxe_get_prop_hash()
1160 …if (node->type == XML_ELEMENT_NODE && (! match_ns(sxe, node, sxe->iter.nsprefix, sxe->iter.isprefi… in sxe_get_prop_hash()
1171 _get_base_node_value(sxe, node, &value, sxe->iter.nsprefix, sxe->iter.isprefix TSRMLS_CC); in sxe_get_prop_hash()
1180 node = php_sxe_iterator_fetch(sxe, node->next, 0 TSRMLS_CC); in sxe_get_prop_hash()
1188 if (sxe->iter.data) { in sxe_get_prop_hash()
1189 zval_ptr_dtor(&sxe->iter.data); in sxe_get_prop_hash()
1191 sxe->iter.data = iter_data; in sxe_get_prop_hash()
1199 php_sxe_object *sxe; in sxe_get_gc() local
1200 sxe = php_sxe_fetch_object(object TSRMLS_CC); in sxe_get_gc()
1204 return sxe->properties; in sxe_get_gc()
1246 php_sxe_object *sxe; in SXE_METHOD() local
1261 sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD()
1263 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in SXE_METHOD()
1267 if (!sxe->xpath) { in SXE_METHOD()
1268 sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr); in SXE_METHOD()
1270 if (!sxe->node) { in SXE_METHOD()
1271 …php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement((xmlDocPtr) sxe-… in SXE_METHOD()
1272 if (!sxe->node) { in SXE_METHOD()
1277 nodeptr = php_sxe_get_first_node(sxe, sxe->node->node TSRMLS_CC); in SXE_METHOD()
1279 sxe->xpath->node = nodeptr; in SXE_METHOD()
1281 ns = xmlGetNsList((xmlDocPtr) sxe->document->ptr, nodeptr); in SXE_METHOD()
1288 sxe->xpath->namespaces = ns; in SXE_METHOD()
1289 sxe->xpath->nsNr = nsnbr; in SXE_METHOD()
1291 retval = xmlXPathEval((xmlChar *)query, sxe->xpath); in SXE_METHOD()
1294 sxe->xpath->namespaces = NULL; in SXE_METHOD()
1295 sxe->xpath->nsNr = 0; in SXE_METHOD()
1317 _node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_NONE, NULL, NULL, 0 TSRMLS_CC); in SXE_METHOD()
1319 …_node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, nodeptr->ns ? … in SXE_METHOD()
1321 _node_as_zval(sxe, nodeptr, value, SXE_ITER_NONE, NULL, NULL, 0 TSRMLS_CC); in SXE_METHOD()
1337 php_sxe_object *sxe; in SXE_METHOD() local
1345 sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD()
1346 if (!sxe->xpath) { in SXE_METHOD()
1347 sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr); in SXE_METHOD()
1350 if (xmlXPathRegisterNs(sxe->xpath, (xmlChar *)prefix, (xmlChar *)ns_uri) != 0) { in SXE_METHOD()
1362 php_sxe_object *sxe; in SXE_METHOD() local
1379 sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD()
1380 GET_NODE(sxe, node); in SXE_METHOD()
1381 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in SXE_METHOD()
1386 bytes = xmlSaveFile(filename, (xmlDocPtr) sxe->document->ptr); in SXE_METHOD()
1399 xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, NULL); in SXE_METHOD()
1408 sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD()
1409 GET_NODE(sxe, node); in SXE_METHOD()
1410 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in SXE_METHOD()
1414 …xmlDocDumpMemoryEnc((xmlDocPtr) sxe->document->ptr, &strval, &strval_len, ((xmlDocPtr) sxe->docume… in SXE_METHOD()
1425 …xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, ((xmlDocPtr) sxe->document->… in SXE_METHOD()
1451 static void sxe_add_namespaces(php_sxe_object *sxe, xmlNodePtr node, zend_bool recursive, zval *ret… in sxe_add_namespaces() argument
1471 sxe_add_namespaces(sxe, node, recursive, return_value TSRMLS_CC); in sxe_add_namespaces()
1483 php_sxe_object *sxe; in SXE_METHOD() local
1492 sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD()
1493 GET_NODE(sxe, node); in SXE_METHOD()
1494 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in SXE_METHOD()
1498 sxe_add_namespaces(sxe, node, recursive, return_value TSRMLS_CC); in SXE_METHOD()
1506 static void sxe_add_registered_namespaces(php_sxe_object *sxe, xmlNodePtr node, zend_bool recursive… in sxe_add_registered_namespaces() argument
1519 sxe_add_registered_namespaces(sxe, node, recursive, return_value TSRMLS_CC); in sxe_add_registered_namespaces()
1532 php_sxe_object *sxe; in SXE_METHOD() local
1539 sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD()
1541 node = xmlDocGetRootElement((xmlDocPtr)sxe->document->ptr); in SXE_METHOD()
1543 GET_NODE(sxe, node); in SXE_METHOD()
1551 sxe_add_registered_namespaces(sxe, node, recursive, return_value TSRMLS_CC); in SXE_METHOD()
1559 php_sxe_object *sxe; in SXE_METHOD() local
1569 sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD()
1571 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in SXE_METHOD()
1575 GET_NODE(sxe, node); in SXE_METHOD()
1576 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in SXE_METHOD()
1578 …_node_as_zval(sxe, node, return_value, SXE_ITER_CHILD, NULL, (xmlChar *)nsprefix, isprefix TSRMLS_… in SXE_METHOD()
1587 php_sxe_object *sxe; in SXE_METHOD() local
1591 sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD()
1593 GET_NODE(sxe, node); in SXE_METHOD()
1594 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in SXE_METHOD()
1608 php_sxe_object *sxe; in SXE_METHOD() local
1618 sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD()
1619 GET_NODE(sxe, node); in SXE_METHOD()
1621 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in SXE_METHOD()
1625 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in SXE_METHOD()
1627 …_node_as_zval(sxe, node, return_value, SXE_ITER_ATTRLIST, NULL, (xmlChar *)nsprefix, isprefix TSRM… in SXE_METHOD()
1635 php_sxe_object *sxe; in SXE_METHOD() local
1652 sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD()
1653 GET_NODE(sxe, node); in SXE_METHOD()
1655 if (sxe->iter.type == SXE_ITER_ATTRLIST) { in SXE_METHOD()
1660 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in SXE_METHOD()
1687 _node_as_zval(sxe, newnode, return_value, SXE_ITER_NONE, (char *)localname, prefix, 0 TSRMLS_CC); in SXE_METHOD()
1700 php_sxe_object *sxe; in SXE_METHOD() local
1718 sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD()
1719 GET_NODE(sxe, node); in SXE_METHOD()
1721 node = php_sxe_get_first_node(sxe, node TSRMLS_CC); in SXE_METHOD()
1806 php_sxe_object *sxe; in sxe_object_cast() local
1812 sxe = php_sxe_fetch_object(readobj TSRMLS_CC); in sxe_object_cast()
1815 node = php_sxe_get_first_node(sxe, NULL TSRMLS_CC); in sxe_object_cast()
1824 if (sxe->iter.type != SXE_ITER_NONE) { in sxe_object_cast()
1825 node = php_sxe_get_first_node(sxe, NULL TSRMLS_CC); in sxe_object_cast()
1827 contents = xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, node->children, 1); in sxe_object_cast()
1830 if (!sxe->node) { in sxe_object_cast()
1831 if (sxe->document) { in sxe_object_cast()
1832 …php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement((xmlDocPtr) sxe-… in sxe_object_cast()
1836 if (sxe->node && sxe->node->node) { in sxe_object_cast()
1837 if (sxe->node->node->children) { in sxe_object_cast()
1838 contents = xmlNodeListGetString((xmlDocPtr) sxe->document->ptr, sxe->node->node->children, 1); in sxe_object_cast()
1874 static int php_sxe_count_elements_helper(php_sxe_object *sxe, long *count TSRMLS_DC) /* {{{ */ in php_sxe_count_elements_helper() argument
1881 data = sxe->iter.data; in php_sxe_count_elements_helper()
1882 sxe->iter.data = NULL; in php_sxe_count_elements_helper()
1884 node = php_sxe_reset_iterator(sxe, 0 TSRMLS_CC); in php_sxe_count_elements_helper()
1889 node = php_sxe_iterator_fetch(sxe, node->next, 0 TSRMLS_CC); in php_sxe_count_elements_helper()
1892 if (sxe->iter.data) { in php_sxe_count_elements_helper()
1893 zval_ptr_dtor(&sxe->iter.data); in php_sxe_count_elements_helper()
1895 sxe->iter.data = data; in php_sxe_count_elements_helper()
1929 php_sxe_object *sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD() local
1935 php_sxe_count_elements_helper(sxe, &count TSRMLS_CC); in SXE_METHOD()
1990 php_sxe_object *sxe = (php_sxe_object *) object; in sxe_object_clone() local
1995 clone = php_sxe_object_new(sxe->zo.ce TSRMLS_CC); in sxe_object_clone()
1996 clone->document = sxe->document; in sxe_object_clone()
2002 clone->iter.isprefix = sxe->iter.isprefix; in sxe_object_clone()
2003 if (sxe->iter.name != NULL) { in sxe_object_clone()
2004 clone->iter.name = xmlStrdup((xmlChar *)sxe->iter.name); in sxe_object_clone()
2006 if (sxe->iter.nsprefix != NULL) { in sxe_object_clone()
2007 clone->iter.nsprefix = xmlStrdup((xmlChar *)sxe->iter.nsprefix); in sxe_object_clone()
2009 clone->iter.type = sxe->iter.type; in sxe_object_clone()
2011 if (sxe->node) { in sxe_object_clone()
2012 nodep = xmlDocCopyNode(sxe->node->node, docp, 1); in sxe_object_clone()
2027 php_sxe_object *sxe; in sxe_object_dtor() local
2029 sxe = (php_sxe_object *) object; in sxe_object_dtor()
2031 if (sxe->iter.data) { in sxe_object_dtor()
2032 zval_ptr_dtor(&sxe->iter.data); in sxe_object_dtor()
2033 sxe->iter.data = NULL; in sxe_object_dtor()
2036 if (sxe->iter.name) { in sxe_object_dtor()
2037 xmlFree(sxe->iter.name); in sxe_object_dtor()
2038 sxe->iter.name = NULL; in sxe_object_dtor()
2040 if (sxe->iter.nsprefix) { in sxe_object_dtor()
2041 xmlFree(sxe->iter.nsprefix); in sxe_object_dtor()
2042 sxe->iter.nsprefix = NULL; in sxe_object_dtor()
2044 if (sxe->tmp) { in sxe_object_dtor()
2045 zval_ptr_dtor(&sxe->tmp); in sxe_object_dtor()
2046 sxe->tmp = NULL; in sxe_object_dtor()
2055 php_sxe_object *sxe; in sxe_object_free_storage() local
2057 sxe = (php_sxe_object *) object; in sxe_object_free_storage()
2060 zend_object_std_dtor(&sxe->zo TSRMLS_CC); in sxe_object_free_storage()
2062 if (sxe->zo.guards) { in sxe_object_free_storage()
2063 zend_hash_destroy(sxe->zo.guards); in sxe_object_free_storage()
2064 FREE_HASHTABLE(sxe->zo.guards); in sxe_object_free_storage()
2067 if (sxe->zo.properties) { in sxe_object_free_storage()
2068 zend_hash_destroy(sxe->zo.properties); in sxe_object_free_storage()
2069 FREE_HASHTABLE(sxe->zo.properties); in sxe_object_free_storage()
2073 php_libxml_node_decrement_resource((php_libxml_node_object *)sxe TSRMLS_CC); in sxe_object_free_storage()
2075 if (sxe->xpath) { in sxe_object_free_storage()
2076 xmlXPathFreeContext(sxe->xpath); in sxe_object_free_storage()
2079 if (sxe->properties) { in sxe_object_free_storage()
2080 zend_hash_destroy(sxe->properties); in sxe_object_free_storage()
2081 FREE_HASHTABLE(sxe->properties); in sxe_object_free_storage()
2163 php_sxe_object *sxe; in PHP_FUNCTION() local
2186 sxe = php_sxe_object_new(ce TSRMLS_CC); in PHP_FUNCTION()
2187 sxe->iter.nsprefix = ns_len ? xmlStrdup((xmlChar *)ns) : NULL; in PHP_FUNCTION()
2188 sxe->iter.isprefix = isprefix; in PHP_FUNCTION()
2189 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp TSRMLS_CC); in PHP_FUNCTION()
2190 …php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL TSRM… in PHP_FUNCTION()
2193 return_value->value.obj = php_sxe_register_object(sxe TSRMLS_CC); in PHP_FUNCTION()
2201 php_sxe_object *sxe; in PHP_FUNCTION() local
2224 sxe = php_sxe_object_new(ce TSRMLS_CC); in PHP_FUNCTION()
2225 sxe->iter.nsprefix = ns_len ? xmlStrdup((xmlChar *)ns) : NULL; in PHP_FUNCTION()
2226 sxe->iter.isprefix = isprefix; in PHP_FUNCTION()
2227 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp TSRMLS_CC); in PHP_FUNCTION()
2228 …php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL TSRM… in PHP_FUNCTION()
2231 return_value->value.obj = php_sxe_register_object(sxe TSRMLS_CC); in PHP_FUNCTION()
2239 php_sxe_object *sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); in SXE_METHOD() local
2258 ((php_libxml_node_object *)sxe)->document = NULL; in SXE_METHOD()
2263 sxe->iter.nsprefix = ns_len ? xmlStrdup((xmlChar *)ns) : NULL; in SXE_METHOD()
2264 sxe->iter.isprefix = isprefix; in SXE_METHOD()
2265 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp TSRMLS_CC); in SXE_METHOD()
2266 …php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL TSRM… in SXE_METHOD()
2280 static xmlNodePtr php_sxe_iterator_fetch(php_sxe_object *sxe, xmlNodePtr node, int use_data TSRMLS_… in php_sxe_iterator_fetch() argument
2282 xmlChar *prefix = sxe->iter.nsprefix; in php_sxe_iterator_fetch()
2283 int isprefix = sxe->iter.isprefix; in php_sxe_iterator_fetch()
2284 int test_elem = sxe->iter.type == SXE_ITER_ELEMENT && sxe->iter.name; in php_sxe_iterator_fetch()
2285 int test_attr = sxe->iter.type == SXE_ITER_ATTRLIST && sxe->iter.name; in php_sxe_iterator_fetch()
2289 if (sxe->iter.type != SXE_ITER_ATTRLIST && node->type == XML_ELEMENT_NODE) { in php_sxe_iterator_fetch()
2290 …if ((!test_elem || !xmlStrcmp(node->name, sxe->iter.name)) && match_ns(sxe, node, prefix, isprefix… in php_sxe_iterator_fetch()
2294 …if ((!test_attr || !xmlStrcmp(node->name, sxe->iter.name)) && match_ns(sxe, node, prefix, isprefix… in php_sxe_iterator_fetch()
2303 ALLOC_INIT_ZVAL(sxe->iter.data); in php_sxe_iterator_fetch()
2304 _node_as_zval(sxe, node, sxe->iter.data, SXE_ITER_NONE, NULL, prefix, isprefix TSRMLS_CC); in php_sxe_iterator_fetch()
2311 static xmlNodePtr php_sxe_reset_iterator(php_sxe_object *sxe, int use_data TSRMLS_DC) /* {{{ */ in php_sxe_reset_iterator() argument
2315 if (sxe->iter.data) { in php_sxe_reset_iterator()
2316 zval_ptr_dtor(&sxe->iter.data); in php_sxe_reset_iterator()
2317 sxe->iter.data = NULL; in php_sxe_reset_iterator()
2320 GET_NODE(sxe, node) in php_sxe_reset_iterator()
2323 switch (sxe->iter.type) { in php_sxe_reset_iterator()
2332 return php_sxe_iterator_fetch(sxe, node, use_data TSRMLS_CC); in php_sxe_reset_iterator()
2350 iterator->sxe = php_sxe_fetch_object(object TSRMLS_CC); in php_sxe_get_iterator()
2373 return iterator->sxe->iter.data ? SUCCESS : FAILURE; in php_sxe_iterator_valid()
2381 *data = &iterator->sxe->iter.data; in php_sxe_iterator_current_data()
2388 zval *curobj = iterator->sxe->iter.data; in php_sxe_iterator_current_key()
2404 PHP_SXE_API void php_sxe_move_forward_iterator(php_sxe_object *sxe TSRMLS_DC) /* {{{ */ in php_sxe_move_forward_iterator()
2409 if (sxe->iter.data) { in php_sxe_move_forward_iterator()
2410 intern = (php_sxe_object *)zend_object_store_get_object(sxe->iter.data TSRMLS_CC); in php_sxe_move_forward_iterator()
2412 zval_ptr_dtor(&sxe->iter.data); in php_sxe_move_forward_iterator()
2413 sxe->iter.data = NULL; in php_sxe_move_forward_iterator()
2417 php_sxe_iterator_fetch(sxe, node->next, 1 TSRMLS_CC); in php_sxe_move_forward_iterator()
2425 php_sxe_move_forward_iterator(iterator->sxe TSRMLS_CC); in php_sxe_iterator_move_forward()
2431 php_sxe_object *sxe; in php_sxe_iterator_rewind() local
2434 sxe = iterator->sxe; in php_sxe_iterator_rewind()
2436 php_sxe_reset_iterator(sxe, 1 TSRMLS_CC); in php_sxe_iterator_rewind()
2442 php_sxe_object *sxe; in simplexml_export_node() local
2445 sxe = php_sxe_fetch_object(object TSRMLS_CC); in simplexml_export_node()
2446 GET_NODE(sxe, node); in simplexml_export_node()
2447 return php_sxe_get_first_node(sxe, node TSRMLS_CC); in simplexml_export_node()
2455 php_sxe_object *sxe; in PHP_FUNCTION() local
2483 sxe = php_sxe_object_new(ce TSRMLS_CC); in PHP_FUNCTION()
2484 sxe->document = object->document; in PHP_FUNCTION()
2485 php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, nodep->doc TSRMLS_CC); in PHP_FUNCTION()
2486 php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, nodep, NULL TSRMLS_CC); in PHP_FUNCTION()
2489 return_value->value.obj = php_sxe_register_object(sxe TSRMLS_CC); in PHP_FUNCTION()
2623 zend_class_entry sxe; in PHP_MINIT_FUNCTION() local
2625 INIT_CLASS_ENTRY(sxe, "SimpleXMLElement", sxe_functions); in PHP_MINIT_FUNCTION()
2626 sxe.create_object = sxe_object_new; in PHP_MINIT_FUNCTION()
2627 sxe_class_entry = zend_register_internal_class(&sxe TSRMLS_CC); in PHP_MINIT_FUNCTION()
2640 PHP_MINIT(sxe)(INIT_FUNC_ARGS_PASSTHRU); in PHP_MINIT_FUNCTION() local