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: {
zval *offset;
}
}
+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);
zend_printf("\n the value: ");
zend_print_zval(value, 0);
-#endif
zend_printf("\n");
+#endif
}
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 */
/* 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);
/* 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;
NULL, /* read_property */
NULL, /* write_property */
+ NULL, /* read dimension */
NULL, /* write_dimension */
NULL, /* get_property_ptr */
NULL, /* get_property_zval_ptr */