23#if defined(HAVE_LIBXML) && defined(HAVE_DOM)
49 objmap_cache_release_cached_obj(objmap);
60 return nodep->children;
71 return xmlHashSize(objmap->
ht);
76 return zend_hash_num_elements(nodeht);
84 if (!php_dom_is_cache_tag_stale_from_node(&objmap->
cache_tag, nodep)) {
91 php_dom_mark_cache_tag_up_to_date_from_node(&objmap->
cache_tag, nodep);
92 reset_objmap_cache(objmap);
100 while (curnode->next !=
NULL) {
102 curnode = curnode->next;
106 xmlNodePtr basep = nodep;
107 nodep = php_dom_first_child_of_container_node(basep);
140 xmlNodePtr itemnode =
NULL;
141 bool cache_itemnode =
false;
143 if (objmap !=
NULL) {
157 xmlNodePtr nodep = basep;
173 reset_objmap_cache(objmap);
177 nodep = cached_obj_xml_node;
185 while (
count < relative_index && nodep !=
NULL) {
192 nodep = php_dom_first_child_of_container_node(basep);
196 cache_itemnode =
true;
204 if (cache_itemnode) {
214 if (php_dom_is_cache_tag_stale_from_node(&objmap->
cache_tag, itemnode)) {
215 php_dom_mark_cache_tag_up_to_date_from_node(&objmap->
cache_tag, itemnode);
216 reset_objmap_cache(objmap);
218 objmap_cache_release_cached_obj(objmap);
count(Countable|array $value, int $mode=COUNT_NORMAL)
zend_result dom_nodelist_length_read(dom_object *obj, zval *retval)
zval * dom_modern_nodelist_read_dimension(zend_object *object, zval *offset, int type, zval *rv)
dom_nodelist_dimension_index dom_modern_nodelist_get_index(const zval *offset)
@ DOM_NODELIST_DIM_STRING
@ DOM_NODELIST_DIM_ILLEGAL
zend_long php_dom_get_nodelist_length(dom_object *obj)
void php_dom_nodelist_get_item_into_zval(dom_nnodemap_object *objmap, zend_long index, zval *return_value)
int dom_modern_nodelist_has_dimension(zend_object *object, zval *member, int check_empty)
xmlEntityPtr dom_entity_reference_fetch_and_sync_declaration(xmlNodePtr reference)
xmlNode * php_dom_libxml_hash_iter(dom_nnodemap_object *objmap, int index)
xmlNode * dom_get_elements_by_tag_name_ns_raw(xmlNodePtr basep, xmlNodePtr nodep, xmlChar *ns, xmlChar *local, xmlChar *local_lower, zend_long *cur, zend_long index)
xmlNodePtr dom_nodelist_iter_start_first_child(xmlNodePtr nodep)
const XML_ENTITY_REF_NODE
zend_long cached_obj_index
php_libxml_cache_tag cache_tag
enum dom_nodelist_dimension_index_type type
PHP_DOM_EXPORT xmlNodePtr dom_object_get_node(dom_object *obj)
struct _dom_object dom_object
#define DOM_RET_OBJ(obj, domobject)
ZEND_API ZEND_COLD void zend_throw_error(zend_class_entry *exception_ce, const char *format,...)
ZEND_API ZEND_COLD void zend_illegal_container_offset(const zend_string *container, const zval *offset, int type)
#define ZEND_PARSE_PARAMETERS_END()
#define ZEND_PARSE_PARAMETERS_NONE()
#define ZEND_PARSE_PARAMETERS_START(min_num_args, max_num_args)
#define Z_PARAM_LONG(dest)
#define ZEND_METHOD(classname, name)
ZEND_API zval *ZEND_FASTCALL zend_hash_index_find(const HashTable *ht, zend_ulong h)
#define ZEND_HANDLE_NUMERIC(key, idx)
ZEND_API zend_result zend_create_internal_iterator_zval(zval *return_value, zval *obj)
ZEND_API void ZEND_FASTCALL zend_objects_store_del(zend_object *object)
#define ZEND_IGNORE_VALUE(x)
#define zend_always_inline
#define ZEND_UNREACHABLE()
#define UNEXPECTED(condition)
struct _zend_object zend_object
struct _zend_array HashTable
ZEND_RESULT_CODE zend_result