diff options
author | Wez Furlong <wez@php.net> | 2004-05-04 15:03:28 +0000 |
---|---|---|
committer | Wez Furlong <wez@php.net> | 2004-05-04 15:03:28 +0000 |
commit | d056b25c3f6930c7034b16c7091ac49f13f07098 (patch) | |
tree | 6de062ff1183c058b4c338e57e6b27166bbe6d40 | |
parent | 5b5b10f0cae89bbb2a6d93c4433efa4083bd91fe (diff) | |
download | php-git-d056b25c3f6930c7034b16c7091ac49f13f07098.tar.gz |
Add count_elements handler for overloaded objects.
-rwxr-xr-x | Zend/zend_iterators.c | 3 | ||||
-rw-r--r-- | Zend/zend_object_handlers.c | 1 | ||||
-rw-r--r-- | Zend/zend_object_handlers.h | 4 | ||||
-rw-r--r-- | Zend/zend_objects_API.c | 1 |
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 */ }; |