diff options
| author | Wez Furlong <wez@php.net> | 2004-05-04 15:03:48 +0000 |
|---|---|---|
| committer | Wez Furlong <wez@php.net> | 2004-05-04 15:03:48 +0000 |
| commit | 263723ec9b9d1f7b82a7de1e2cef25803bf24baa (patch) | |
| tree | 5bfa8f5e83e3d58b2d7dc354975bc05779d29850 /ext/com_dotnet/com_saproxy.c | |
| parent | d056b25c3f6930c7034b16c7091ac49f13f07098 (diff) | |
| download | php-git-263723ec9b9d1f7b82a7de1e2cef25803bf24baa.tar.gz | |
Update for count_elements handler for overloaded objects.
Diffstat (limited to 'ext/com_dotnet/com_saproxy.c')
| -rw-r--r-- | ext/com_dotnet/com_saproxy.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/ext/com_dotnet/com_saproxy.c b/ext/com_dotnet/com_saproxy.c index 85d9b978a5..1dfbad5a1e 100644 --- a/ext/com_dotnet/com_saproxy.c +++ b/ext/com_dotnet/com_saproxy.c @@ -362,6 +362,23 @@ static int saproxy_object_cast(zval *readobj, zval *writeobj, int type, int shou return FAILURE; } +static int saproxy_count_elements(zval *object, long *count TSRMLS_DC) +{ + php_com_saproxy *proxy = SA_FETCH(object); + LONG ubound, lbound; + + if (!V_ISARRAY(&proxy->obj->v)) { + return FAILURE; + } + + SafeArrayGetLBound(V_ARRAY(&proxy->obj->v), proxy->dimensions, &lbound); + SafeArrayGetUBound(V_ARRAY(&proxy->obj->v), proxy->dimensions, &ubound); + + *count = ubound - lbound + 1; + + return SUCCESS; +} + zend_object_handlers php_com_saproxy_handlers = { ZEND_OBJECTS_STORE_HANDLERS, saproxy_property_read, @@ -382,7 +399,8 @@ zend_object_handlers php_com_saproxy_handlers = { saproxy_class_entry_get, saproxy_class_name_get, saproxy_objects_compare, - saproxy_object_cast + saproxy_object_cast, + saproxy_count_elements }; static void saproxy_free_storage(void *object TSRMLS_DC) |
