summaryrefslogtreecommitdiff
path: root/Zend/zend_hash.h
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2014-12-23 00:50:39 -0500
committerXinchen Hui <laruence@php.net>2014-12-23 00:50:39 -0500
commit95bb0a0f7aec46cacf6a447ded1688e6c6ff4b62 (patch)
tree234d43c46057f2f7f068f387820c20c26543e0fe /Zend/zend_hash.h
parent4b26c5d004960d460606977118ad3411bea84681 (diff)
downloadphp-git-95bb0a0f7aec46cacf6a447ded1688e6c6ff4b62.tar.gz
Improve Hash foreach macros
Diffstat (limited to 'Zend/zend_hash.h')
-rw-r--r--Zend/zend_hash.h18
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)