cvs: ZendEngine2 / zend_execute.c zend_object_handlers.c zend_object_handlers.h zend_objects_API.c
| From: | Zeev Suraski | 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 */