Lines Matching refs:ht

50 #define HT_FLAGS(ht) (ht)->u.flags  argument
52 #define HT_INVALIDATE(ht) do { \ argument
53 HT_FLAGS(ht) = HASH_FLAG_UNINITIALIZED; \
56 #define HT_IS_INITIALIZED(ht) \ argument
57 ((HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED) == 0)
59 #define HT_IS_PACKED(ht) \ argument
60 ((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)
62 #define HT_IS_WITHOUT_HOLES(ht) \ argument
63 ((ht)->nNumUsed == (ht)->nNumOfElements)
65 #define HT_HAS_STATIC_KEYS_ONLY(ht) \ argument
66 ((HT_FLAGS(ht) & (HASH_FLAG_PACKED|HASH_FLAG_STATIC_KEYS)) != 0)
69 # define HT_ALLOW_COW_VIOLATION(ht) HT_FLAGS(ht) |= HASH_FLAG_ALLOW_COW_VIOLATION argument
71 # define HT_ALLOW_COW_VIOLATION(ht) argument
74 #define HT_ITERATORS_COUNT(ht) (ht)->u.v.nIteratorsCount argument
75 #define HT_ITERATORS_OVERFLOW(ht) (HT_ITERATORS_COUNT(ht) == 0xff) argument
76 #define HT_HAS_ITERATORS(ht) (HT_ITERATORS_COUNT(ht) != 0) argument
78 #define HT_SET_ITERATORS_COUNT(ht, iters) \ argument
79 do { HT_ITERATORS_COUNT(ht) = (iters); } while (0)
80 #define HT_INC_ITERATORS_COUNT(ht) \ argument
81 HT_SET_ITERATORS_COUNT(ht, HT_ITERATORS_COUNT(ht) + 1)
82 #define HT_DEC_ITERATORS_COUNT(ht) \ argument
83 HT_SET_ITERATORS_COUNT(ht, HT_ITERATORS_COUNT(ht) - 1)
104 ZEND_API void ZEND_FASTCALL _zend_hash_init(HashTable *ht, uint32_t nSize, dtor_func_t pDestructor,…
105 ZEND_API void ZEND_FASTCALL zend_hash_destroy(HashTable *ht);
106 ZEND_API void ZEND_FASTCALL zend_hash_clean(HashTable *ht);
108 #define zend_hash_init(ht, nSize, pHashFunction, pDestructor, persistent) \ argument
109 _zend_hash_init((ht), (nSize), (pDestructor), (persistent))
111 ZEND_API void ZEND_FASTCALL zend_hash_real_init(HashTable *ht, bool packed);
112 ZEND_API void ZEND_FASTCALL zend_hash_real_init_packed(HashTable *ht);
113 ZEND_API void ZEND_FASTCALL zend_hash_real_init_mixed(HashTable *ht);
114 ZEND_API void ZEND_FASTCALL zend_hash_packed_to_hash(HashTable *ht);
115 ZEND_API void ZEND_FASTCALL zend_hash_to_packed(HashTable *ht);
116 ZEND_API void ZEND_FASTCALL zend_hash_extend(HashTable *ht, uint32_t nSize, bool packed);
117 ZEND_API void ZEND_FASTCALL zend_hash_discard(HashTable *ht, uint32_t nNumUsed);
118 ZEND_API void ZEND_FASTCALL zend_hash_packed_grow(HashTable *ht);
121 ZEND_API zval* ZEND_FASTCALL zend_hash_add_or_update(HashTable *ht, zend_string *key, zval *pData, …
122 ZEND_API zval* ZEND_FASTCALL zend_hash_update(HashTable *ht, zend_string *key,zval *pData);
123 ZEND_API zval* ZEND_FASTCALL zend_hash_update_ind(HashTable *ht, zend_string *key,zval *pData);
124 ZEND_API zval* ZEND_FASTCALL zend_hash_add(HashTable *ht, zend_string *key,zval *pData);
125 ZEND_API zval* ZEND_FASTCALL zend_hash_add_new(HashTable *ht, zend_string *key,zval *pData);
127 ZEND_API zval* ZEND_FASTCALL zend_hash_str_add_or_update(HashTable *ht, const char *key, size_t len…
128 ZEND_API zval* ZEND_FASTCALL zend_hash_str_update(HashTable *ht, const char *key, size_t len, zval …
129 ZEND_API zval* ZEND_FASTCALL zend_hash_str_update_ind(HashTable *ht, const char *key, size_t len, z…
130 ZEND_API zval* ZEND_FASTCALL zend_hash_str_add(HashTable *ht, const char *key, size_t len, zval *pD…
131 ZEND_API zval* ZEND_FASTCALL zend_hash_str_add_new(HashTable *ht, const char *key, size_t len, zval…
133 ZEND_API zval* ZEND_FASTCALL zend_hash_index_add_or_update(HashTable *ht, zend_ulong h, zval *pData…
134 ZEND_API zval* ZEND_FASTCALL zend_hash_index_add(HashTable *ht, zend_ulong h, zval *pData);
135 ZEND_API zval* ZEND_FASTCALL zend_hash_index_add_new(HashTable *ht, zend_ulong h, zval *pData);
136 ZEND_API zval* ZEND_FASTCALL zend_hash_index_update(HashTable *ht, zend_ulong h, zval *pData);
137 ZEND_API zval* ZEND_FASTCALL zend_hash_next_index_insert(HashTable *ht, zval *pData);
138 ZEND_API zval* ZEND_FASTCALL zend_hash_next_index_insert_new(HashTable *ht, zval *pData);
140 ZEND_API zval* ZEND_FASTCALL zend_hash_index_add_empty_element(HashTable *ht, zend_ulong h);
141 ZEND_API zval* ZEND_FASTCALL zend_hash_add_empty_element(HashTable *ht, zend_string *key);
142 ZEND_API zval* ZEND_FASTCALL zend_hash_str_add_empty_element(HashTable *ht, const char *key, size_t…
144 ZEND_API zval* ZEND_FASTCALL zend_hash_set_bucket_key(HashTable *ht, Bucket *p, zend_string *key);
154 ZEND_API void ZEND_FASTCALL zend_hash_graceful_destroy(HashTable *ht);
155 ZEND_API void ZEND_FASTCALL zend_hash_graceful_reverse_destroy(HashTable *ht);
156 ZEND_API void ZEND_FASTCALL zend_hash_apply(HashTable *ht, apply_func_t apply_func);
157 ZEND_API void ZEND_FASTCALL zend_hash_apply_with_argument(HashTable *ht, apply_func_arg_t apply_fun…
158 ZEND_API void zend_hash_apply_with_arguments(HashTable *ht, apply_func_args_t apply_func, int, ...);
166 ZEND_API void ZEND_FASTCALL zend_hash_reverse_apply(HashTable *ht, apply_func_t apply_func);
170 ZEND_API zend_result ZEND_FASTCALL zend_hash_del(HashTable *ht, zend_string *key);
171 ZEND_API zend_result ZEND_FASTCALL zend_hash_del_ind(HashTable *ht, zend_string *key);
172 ZEND_API zend_result ZEND_FASTCALL zend_hash_str_del(HashTable *ht, const char *key, size_t len);
173 ZEND_API zend_result ZEND_FASTCALL zend_hash_str_del_ind(HashTable *ht, const char *key, size_t len…
174 ZEND_API zend_result ZEND_FASTCALL zend_hash_index_del(HashTable *ht, zend_ulong h);
175 ZEND_API void ZEND_FASTCALL zend_hash_del_bucket(HashTable *ht, Bucket *p);
176 ZEND_API void ZEND_FASTCALL zend_hash_packed_del_val(HashTable *ht, zval *zv);
179 ZEND_API zval* ZEND_FASTCALL zend_hash_find(const HashTable *ht, zend_string *key);
180 ZEND_API zval* ZEND_FASTCALL zend_hash_str_find(const HashTable *ht, const char *key, size_t len);
181 ZEND_API zval* ZEND_FASTCALL zend_hash_index_find(const HashTable *ht, zend_ulong h);
182 ZEND_API zval* ZEND_FASTCALL _zend_hash_index_find(const HashTable *ht, zend_ulong h);
185 ZEND_API zval* ZEND_FASTCALL zend_hash_find_known_hash(const HashTable *ht, const zend_string *key);
187 static zend_always_inline zval *zend_hash_find_ex(const HashTable *ht, zend_string *key, bool known… in zend_hash_find_ex() argument
190 return zend_hash_find_known_hash(ht, key); in zend_hash_find_ex()
192 return zend_hash_find(ht, key); in zend_hash_find_ex()
216 ZEND_API zval* ZEND_FASTCALL zend_hash_lookup(HashTable *ht, zend_string *key);
217 ZEND_API zval* ZEND_FASTCALL zend_hash_index_lookup(HashTable *ht, zend_ulong h);
232 static zend_always_inline bool zend_hash_exists(const HashTable *ht, zend_string *key) in zend_hash_exists() argument
234 return zend_hash_find(ht, key) != NULL; in zend_hash_exists()
237 static zend_always_inline bool zend_hash_str_exists(const HashTable *ht, const char *str, size_t le… in zend_hash_str_exists() argument
239 return zend_hash_str_find(ht, str, len) != NULL; in zend_hash_str_exists()
242 static zend_always_inline bool zend_hash_index_exists(const HashTable *ht, zend_ulong h) in zend_hash_index_exists() argument
244 return zend_hash_index_find(ht, h) != NULL; in zend_hash_index_exists()
248 ZEND_API HashPosition ZEND_FASTCALL zend_hash_get_current_pos(const HashTable *ht);
250 ZEND_API zend_result ZEND_FASTCALL zend_hash_move_forward_ex(HashTable *ht, HashPosition *pos);
251 ZEND_API zend_result ZEND_FASTCALL zend_hash_move_backwards_ex(HashTable *ht, HashPosition *pos);
252 ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zend_string **str_in…
253 ZEND_API void ZEND_FASTCALL zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, cons…
254 ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_type_ex(HashTable *ht, HashPosition *pos);
255 ZEND_API zval* ZEND_FASTCALL zend_hash_get_current_data_ex(HashTable *ht, HashPosition *pos);
256 ZEND_API void ZEND_FASTCALL zend_hash_internal_pointer_reset_ex(HashTable *ht, HashPosition *pos);
257 ZEND_API void ZEND_FASTCALL zend_hash_internal_pointer_end_ex(HashTable *ht, HashPosition *pos);
259 static zend_always_inline zend_result zend_hash_has_more_elements_ex(HashTable *ht, HashPosition *p… in zend_hash_has_more_elements_ex() argument
260 return (zend_hash_get_current_key_type_ex(ht, pos) == HASH_KEY_NON_EXISTENT ? FAILURE : SUCCESS); in zend_hash_has_more_elements_ex()
262 static zend_always_inline zend_result zend_hash_has_more_elements(HashTable *ht) { in zend_hash_has_more_elements() argument
263 return zend_hash_has_more_elements_ex(ht, &ht->nInternalPointer); in zend_hash_has_more_elements()
265 static zend_always_inline zend_result zend_hash_move_forward(HashTable *ht) { in zend_hash_move_forward() argument
266 return zend_hash_move_forward_ex(ht, &ht->nInternalPointer); in zend_hash_move_forward()
268 static zend_always_inline zend_result zend_hash_move_backwards(HashTable *ht) { in zend_hash_move_backwards() argument
269 return zend_hash_move_backwards_ex(ht, &ht->nInternalPointer); in zend_hash_move_backwards()
271 static zend_always_inline int zend_hash_get_current_key(const HashTable *ht, zend_string **str_inde… in zend_hash_get_current_key() argument
272 return zend_hash_get_current_key_ex(ht, str_index, num_index, &ht->nInternalPointer); in zend_hash_get_current_key()
274 static zend_always_inline void zend_hash_get_current_key_zval(const HashTable *ht, zval *key) { in zend_hash_get_current_key_zval() argument
275 zend_hash_get_current_key_zval_ex(ht, key, &ht->nInternalPointer); in zend_hash_get_current_key_zval()
277 static zend_always_inline int zend_hash_get_current_key_type(HashTable *ht) { in zend_hash_get_current_key_type() argument
278 return zend_hash_get_current_key_type_ex(ht, &ht->nInternalPointer); in zend_hash_get_current_key_type()
280 static zend_always_inline zval* zend_hash_get_current_data(HashTable *ht) { in zend_hash_get_current_data() argument
281 return zend_hash_get_current_data_ex(ht, &ht->nInternalPointer); in zend_hash_get_current_data()
283 static zend_always_inline void zend_hash_internal_pointer_reset(HashTable *ht) { in zend_hash_internal_pointer_reset() argument
284 zend_hash_internal_pointer_reset_ex(ht, &ht->nInternalPointer); in zend_hash_internal_pointer_reset()
286 static zend_always_inline void zend_hash_internal_pointer_end(HashTable *ht) { in zend_hash_internal_pointer_end() argument
287 zend_hash_internal_pointer_end_ex(ht, &ht->nInternalPointer); in zend_hash_internal_pointer_end()
300 ZEND_API void ZEND_FASTCALL zend_hash_sort_ex(HashTable *ht, sort_func_t sort_func, bucket_compare…
301 ZEND_API zval* ZEND_FASTCALL zend_hash_minmax(const HashTable *ht, compare_func_t compar, uint32_t …
303 static zend_always_inline void ZEND_FASTCALL zend_hash_sort(HashTable *ht, bucket_compare_func_t co… in zend_hash_sort() argument
304 zend_hash_sort_ex(ht, zend_sort, compare_func, renumber); in zend_hash_sort()
307 static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) { in zend_hash_num_elements() argument
308 return ht->nNumOfElements; in zend_hash_num_elements()
311 static zend_always_inline zend_long zend_hash_next_free_element(const HashTable *ht) { in zend_hash_next_free_element() argument
312 return ht->nNextFreeElement; in zend_hash_next_free_element()
315 ZEND_API void ZEND_FASTCALL zend_hash_rehash(HashTable *ht);
336 ZEND_API uint32_t zend_array_count(HashTable *ht);
338 ZEND_API void ZEND_FASTCALL zend_array_destroy(HashTable *ht);
340 ZEND_API void ZEND_FASTCALL zend_symtable_clean(HashTable *ht);
341 ZEND_API HashTable* ZEND_FASTCALL zend_symtable_to_proptable(HashTable *ht);
342 ZEND_API HashTable* ZEND_FASTCALL zend_proptable_to_symtable(HashTable *ht, bool always_duplicate);
346 ZEND_API uint32_t ZEND_FASTCALL zend_hash_iterator_add(HashTable *ht, HashPosition pos);
347 ZEND_API HashPosition ZEND_FASTCALL zend_hash_iterator_pos(uint32_t idx, HashTable *ht);
350 ZEND_API HashPosition ZEND_FASTCALL zend_hash_iterators_lower_pos(HashTable *ht, HashPosition start…
351 ZEND_API void ZEND_FASTCALL _zend_hash_iterators_update(HashTable *ht, HashPosition from, H…
352 ZEND_API void ZEND_FASTCALL zend_hash_iterators_advance(HashTable *ht, HashPosition step);
354 static zend_always_inline void zend_hash_iterators_update(HashTable *ht, HashPosition from, HashPos… in zend_hash_iterators_update() argument
356 if (UNEXPECTED(HT_HAS_ITERATORS(ht))) { in zend_hash_iterators_update()
357 _zend_hash_iterators_update(ht, from, to); in zend_hash_iterators_update()
384 #define ZEND_INIT_SYMTABLE(ht) \ in END_EXTERN_C() argument
385 ZEND_INIT_SYMTABLE_EX(ht, 8, 0) in END_EXTERN_C()
387 #define ZEND_INIT_SYMTABLE_EX(ht, n, persistent) \ in END_EXTERN_C() argument
388 zend_hash_init(ht, n, NULL, ZVAL_PTR_DTOR, persistent) in END_EXTERN_C()
415 static zend_always_inline zval *zend_hash_find_ind(const HashTable *ht, zend_string *key) in zend_hash_find_ind() argument
419 zv = zend_hash_find(ht, key); in zend_hash_find_ind()
425 static zend_always_inline zval *zend_hash_find_ex_ind(const HashTable *ht, zend_string *key, bool k… in zend_hash_find_ex_ind() argument
429 zv = zend_hash_find_ex(ht, key, known_hash); in zend_hash_find_ex_ind()
435 static zend_always_inline bool zend_hash_exists_ind(const HashTable *ht, zend_string *key) in zend_hash_exists_ind() argument
439 zv = zend_hash_find(ht, key); in zend_hash_exists_ind()
445 static zend_always_inline zval *zend_hash_str_find_ind(const HashTable *ht, const char *str, size_t… in zend_hash_str_find_ind() argument
449 zv = zend_hash_str_find(ht, str, len); in zend_hash_str_find_ind()
455 static zend_always_inline bool zend_hash_str_exists_ind(const HashTable *ht, const char *str, size_… in zend_hash_str_exists_ind() argument
459 zv = zend_hash_str_find(ht, str, len); in zend_hash_str_exists_ind()
464 static zend_always_inline zval *zend_symtable_add_new(HashTable *ht, zend_string *key, zval *pData) in zend_symtable_add_new() argument
469 return zend_hash_index_add_new(ht, idx, pData); in zend_symtable_add_new()
471 return zend_hash_add_new(ht, key, pData); in zend_symtable_add_new()
475 static zend_always_inline zval *zend_symtable_update(HashTable *ht, zend_string *key, zval *pData) in zend_symtable_update() argument
480 return zend_hash_index_update(ht, idx, pData); in zend_symtable_update()
482 return zend_hash_update(ht, key, pData); in zend_symtable_update()
487 static zend_always_inline zval *zend_symtable_update_ind(HashTable *ht, zend_string *key, zval *pDa… in zend_symtable_update_ind() argument
492 return zend_hash_index_update(ht, idx, pData); in zend_symtable_update_ind()
494 return zend_hash_update_ind(ht, key, pData); in zend_symtable_update_ind()
499 static zend_always_inline zend_result zend_symtable_del(HashTable *ht, zend_string *key) in zend_symtable_del() argument
504 return zend_hash_index_del(ht, idx); in zend_symtable_del()
506 return zend_hash_del(ht, key); in zend_symtable_del()
511 static zend_always_inline zend_result zend_symtable_del_ind(HashTable *ht, zend_string *key) in zend_symtable_del_ind() argument
516 return zend_hash_index_del(ht, idx); in zend_symtable_del_ind()
518 return zend_hash_del_ind(ht, key); in zend_symtable_del_ind()
523 static zend_always_inline zval *zend_symtable_find(const HashTable *ht, zend_string *key) in zend_symtable_find() argument
528 return zend_hash_index_find(ht, idx); in zend_symtable_find()
530 return zend_hash_find(ht, key); in zend_symtable_find()
535 static zend_always_inline zval *zend_symtable_find_ind(const HashTable *ht, zend_string *key) in zend_symtable_find_ind() argument
540 return zend_hash_index_find(ht, idx); in zend_symtable_find_ind()
542 return zend_hash_find_ind(ht, key); in zend_symtable_find_ind()
547 static zend_always_inline bool zend_symtable_exists(HashTable *ht, zend_string *key) in zend_symtable_exists() argument
552 return zend_hash_index_exists(ht, idx); in zend_symtable_exists()
554 return zend_hash_exists(ht, key); in zend_symtable_exists()
559 static zend_always_inline bool zend_symtable_exists_ind(HashTable *ht, zend_string *key) in zend_symtable_exists_ind() argument
564 return zend_hash_index_exists(ht, idx); in zend_symtable_exists_ind()
566 return zend_hash_exists_ind(ht, key); in zend_symtable_exists_ind()
571 static zend_always_inline zval *zend_symtable_str_update(HashTable *ht, const char *str, size_t len… in zend_symtable_str_update() argument
576 return zend_hash_index_update(ht, idx, pData); in zend_symtable_str_update()
578 return zend_hash_str_update(ht, str, len, pData); in zend_symtable_str_update()
583 static zend_always_inline zval *zend_symtable_str_update_ind(HashTable *ht, const char *str, size_t… in zend_symtable_str_update_ind() argument
588 return zend_hash_index_update(ht, idx, pData); in zend_symtable_str_update_ind()
590 return zend_hash_str_update_ind(ht, str, len, pData); in zend_symtable_str_update_ind()
595 static zend_always_inline zend_result zend_symtable_str_del(HashTable *ht, const char *str, size_t … in zend_symtable_str_del() argument
600 return zend_hash_index_del(ht, idx); in zend_symtable_str_del()
602 return zend_hash_str_del(ht, str, len); in zend_symtable_str_del()
607 static zend_always_inline zend_result zend_symtable_str_del_ind(HashTable *ht, const char *str, siz… in zend_symtable_str_del_ind() argument
612 return zend_hash_index_del(ht, idx); in zend_symtable_str_del_ind()
614 return zend_hash_str_del_ind(ht, str, len); in zend_symtable_str_del_ind()
619 static zend_always_inline zval *zend_symtable_str_find(HashTable *ht, const char *str, size_t len) in zend_symtable_str_find() argument
624 return zend_hash_index_find(ht, idx); in zend_symtable_str_find()
626 return zend_hash_str_find(ht, str, len); in zend_symtable_str_find()
631 static zend_always_inline bool zend_symtable_str_exists(HashTable *ht, const char *str, size_t len) in zend_symtable_str_exists() argument
636 return zend_hash_index_exists(ht, idx); in zend_symtable_str_exists()
638 return zend_hash_str_exists(ht, str, len); in zend_symtable_str_exists()
642 static zend_always_inline void *zend_hash_add_ptr(HashTable *ht, zend_string *key, void *pData) in zend_hash_add_ptr() argument
647 zv = zend_hash_add(ht, key, &tmp); in zend_hash_add_ptr()
656 static zend_always_inline void *zend_hash_add_new_ptr(HashTable *ht, zend_string *key, void *pData) in zend_hash_add_new_ptr() argument
661 zv = zend_hash_add_new(ht, key, &tmp); in zend_hash_add_new_ptr()
670 static zend_always_inline void *zend_hash_str_add_ptr(HashTable *ht, const char *str, size_t len, v… in zend_hash_str_add_ptr() argument
675 zv = zend_hash_str_add(ht, str, len, &tmp); in zend_hash_str_add_ptr()
684 static zend_always_inline void *zend_hash_str_add_new_ptr(HashTable *ht, const char *str, size_t le… in zend_hash_str_add_new_ptr() argument
689 zv = zend_hash_str_add_new(ht, str, len, &tmp); in zend_hash_str_add_new_ptr()
698 static zend_always_inline void *zend_hash_update_ptr(HashTable *ht, zend_string *key, void *pData) in zend_hash_update_ptr() argument
703 zv = zend_hash_update(ht, key, &tmp); in zend_hash_update_ptr()
708 static zend_always_inline void *zend_hash_str_update_ptr(HashTable *ht, const char *str, size_t len… in zend_hash_str_update_ptr() argument
713 zv = zend_hash_str_update(ht, str, len, &tmp); in zend_hash_str_update_ptr()
718 static zend_always_inline void *zend_hash_add_mem(HashTable *ht, zend_string *key, void *pData, siz… in zend_hash_add_mem() argument
723 if ((zv = zend_hash_add(ht, key, &tmp))) { in zend_hash_add_mem()
724 Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); in zend_hash_add_mem()
731 static zend_always_inline void *zend_hash_add_new_mem(HashTable *ht, zend_string *key, void *pData,… in zend_hash_add_new_mem() argument
736 if ((zv = zend_hash_add_new(ht, key, &tmp))) { in zend_hash_add_new_mem()
737 Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); in zend_hash_add_new_mem()
744 static zend_always_inline void *zend_hash_str_add_mem(HashTable *ht, const char *str, size_t len, v… in zend_hash_str_add_mem() argument
749 if ((zv = zend_hash_str_add(ht, str, len, &tmp))) { in zend_hash_str_add_mem()
750 Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); in zend_hash_str_add_mem()
757 static zend_always_inline void *zend_hash_str_add_new_mem(HashTable *ht, const char *str, size_t le… in zend_hash_str_add_new_mem() argument
762 if ((zv = zend_hash_str_add_new(ht, str, len, &tmp))) { in zend_hash_str_add_new_mem()
763 Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); in zend_hash_str_add_new_mem()
770 static zend_always_inline void *zend_hash_update_mem(HashTable *ht, zend_string *key, void *pData, … in zend_hash_update_mem() argument
774 p = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); in zend_hash_update_mem()
776 return zend_hash_update_ptr(ht, key, p); in zend_hash_update_mem()
779 static zend_always_inline void *zend_hash_str_update_mem(HashTable *ht, const char *str, size_t len… in zend_hash_str_update_mem() argument
783 p = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); in zend_hash_str_update_mem()
785 return zend_hash_str_update_ptr(ht, str, len, p); in zend_hash_str_update_mem()
788 static zend_always_inline void *zend_hash_index_add_ptr(HashTable *ht, zend_ulong h, void *pData) in zend_hash_index_add_ptr() argument
793 zv = zend_hash_index_add(ht, h, &tmp); in zend_hash_index_add_ptr()
797 static zend_always_inline void *zend_hash_index_add_new_ptr(HashTable *ht, zend_ulong h, void *pDat… in zend_hash_index_add_new_ptr() argument
802 zv = zend_hash_index_add_new(ht, h, &tmp); in zend_hash_index_add_new_ptr()
806 static zend_always_inline void *zend_hash_index_update_ptr(HashTable *ht, zend_ulong h, void *pData) in zend_hash_index_update_ptr() argument
811 zv = zend_hash_index_update(ht, h, &tmp); in zend_hash_index_update_ptr()
816 static zend_always_inline void *zend_hash_index_add_mem(HashTable *ht, zend_ulong h, void *pData, s… in zend_hash_index_add_mem() argument
821 if ((zv = zend_hash_index_add(ht, h, &tmp))) { in zend_hash_index_add_mem()
822 Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); in zend_hash_index_add_mem()
829 static zend_always_inline void *zend_hash_next_index_insert_ptr(HashTable *ht, void *pData) in zend_hash_next_index_insert_ptr() argument
834 zv = zend_hash_next_index_insert(ht, &tmp); in zend_hash_next_index_insert_ptr()
843 static zend_always_inline void *zend_hash_index_update_mem(HashTable *ht, zend_ulong h, void *pData… in zend_hash_index_update_mem() argument
847 p = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); in zend_hash_index_update_mem()
849 return zend_hash_index_update_ptr(ht, h, p); in zend_hash_index_update_mem()
852 static zend_always_inline void *zend_hash_next_index_insert_mem(HashTable *ht, void *pData, size_t … in zend_hash_next_index_insert_mem() argument
857 if ((zv = zend_hash_next_index_insert(ht, &tmp))) { in zend_hash_next_index_insert_mem()
858 Z_PTR_P(zv) = pemalloc(size, GC_FLAGS(ht) & IS_ARRAY_PERSISTENT); in zend_hash_next_index_insert_mem()
865 static zend_always_inline void *zend_hash_find_ptr(const HashTable *ht, zend_string *key) in zend_hash_find_ptr() argument
869 zv = zend_hash_find(ht, key); in zend_hash_find_ptr()
878 static zend_always_inline void *zend_hash_find_ex_ptr(const HashTable *ht, zend_string *key, bool k… in zend_hash_find_ex_ptr() argument
882 zv = zend_hash_find_ex(ht, key, known_hash); in zend_hash_find_ex_ptr()
891 static zend_always_inline void *zend_hash_str_find_ptr(const HashTable *ht, const char *str, size_t… in zend_hash_str_find_ptr() argument
895 zv = zend_hash_str_find(ht, str, len); in zend_hash_str_find_ptr()
906 ZEND_API void *zend_hash_str_find_ptr_lc(const HashTable *ht, const char *str, size_t len);
910 ZEND_API void *zend_hash_find_ptr_lc(const HashTable *ht, zend_string *key);
912 static zend_always_inline void *zend_hash_index_find_ptr(const HashTable *ht, zend_ulong h) in zend_hash_index_find_ptr() argument
916 zv = zend_hash_index_find(ht, h); in zend_hash_index_find_ptr()
925 static zend_always_inline zval *zend_hash_index_find_deref(HashTable *ht, zend_ulong h) in zend_hash_index_find_deref() argument
927 zval *zv = zend_hash_index_find(ht, h); in zend_hash_index_find_deref()
934 static zend_always_inline zval *zend_hash_find_deref(HashTable *ht, zend_string *str) in zend_hash_find_deref() argument
936 zval *zv = zend_hash_find(ht, str); in zend_hash_find_deref()
943 static zend_always_inline zval *zend_hash_str_find_deref(HashTable *ht, const char *str, size_t len) in zend_hash_str_find_deref() argument
945 zval *zv = zend_hash_str_find(ht, str, len); in zend_hash_str_find_deref()
952 static zend_always_inline void *zend_symtable_str_find_ptr(HashTable *ht, const char *str, size_t l… in zend_symtable_str_find_ptr() argument
957 return zend_hash_index_find_ptr(ht, idx); in zend_symtable_str_find_ptr()
959 return zend_hash_str_find_ptr(ht, str, len); in zend_symtable_str_find_ptr()
963 static zend_always_inline void *zend_hash_get_current_data_ptr_ex(HashTable *ht, HashPosition *pos) in zend_hash_get_current_data_ptr_ex() argument
967 zv = zend_hash_get_current_data_ex(ht, pos); in zend_hash_get_current_data_ptr_ex()
976 #define zend_hash_get_current_data_ptr(ht) \ argument
977 zend_hash_get_current_data_ptr_ex(ht, &(ht)->nInternalPointer)
1079 #define ZEND_HASH_FOREACH_BUCKET(ht, _bucket) \ argument
1080 ZEND_HASH_MAP_FOREACH_BUCKET(ht, _bucket)
1082 #define ZEND_HASH_FOREACH_BUCKET_FROM(ht, _bucket, _from) \ argument
1083 ZEND_HASH_MAP_FOREACH_BUCKET_FROM(ht, _bucket, _from)
1085 #define ZEND_HASH_REVERSE_FOREACH_BUCKET(ht, _bucket) \ argument
1086 ZEND_HASH_MAP_REVERSE_FOREACH_BUCKET(ht, _bucket)
1088 #define ZEND_HASH_FOREACH_VAL(ht, _val) \ argument
1089 _ZEND_HASH_FOREACH_VAL(ht); \
1092 #define ZEND_HASH_REVERSE_FOREACH_VAL(ht, _val) \ argument
1093 _ZEND_HASH_REVERSE_FOREACH_VAL(ht); \
1096 #define ZEND_HASH_FOREACH_VAL_IND(ht, _val) \ argument
1097 ZEND_HASH_FOREACH(ht, 1); \
1100 #define ZEND_HASH_REVERSE_FOREACH_VAL_IND(ht, _val) \ argument
1101 ZEND_HASH_REVERSE_FOREACH(ht, 1); \
1104 #define ZEND_HASH_FOREACH_PTR(ht, _ptr) \ argument
1105 _ZEND_HASH_FOREACH_VAL(ht); \
1108 #define ZEND_HASH_FOREACH_PTR_FROM(ht, _ptr, _from) \ argument
1109 ZEND_HASH_FOREACH_FROM(ht, 0, _from); \
1112 #define ZEND_HASH_REVERSE_FOREACH_PTR(ht, _ptr) \ argument
1113 _ZEND_HASH_REVERSE_FOREACH_VAL(ht); \
1116 #define ZEND_HASH_FOREACH_NUM_KEY(ht, _h) \ argument
1117 ZEND_HASH_FOREACH(ht, 0); \
1120 #define ZEND_HASH_REVERSE_FOREACH_NUM_KEY(ht, _h) \ argument
1121 ZEND_HASH_REVERSE_FOREACH(ht, 0); \
1124 #define ZEND_HASH_FOREACH_STR_KEY(ht, _key) \ argument
1125 ZEND_HASH_FOREACH(ht, 0); \
1128 #define ZEND_HASH_REVERSE_FOREACH_STR_KEY(ht, _key) \ argument
1129 ZEND_HASH_REVERSE_FOREACH(ht, 0); \
1132 #define ZEND_HASH_FOREACH_KEY(ht, _h, _key) \ argument
1133 ZEND_HASH_FOREACH(ht, 0); \
1137 #define ZEND_HASH_REVERSE_FOREACH_KEY(ht, _h, _key) \ argument
1138 ZEND_HASH_REVERSE_FOREACH(ht, 0); \
1142 #define ZEND_HASH_FOREACH_NUM_KEY_VAL(ht, _h, _val) \ argument
1143 ZEND_HASH_FOREACH(ht, 0); \
1147 #define ZEND_HASH_REVERSE_FOREACH_NUM_KEY_VAL(ht, _h, _val) \ argument
1148 ZEND_HASH_REVERSE_FOREACH(ht, 0); \
1152 #define ZEND_HASH_FOREACH_STR_KEY_VAL(ht, _key, _val) \ argument
1153 ZEND_HASH_FOREACH(ht, 0); \
1157 #define ZEND_HASH_FOREACH_STR_KEY_VAL_FROM(ht, _key, _val, _from) \ argument
1158 ZEND_HASH_FOREACH_FROM(ht, 0, _from); \
1162 #define ZEND_HASH_REVERSE_FOREACH_STR_KEY_VAL(ht, _key, _val) \ argument
1163 ZEND_HASH_REVERSE_FOREACH(ht, 0); \
1167 #define ZEND_HASH_FOREACH_KEY_VAL(ht, _h, _key, _val) \ argument
1168 ZEND_HASH_FOREACH(ht, 0); \
1173 #define ZEND_HASH_REVERSE_FOREACH_KEY_VAL(ht, _h, _key, _val) \ argument
1174 ZEND_HASH_REVERSE_FOREACH(ht, 0); \
1179 #define ZEND_HASH_FOREACH_STR_KEY_VAL_IND(ht, _key, _val) \ argument
1180 ZEND_HASH_FOREACH(ht, 1); \
1184 #define ZEND_HASH_REVERSE_FOREACH_STR_KEY_VAL_IND(ht, _key, _val) \ argument
1185 ZEND_HASH_REVERSE_FOREACH(ht, 1); \
1189 #define ZEND_HASH_FOREACH_KEY_VAL_IND(ht, _h, _key, _val) \ argument
1190 ZEND_HASH_FOREACH(ht, 1); \
1195 #define ZEND_HASH_REVERSE_FOREACH_KEY_VAL_IND(ht, _h, _key, _val) \ argument
1196 ZEND_HASH_REVERSE_FOREACH(ht, 1); \
1201 #define ZEND_HASH_FOREACH_NUM_KEY_PTR(ht, _h, _ptr) \ argument
1202 ZEND_HASH_FOREACH(ht, 0); \
1206 #define ZEND_HASH_REVERSE_FOREACH_NUM_KEY_PTR(ht, _h, _ptr) \ argument
1207 ZEND_HASH_REVERSE_FOREACH(ht, 0); \
1211 #define ZEND_HASH_FOREACH_STR_KEY_PTR(ht, _key, _ptr) \ argument
1212 ZEND_HASH_FOREACH(ht, 0); \
1216 #define ZEND_HASH_REVERSE_FOREACH_STR_KEY_PTR(ht, _key, _ptr) \ argument
1217 ZEND_HASH_REVERSE_FOREACH(ht, 0); \
1221 #define ZEND_HASH_FOREACH_KEY_PTR(ht, _h, _key, _ptr) \ argument
1222 ZEND_HASH_FOREACH(ht, 0); \
1227 #define ZEND_HASH_REVERSE_FOREACH_KEY_PTR(ht, _h, _key, _ptr) \ argument
1228 ZEND_HASH_REVERSE_FOREACH(ht, 0); \
1284 #define ZEND_HASH_MAP_FOREACH_BUCKET(ht, _bucket) \ argument
1285 ZEND_HASH_MAP_FOREACH(ht, 0); \
1288 #define ZEND_HASH_MAP_FOREACH_BUCKET_FROM(ht, _bucket, _from) \ argument
1289 ZEND_HASH_MAP_FOREACH_FROM(ht, 0, _from); \
1292 #define ZEND_HASH_MAP_REVERSE_FOREACH_BUCKET(ht, _bucket) \ argument
1293 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1296 #define ZEND_HASH_MAP_FOREACH_VAL(ht, _val) \ argument
1297 ZEND_HASH_MAP_FOREACH(ht, 0); \
1300 #define ZEND_HASH_MAP_REVERSE_FOREACH_VAL(ht, _val) \ argument
1301 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1304 #define ZEND_HASH_MAP_FOREACH_VAL_IND(ht, _val) \ argument
1305 ZEND_HASH_MAP_FOREACH(ht, 1); \
1308 #define ZEND_HASH_MAP_REVERSE_FOREACH_VAL_IND(ht, _val) \ argument
1309 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 1); \
1312 #define ZEND_HASH_MAP_FOREACH_PTR(ht, _ptr) \ argument
1313 ZEND_HASH_MAP_FOREACH(ht, 0); \
1316 #define ZEND_HASH_MAP_FOREACH_PTR_FROM(ht, _ptr, _from) \ argument
1317 ZEND_HASH_MAP_FOREACH_FROM(ht, 0, _from); \
1320 #define ZEND_HASH_MAP_REVERSE_FOREACH_PTR(ht, _ptr) \ argument
1321 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1324 #define ZEND_HASH_MAP_FOREACH_NUM_KEY(ht, _h) \ argument
1325 ZEND_HASH_MAP_FOREACH(ht, 0); \
1328 #define ZEND_HASH_MAP_REVERSE_FOREACH_NUM_KEY(ht, _h) \ argument
1329 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1332 #define ZEND_HASH_MAP_FOREACH_STR_KEY(ht, _key) \ argument
1333 ZEND_HASH_MAP_FOREACH(ht, 0); \
1336 #define ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY(ht, _key) \ argument
1337 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1340 #define ZEND_HASH_MAP_FOREACH_KEY(ht, _h, _key) \ argument
1341 ZEND_HASH_MAP_FOREACH(ht, 0); \
1345 #define ZEND_HASH_MAP_REVERSE_FOREACH_KEY(ht, _h, _key) \ argument
1346 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1350 #define ZEND_HASH_MAP_FOREACH_NUM_KEY_VAL(ht, _h, _val) \ argument
1351 ZEND_HASH_MAP_FOREACH(ht, 0); \
1355 #define ZEND_HASH_MAP_REVERSE_FOREACH_NUM_KEY_VAL(ht, _h, _val) \ argument
1356 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1360 #define ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(ht, _key, _val) \ argument
1361 ZEND_HASH_MAP_FOREACH(ht, 0); \
1365 #define ZEND_HASH_MAP_FOREACH_STR_KEY_VAL_FROM(ht, _key, _val, _from) \ argument
1366 ZEND_HASH_MAP_FOREACH_FROM(ht, 0, _from); \
1370 #define ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY_VAL(ht, _key, _val) \ argument
1371 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1375 #define ZEND_HASH_MAP_FOREACH_KEY_VAL(ht, _h, _key, _val) \ argument
1376 ZEND_HASH_MAP_FOREACH(ht, 0); \
1381 #define ZEND_HASH_MAP_REVERSE_FOREACH_KEY_VAL(ht, _h, _key, _val) \ argument
1382 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1387 #define ZEND_HASH_MAP_FOREACH_STR_KEY_VAL_IND(ht, _key, _val) \ argument
1388 ZEND_HASH_MAP_FOREACH(ht, 1); \
1392 #define ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY_VAL_IND(ht, _key, _val) \ argument
1393 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 1); \
1397 #define ZEND_HASH_MAP_FOREACH_KEY_VAL_IND(ht, _h, _key, _val) \ argument
1398 ZEND_HASH_MAP_FOREACH(ht, 1); \
1403 #define ZEND_HASH_MAP_REVERSE_FOREACH_KEY_VAL_IND(ht, _h, _key, _val) \ argument
1404 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 1); \
1409 #define ZEND_HASH_MAP_FOREACH_NUM_KEY_PTR(ht, _h, _ptr) \ argument
1410 ZEND_HASH_MAP_FOREACH(ht, 0); \
1414 #define ZEND_HASH_MAP_REVERSE_FOREACH_NUM_KEY_PTR(ht, _h, _ptr) \ argument
1415 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1419 #define ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(ht, _key, _ptr) \ argument
1420 ZEND_HASH_MAP_FOREACH(ht, 0); \
1424 #define ZEND_HASH_MAP_REVERSE_FOREACH_STR_KEY_PTR(ht, _key, _ptr) \ argument
1425 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1429 #define ZEND_HASH_MAP_FOREACH_KEY_PTR(ht, _h, _key, _ptr) \ argument
1430 ZEND_HASH_MAP_FOREACH(ht, 0); \
1435 #define ZEND_HASH_MAP_REVERSE_FOREACH_KEY_PTR(ht, _h, _key, _ptr) \ argument
1436 ZEND_HASH_MAP_REVERSE_FOREACH(ht, 0); \
1465 #define ZEND_HASH_PACKED_FOREACH_VAL(ht, _val) \ argument
1466 ZEND_HASH_PACKED_FOREACH(ht); \
1469 #define ZEND_HASH_PACKED_REVERSE_FOREACH_VAL(ht, _val) \ argument
1470 ZEND_HASH_PACKED_REVERSE_FOREACH(ht); \
1473 #define ZEND_HASH_PACKED_FOREACH_PTR(ht, _ptr) \ argument
1474 ZEND_HASH_PACKED_FOREACH(ht); \
1477 #define ZEND_HASH_PACKED_REVERSE_FOREACH_PTR(ht, _ptr) \ argument
1478 ZEND_HASH_PACKED_REVERSE_FOREACH(ht); \
1481 #define ZEND_HASH_PACKED_FOREACH_KEY(ht, _h) \ argument
1482 ZEND_HASH_PACKED_FOREACH(ht); \
1485 #define ZEND_HASH_PACKED_REVERSE_FOREACH_KEY(ht, _h) \ argument
1486 ZEND_HASH_PACKED_REVERSE_FOREACH(ht); \
1489 #define ZEND_HASH_PACKED_FOREACH_KEY_VAL(ht, _h, _val) \ argument
1490 ZEND_HASH_PACKED_FOREACH(ht); \
1494 #define ZEND_HASH_PACKED_REVERSE_FOREACH_KEY_VAL(ht, _h, _val) \ argument
1495 ZEND_HASH_PACKED_REVERSE_FOREACH(ht); \
1499 #define ZEND_HASH_PACKED_FOREACH_KEY_PTR(ht, _h, _ptr) \ argument
1500 ZEND_HASH_PACKED_FOREACH(ht); \
1504 #define ZEND_HASH_PACKED_REVERSE_FOREACH_KEY_PTR(ht, _h, _ptr) \ argument
1505 ZEND_HASH_PACKED_REVERSE_FOREACH(ht); \
1514 #define ZEND_HASH_FILL_PACKED(ht) do { \ argument
1515 HashTable *__fill_ht = (ht); \
1607 static zend_always_inline zval *_zend_hash_append_ex(HashTable *ht, zend_string *key, zval *zv, boo… in _zend_hash_append_ex() argument
1609 uint32_t idx = ht->nNumUsed++; in _zend_hash_append_ex()
1611 Bucket *p = ht->arData + idx; in _zend_hash_append_ex()
1615 HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS; in _zend_hash_append_ex()
1621 nIndex = (uint32_t)p->h | ht->nTableMask; in _zend_hash_append_ex()
1622 Z_NEXT(p->val) = HT_HASH(ht, nIndex); in _zend_hash_append_ex()
1623 HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); in _zend_hash_append_ex()
1624 ht->nNumOfElements++; in _zend_hash_append_ex()
1628 static zend_always_inline zval *_zend_hash_append(HashTable *ht, zend_string *key, zval *zv) in _zend_hash_append() argument
1630 return _zend_hash_append_ex(ht, key, zv, 0); in _zend_hash_append()
1633 static zend_always_inline zval *_zend_hash_append_ptr_ex(HashTable *ht, zend_string *key, void *ptr… in _zend_hash_append_ptr_ex() argument
1635 uint32_t idx = ht->nNumUsed++; in _zend_hash_append_ptr_ex()
1637 Bucket *p = ht->arData + idx; in _zend_hash_append_ptr_ex()
1641 HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS; in _zend_hash_append_ptr_ex()
1647 nIndex = (uint32_t)p->h | ht->nTableMask; in _zend_hash_append_ptr_ex()
1648 Z_NEXT(p->val) = HT_HASH(ht, nIndex); in _zend_hash_append_ptr_ex()
1649 HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); in _zend_hash_append_ptr_ex()
1650 ht->nNumOfElements++; in _zend_hash_append_ptr_ex()
1654 static zend_always_inline zval *_zend_hash_append_ptr(HashTable *ht, zend_string *key, void *ptr) in _zend_hash_append_ptr() argument
1656 return _zend_hash_append_ptr_ex(ht, key, ptr, 0); in _zend_hash_append_ptr()
1659 static zend_always_inline void _zend_hash_append_ind(HashTable *ht, zend_string *key, zval *ptr) in _zend_hash_append_ind() argument
1661 uint32_t idx = ht->nNumUsed++; in _zend_hash_append_ind()
1663 Bucket *p = ht->arData + idx; in _zend_hash_append_ind()
1667 HT_FLAGS(ht) &= ~HASH_FLAG_STATIC_KEYS; in _zend_hash_append_ind()
1673 nIndex = (uint32_t)p->h | ht->nTableMask; in _zend_hash_append_ind()
1674 Z_NEXT(p->val) = HT_HASH(ht, nIndex); in _zend_hash_append_ind()
1675 HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); in _zend_hash_append_ind()
1676 ht->nNumOfElements++; in _zend_hash_append_ind()