cvs: ZendEngine2 / zend_execute.c zend_object_handlers.c zend_object_handlers.h zend_objects_API.c

From: Date: Mon, 07 Jul 2003 10:53:28 +0000
Subject: cvs: ZendEngine2 / zend_execute.c zend_object_handlers.c zend_object_handlers.h zend_objects_API.c
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-1468@lists.php.net to get a copy of this message
zeev Mon Jul 7 06:53:28 2003 EDT Modified files: /ZendEngine2 zend_execute.c zend_object_handlers.c zend_object_handlers.h zend_objects_API.c Log: Add get_dim callback Index: ZendEngine2/zend_execute.c diff -u ZendEngine2/zend_execute.c:1.489 ZendEngine2/zend_execute.c:1.490 --- ZendEngine2/zend_execute.c:1.489 Mon Jul 7 06:47:25 2003 +++ ZendEngine2/zend_execute.c Mon Jul 7 06:53:27 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_execute.c,v 1.489 2003/07/07 10:47:25 zeev Exp $ */ +/* $Id: zend_execute.c,v 1.490 2003/07/07 10:53:27 zeev Exp $ */ #define ZEND_INTENSIVE_DEBUGGING 0 @@ -918,6 +918,17 @@ FREE_OP(Ts, op2, EG(free_op2)); *retval = NULL; return; + } + break; + case IS_OBJECT: + if (type == BP_VAR_R) { + zval *dim = get_zval_ptr(op2, Ts, &EG(free_op2), BP_VAR_R); + zval *overloaded_result = Z_OBJ_HT_P(container)->read_dimension(container, dim TSRMLS_CC); + + *retval = &overloaded_result; + AI_USE_PTR(T(result->u.var).var); + FREE_OP(Ts, op2, EG(free_op2)); + SELECTIVE_PZVAL_LOCK(**retval, result); } break; default: { Index: ZendEngine2/zend_object_handlers.c diff -u ZendEngine2/zend_object_handlers.c:1.58 ZendEngine2/zend_object_handlers.c:1.59 --- ZendEngine2/zend_object_handlers.c:1.58 Mon Jul 7 05:12:15 2003 +++ ZendEngine2/zend_object_handlers.c Mon Jul 7 06:53:27 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_object_handlers.c,v 1.58 2003/07/07 09:12:15 zeev Exp $ */ +/* $Id: zend_object_handlers.c,v 1.59 2003/07/07 10:53:27 zeev Exp $ */ #include "zend.h" #include "zend_globals.h" @@ -335,11 +335,28 @@ } } +zval *zend_std_read_dimension(zval *object, zval *offset TSRMLS_DC) +{ +#if 1 + zend_error(E_ERROR, "Cannot use object as array"); +#else + zend_printf("Fetching from object: "); + zend_print_zval(object, 0); + + zend_printf("\n the offset: "); + zend_print_zval(offset, 0); + + zend_printf("\n"); +#endif + return EG(uninitialized_zval_ptr); +} + static void zend_std_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC) { +#if 1 zend_error(E_ERROR, "Cannot use object as array"); -#if 0 +#else zend_printf("Assigning to object: "); zend_print_zval(object, 0); @@ -348,9 +365,9 @@ zend_printf("\n the value: "); zend_print_zval(value, 0); -#endif zend_printf("\n"); +#endif } @@ -835,6 +852,7 @@ zend_std_read_property, /* read_property */ zend_std_write_property, /* write_property */ + zend_std_read_dimension, /* read_dimension */ zend_std_write_dimension, /* write_dimension */ zend_std_get_property_ptr, /* get_property_ptr */ zend_std_get_property_ptr, /* get_property_zval_ptr */ Index: ZendEngine2/zend_object_handlers.h diff -u ZendEngine2/zend_object_handlers.h:1.19 ZendEngine2/zend_object_handlers.h:1.20 --- ZendEngine2/zend_object_handlers.h:1.19 Mon Jul 7 05:12:15 2003 +++ ZendEngine2/zend_object_handlers.h Mon Jul 7 06:53:27 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_object_handlers.h,v 1.19 2003/07/07 09:12:15 zeev Exp $ */ +/* $Id: zend_object_handlers.h,v 1.20 2003/07/07 10:53:27 zeev Exp $ */ #ifndef ZEND_OBJECT_HANDLERS_H #define ZEND_OBJECT_HANDLERS_H @@ -27,6 +27,9 @@ /* Used to fetch property from the object, read-only */ typedef zval *(*zend_object_read_property_t)(zval *object, zval *member TSRMLS_DC); +/* Used to fetch dimension from the object, read-only */ +typedef zval *(*zend_object_read_dimension_t)(zval *object, zval *offset TSRMLS_DC); + /* Used to set property of the object */ typedef void (*zend_object_write_property_t)(zval *object, zval *member, zval *value TSRMLS_DC); @@ -88,6 +91,7 @@ /* individual object functions */ zend_object_read_property_t read_property; zend_object_write_property_t write_property; + zend_object_read_dimension_t read_dimension; zend_object_write_dimension_t write_dimension; zend_object_get_property_ptr_t get_property_ptr; zend_object_get_property_zval_ptr_t get_property_zval_ptr; Index: ZendEngine2/zend_objects_API.c diff -u ZendEngine2/zend_objects_API.c:1.16 ZendEngine2/zend_objects_API.c:1.17 --- ZendEngine2/zend_objects_API.c:1.16 Mon Jul 7 05:08:33 2003 +++ ZendEngine2/zend_objects_API.c Mon Jul 7 06:53:27 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_objects_API.c,v 1.16 2003/07/07 09:08:33 zeev Exp $ */ +/* $Id: zend_objects_API.c,v 1.17 2003/07/07 10:53:27 zeev Exp $ */ #include "zend.h" #include "zend_globals.h" @@ -273,6 +273,7 @@ NULL, /* read_property */ NULL, /* write_property */ + NULL, /* read dimension */ NULL, /* write_dimension */ NULL, /* get_property_ptr */ NULL, /* get_property_zval_ptr */

« previous php.zend-engine.cvs (#1468) next »