diff options
author | Xinchen Hui <laruence@php.net> | 2014-12-23 00:50:39 -0500 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2014-12-23 00:50:39 -0500 |
commit | 95bb0a0f7aec46cacf6a447ded1688e6c6ff4b62 (patch) | |
tree | 234d43c46057f2f7f068f387820c20c26543e0fe /Zend/zend_hash.h | |
parent | 4b26c5d004960d460606977118ad3411bea84681 (diff) | |
download | php-git-95bb0a0f7aec46cacf6a447ded1688e6c6ff4b62.tar.gz |
Improve Hash foreach macros
Diffstat (limited to 'Zend/zend_hash.h')
-rw-r--r-- | Zend/zend_hash.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h index 81b933289f..5bdfa7053c 100644 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@ -678,6 +678,11 @@ static zend_always_inline void *zend_hash_get_current_data_ptr_ex(HashTable *ht, #define ZEND_HASH_FOREACH_STR_KEY(ht, _key) \ ZEND_HASH_FOREACH(ht, 0); \ _key = _p->key; + +#define ZEND_HASH_FOREACH_KEY_IND(ht, _h, _key) \ + ZEND_HASH_FOREACH(ht, 1); \ + _h = _p->h; \ + _key = _p->key; #define ZEND_HASH_FOREACH_KEY(ht, _h, _key) \ ZEND_HASH_FOREACH(ht, 0); \ @@ -751,6 +756,19 @@ static zend_always_inline void *zend_hash_get_current_data_ptr_ex(HashTable *ht, _key = _p->key; \ _val = _z; +#define ZEND_HASH_FOREACH_CURRENT_KEY(ht, _h, _key) \ + _h = _p->h; \ + _key = _p->key; + +#define ZEND_HASH_FOREACH_CURRENT_STR_KEY(ht, _key) \ + _key = _p->key; + +#define ZEND_HASH_FOREACH_CURRENT_NUM_KEY(ht, _h) \ + _h = _p->h; + +#define ZEND_HASH_FOREACH_CURRENT_VAL(ht, _val) \ + _val = _z; + #define ZEND_HASH_APPLY_PROTECTION(ht) \ ((ht)->u.flags & HASH_FLAG_APPLY_PROTECTION) |