Add count_elements handler for overloaded objects.

This commit is contained in:
Wez Furlong 2004-05-04 15:03:28 +00:00
parent 5b5b10f0ca
commit d056b25c3f
4 changed files with 8 additions and 1 deletions

View file

@ -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)

View file

@ -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 */
};
/*

View file

@ -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;

View file

@ -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 */
};