summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2004-05-04 15:03:28 +0000
committerWez Furlong <wez@php.net>2004-05-04 15:03:28 +0000
commitd056b25c3f6930c7034b16c7091ac49f13f07098 (patch)
tree6de062ff1183c058b4c338e57e6b27166bbe6d40
parent5b5b10f0cae89bbb2a6d93c4433efa4083bd91fe (diff)
downloadphp-git-d056b25c3f6930c7034b16c7091ac49f13f07098.tar.gz
Add count_elements handler for overloaded objects.
-rwxr-xr-xZend/zend_iterators.c3
-rw-r--r--Zend/zend_object_handlers.c1
-rw-r--r--Zend/zend_object_handlers.h4
-rw-r--r--Zend/zend_objects_API.c1
4 files changed, 8 insertions, 1 deletions
diff --git a/Zend/zend_iterators.c b/Zend/zend_iterators.c
index 17d37da814..022839cb66 100755
--- a/Zend/zend_iterators.c
+++ b/Zend/zend_iterators.c
@@ -44,7 +44,8 @@ static zend_object_handlers iterator_object_handlers = {
NULL, /* get_ce */
NULL, /* get class name */
NULL, /* compare */
- NULL /* cast */
+ NULL, /* cast */
+ NULL /* count */
};
ZEND_API void zend_register_iterator_wrapper(TSRMLS_D)
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index 7c078ca666..7d2a1036ce 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -972,6 +972,7 @@ ZEND_API zend_object_handlers std_object_handlers = {
zend_std_object_get_class_name, /* get_class_name */
zend_std_compare_objects, /* compare_objects */
NULL, /* cast_object */
+ NULL, /* count_elements */
};
/*
diff --git a/Zend/zend_object_handlers.h b/Zend/zend_object_handlers.h
index a0c2cfa8e4..4c8d12eda3 100644
--- a/Zend/zend_object_handlers.h
+++ b/Zend/zend_object_handlers.h
@@ -93,6 +93,9 @@ typedef int (*zend_object_get_class_name_t)(zval *object, char **class_name, zen
typedef int (*zend_object_compare_t)(zval *object1, zval *object2 TSRMLS_DC);
typedef int (*zend_object_cast_t)(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC);
+/* updates *count to hold the number of elements present and returns SUCCESS.
+ * Returns FAILURE if the object does not have any sense of overloaded dimensions */
+typedef int (*zend_object_count_elements_t)(zval *object, long *count TSRMLS_DC);
typedef struct _zend_object_handlers {
/* general object functions */
@@ -119,6 +122,7 @@ typedef struct _zend_object_handlers {
zend_object_get_class_name_t get_class_name;
zend_object_compare_t compare_objects;
zend_object_cast_t cast_object;
+ zend_object_count_elements_t count_elements;
} zend_object_handlers;
extern ZEND_API zend_object_handlers std_object_handlers;
diff --git a/Zend/zend_objects_API.c b/Zend/zend_objects_API.c
index a46b8622c7..95a36a1781 100644
--- a/Zend/zend_objects_API.c
+++ b/Zend/zend_objects_API.c
@@ -284,6 +284,7 @@ static zend_object_handlers zend_object_proxy_handlers = {
NULL, /* get_class_name */
NULL, /* compare_objects */
NULL, /* cast_object */
+ NULL, /* count_elements */
};