summaryrefslogtreecommitdiff
path: root/ext/com_dotnet/com_saproxy.c
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2004-05-04 15:03:48 +0000
committerWez Furlong <wez@php.net>2004-05-04 15:03:48 +0000
commit263723ec9b9d1f7b82a7de1e2cef25803bf24baa (patch)
tree5bfa8f5e83e3d58b2d7dc354975bc05779d29850 /ext/com_dotnet/com_saproxy.c
parentd056b25c3f6930c7034b16c7091ac49f13f07098 (diff)
downloadphp-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.c20
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)