Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_2) / zend.c zend.h
| From: | Ilia Alshanetsky | Date: | Tue, 13 Jun 2006 16:33:08 +0000 |
| Subject: | Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_2) / zend.c zend.h | ||
| References: | 1 | Groups: | php.zend-engine.cvs |
| Request: | Send a blank email to php-zend-engine-cvs+get-5010@lists.php.net to get a copy of this message | ||
I've added the macro since it may be used in other functions at a later point.
On 13-Jun-06, at 2:09 AM, Dmitry Stogov wrote:
Hi Ilia, I would prefer not define macroses those are valid only in one function (ZEND_PUT_EX, ZEND_WRITE_EX). I think usage of write_func() will more clear. Thanks. Dmitry.Ilia Alshanetsky-----Original Message----- From: Ilia Alshanetsky [mailto:iliaa@php.net] Sent: Sunday, June 11, 2006 8:28 PM To: zend-engine-cvs@lists.php.net Subject: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_2) / zend.c zend.h iliaa Sun Jun 11 16:28:24 2006 UTC1.2.3&r2=1.293.2.11.2.4&diff_format=u Index: ZendEngine2/zend.h diff -u ZendEngine2/zend.h:1.293.2.11.2.3 ZendEngine2/zend.h:1.293.2.11.2.4 --- ZendEngine2/zend.h:1.293.2.11.2.3 Fri May 19 06:09:14 2006 +++ ZendEngine2/zend.h Sun Jun 11 16:28:24 2006 @@ -17,7 +17,7 @@Modified files: (Branch: PHP_5_2) /ZendEngine2 zend.c zend.hLog: Make zend_print_zval_r_ex() use the write callback function. http://cvs.php.net/viewcvs.cgi/ZendEngine2/zend.c?r1=1.308.2.1 2.2.10&r2=1.308.2.12.2.11&diff_format=u Index: ZendEngine2/zend.c diff -u ZendEngine2/zend.c:1.308.2.12.2.10 ZendEngine2/zend.c:1.308.2.12.2.11 --- ZendEngine2/zend.c:1.308.2.12.2.10 Mon Jun 5 13:58:51 2006 +++ ZendEngine2/zend.c Sun Jun 11 16:28:24 2006 @@ -17,7 +17,7 @@ +------------------------------------------------------------- ---------+ */ -/* $Id: zend.c,v 1.308.2.12.2.10 2006/06/05 13:58:51 zeev Exp $ */ +/* $Id: zend.c,v 1.308.2.12.2.11 2006/06/11 16:28:24 iliaa Exp $ */ #include "zend.h" #include "zend_extensions.h" @@ -107,7 +107,7 @@ #define PRINT_ZVAL_INDENT 4 -static void print_hash(HashTable *ht, int indent, zend_bool is_object TSRMLS_DC) +static void print_hash(zend_write_func_t write_func, HashTable *ht, int +indent, zend_bool is_object TSRMLS_DC) { zval **tmp; char *string_key; @@ -117,48 +117,52 @@ int i; for (i=0; i<indent; i++) { - ZEND_PUTS(" "); + ZEND_PUTS_EX(" "); } - ZEND_PUTS("(\n"); + ZEND_PUTS_EX("(\n"); indent += PRINT_ZVAL_INDENT; zend_hash_internal_pointer_reset_ex(ht, &iterator); while (zend_hash_get_current_data_ex(ht, (void **) &tmp, &iterator) == SUCCESS) { for (i=0; i<indent; i++) { - ZEND_PUTS(" "); + ZEND_PUTS_EX(" "); } - ZEND_PUTS("["); + ZEND_PUTS_EX("["); switch (zend_hash_get_current_key_ex(ht, &string_key, &str_len, &num_key, 0, &iterator)) { case HASH_KEY_IS_STRING: if (is_object) { char *prop_name, *class_name; zend_unmangle_property_name_ex(string_key, str_len, &class_name, &prop_name); - ZEND_PUTS(prop_name); + ZEND_PUTS_EX(prop_name); if (class_name) { if (class_name[0]=='*') { - ZEND_PUTS(":protected"); + ZEND_PUTS_EX(":protected"); } else { - ZEND_PUTS(":private"); + ZEND_PUTS_EX(":private"); } } } else { - ZEND_WRITE(string_key, str_len-1); + ZEND_WRITE_EX(string_key, str_len-1); } break; case HASH_KEY_IS_LONG: - zend_printf("%ld", num_key); + { + char key[25]; + sprintf(key, "%ld", num_key); + ZEND_PUTS_EX(key); + } break; } - ZEND_PUTS("] => "); - zend_print_zval_r(*tmp, indent+PRINT_ZVAL_INDENT TSRMLS_CC); - ZEND_PUTS("\n"); + ZEND_PUTS_EX("] => "); + zend_print_zval_r_ex(zend_write, *tmp, indent+PRINT_ZVAL_INDENT TSRMLS_CC); + ZEND_PUTS_EX("\n"); zend_hash_move_forward_ex(ht, &iterator); } indent -= PRINT_ZVAL_INDENT; for (i=0; i<indent; i++) { - ZEND_PUTS(" "); + ZEND_PUTS_EX(" "); } - ZEND_PUTS(")\n"); + ZEND_PUTS_EX(")\n"); } static void print_flat_hash(HashTable *ht TSRMLS_DC) @@ -354,13 +358,13 @@ { switch (expr->type) { case IS_ARRAY: - ZEND_PUTS("Array\n"); + ZEND_PUTS_EX("Array\n"); if (++expr->value.ht->nApplyCount>1) { - ZEND_PUTS(" *RECURSION*"); + ZEND_PUTS_EX(" *RECURSION*"); expr->value.ht->nApplyCount--; return; } - print_hash(expr->value.ht, indent, 0 TSRMLS_CC); + print_hash(write_func, expr->value.ht, indent, 0 TSRMLS_CC); expr->value.ht->nApplyCount--; break; case IS_OBJECT: @@ -372,7 +376,12 @@ if (Z_OBJ_HANDLER_P(expr, get_class_name)) { Z_OBJ_HANDLER_P(expr, get_class_name)(expr, &class_name, &clen, 0 TSRMLS_CC); } - zend_printf("%s Object\n", class_name?class_name:"Unknown Class"); + if (class_name) { + ZEND_PUTS_EX(class_name); + } else { + ZEND_PUTS_EX("Unknown Class"); + } + ZEND_PUTS_EX(" Object\n"); if (class_name) { efree(class_name); } @@ -381,17 +390,17 @@ } if (properties) { if (++properties->nApplyCount>1) { - ZEND_PUTS(" *RECURSION*"); + ZEND_PUTS_EX(" *RECURSION*"); properties->nApplyCount--; return; } - print_hash(properties, indent, 1 TSRMLS_CC); + print_hash(write_func, properties, indent, 1 TSRMLS_CC); properties->nApplyCount--; } break; } default: - zend_print_variable(expr); + zend_print_zval_ex(write_func, expr, indent); break; } } http://cvs.php.net/viewcvs.cgi/ZendEngine2/zend.h?r1=1.293.2.1+----------------------------------------------------------------------+*/ -/* $Id: zend.h,v 1.293.2.11.2.3 2006/05/19 06:09:14 dmitry Exp $ */ +/* $Id: zend.h,v 1.293.2.11.2.4 2006/06/11 16:28:24 iliaa Exp $ */ #ifndef ZEND_H #define ZEND_H @@ -502,7 +502,9 @@ /* output support */ #define ZEND_WRITE(str, str_len) zend_write((str), (str_len)) +#define ZEND_WRITE_EX(str, str_len) write_func((str), (str_len)) #define ZEND_PUTS(str) zend_write((str), strlen((str))) +#define ZEND_PUTS_EX(str) write_func((str), strlen((str))) #define ZEND_PUTC(c) zend_write(&(c), 1), (c) --Zend Engine CVS Mailing List (http://cvs.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- Zend Engine CVS Mailing List (http://cvs.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php