diff options
author | Xinchen Hui <laruence@gmail.com> | 2014-04-21 14:14:00 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2014-04-21 14:14:00 +0800 |
commit | e48b9ad197b4ec6ac72e75538453cc350d0a41f4 (patch) | |
tree | f5ded37abc65e64e270b6f1ac264db9bc603f949 /Zend/zend.c | |
parent | cf7e703813e065fec7a8a5caa7aff4b70d3455b8 (diff) | |
parent | 54d9ad53f4797733b41bf2c65bd2c2cb5a1938b6 (diff) | |
download | php-git-e48b9ad197b4ec6ac72e75538453cc350d0a41f4.tar.gz |
Merge branch 'refactoring2' of github.com:zendtech/php into refactoring2
Diffstat (limited to 'Zend/zend.c')
-rw-r--r-- | Zend/zend.c | 71 |
1 files changed, 29 insertions, 42 deletions
diff --git a/Zend/zend.c b/Zend/zend.c index 57344547d5..cef24c085b 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -142,12 +142,10 @@ static void print_hash(zend_write_func_t write_func, HashTable *ht, int indent, } ZEND_PUTS_EX("(\n"); indent += PRINT_ZVAL_INDENT; - zend_hash_internal_pointer_reset_ex(ht, &iterator); - while ((tmp = zend_hash_get_current_data_ex(ht, &iterator)) != NULL) { + ZEND_HASH_FOREACH_KEY_VAL(ht, num_key, string_key, tmp) { if (Z_TYPE_P(tmp) == IS_INDIRECT) { tmp = Z_INDIRECT_P(tmp); if (Z_TYPE_P(tmp) == IS_UNDEF) { - zend_hash_move_forward_ex(ht, &iterator); continue; } } @@ -155,40 +153,34 @@ static void print_hash(zend_write_func_t write_func, HashTable *ht, int indent, ZEND_PUTS_EX(" "); } ZEND_PUTS_EX("["); - switch (zend_hash_get_current_key_ex(ht, &string_key, &num_key, 0, &iterator)) { - case HASH_KEY_IS_STRING: - if (is_object) { - const char *prop_name, *class_name; - int prop_len; - int mangled = zend_unmangle_property_name_ex(string_key->val, string_key->len, &class_name, &prop_name, &prop_len); - - ZEND_WRITE_EX(prop_name, prop_len); - if (class_name && mangled == SUCCESS) { - if (class_name[0]=='*') { - ZEND_PUTS_EX(":protected"); - } else { - ZEND_PUTS_EX(":"); - ZEND_PUTS_EX(class_name); - ZEND_PUTS_EX(":private"); - } + if (string_key) { + if (is_object) { + const char *prop_name, *class_name; + int prop_len; + int mangled = zend_unmangle_property_name_ex(string_key->val, string_key->len, &class_name, &prop_name, &prop_len); + + ZEND_WRITE_EX(prop_name, prop_len); + if (class_name && mangled == SUCCESS) { + if (class_name[0]=='*') { + ZEND_PUTS_EX(":protected"); + } else { + ZEND_PUTS_EX(":"); + ZEND_PUTS_EX(class_name); + ZEND_PUTS_EX(":private"); } - } else { - ZEND_WRITE_EX(string_key->val, string_key->len); } - break; - case HASH_KEY_IS_LONG: - { - char key[25]; - snprintf(key, sizeof(key), "%ld", num_key); - ZEND_PUTS_EX(key); - } - break; + } else { + ZEND_WRITE_EX(string_key->val, string_key->len); + } + } else { + char key[25]; + snprintf(key, sizeof(key), "%ld", num_key); + ZEND_PUTS_EX(key); } ZEND_PUTS_EX("] => "); zend_print_zval_r_ex(write_func, tmp, indent+PRINT_ZVAL_INDENT TSRMLS_CC); ZEND_PUTS_EX("\n"); - zend_hash_move_forward_ex(ht, &iterator); - } + } ZEND_HASH_FOREACH_END(); indent -= PRINT_ZVAL_INDENT; for (i = 0; i < indent; i++) { ZEND_PUTS_EX(" "); @@ -205,24 +197,19 @@ static void print_flat_hash(HashTable *ht TSRMLS_DC) /* {{{ */ ulong num_key; int i = 0; - zend_hash_internal_pointer_reset_ex(ht, &iterator); - while ((tmp = zend_hash_get_current_data_ex(ht, &iterator)) != NULL) { + ZEND_HASH_FOREACH_KEY_VAL(ht, num_key, string_key, tmp) { if (i++ > 0) { ZEND_PUTS(","); } ZEND_PUTS("["); - switch (zend_hash_get_current_key_ex(ht, &string_key, &num_key, 0, &iterator)) { - case HASH_KEY_IS_STRING: - ZEND_WRITE(string_key->val, string_key->len); - break; - case HASH_KEY_IS_LONG: - zend_printf("%ld", num_key); - break; + if (string_key) { + ZEND_WRITE(string_key->val, string_key->len); + } else { + zend_printf("%ld", num_key); } ZEND_PUTS("] => "); zend_print_flat_zval_r(tmp TSRMLS_CC); - zend_hash_move_forward_ex(ht, &iterator); - } + } ZEND_HASH_FOREACH_END(); } /* }}} */ |