diff options
| author | Stanislav Malyshev <stas@php.net> | 2002-02-07 14:08:43 +0000 |
|---|---|---|
| committer | Stanislav Malyshev <stas@php.net> | 2002-02-07 14:08:43 +0000 |
| commit | 6608f07322789bd0896b265c29e13c0c9f5d5898 (patch) | |
| tree | 3149fb62b09cbea8d328df4d930e4cddb99aef03 /Zend/zend.h | |
| parent | 5e9b1634c68dc70bbc6480fddb303d8807a943d2 (diff) | |
| download | php-git-6608f07322789bd0896b265c29e13c0c9f5d5898.tar.gz | |
Mega-commit: Enter the new object model
Note: only standard Zend objects are working now. This is definitely going to
break custom objects like COM, Java, etc. - this will be fixed later.
Also, this may break other things that access objects' internals directly.
Diffstat (limited to 'Zend/zend.h')
| -rw-r--r-- | Zend/zend.h | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/Zend/zend.h b/Zend/zend.h index c9251112bb..f6fd80bf61 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -198,32 +198,15 @@ typedef struct _zend_object { } zend_object; typedef unsigned int zend_object_handle; +typedef struct _zend_object_value zend_object_value; -typedef struct _zend_object_handlers zend_object_handlers; +#include "zend_object_handlers.h" -typedef struct _zend_object_value { +struct _zend_object_value { zend_object_handle handle; zend_object_handlers *handlers; -} zend_object_value; - -typedef zend_object *(*get_address_t)(zend_object_handle handle); /* Don't return zval ** so that we can't change it */ -typedef zval **(*get_property_address_t)(zend_object_handle handle, zval *offset, int type); -typedef void (*add_ref_t)(zend_object_handle handle); -typedef void (*del_ref_t)(zend_object_handle handle); -typedef void (*delete_obj_t)(zend_object_handle handle); -typedef zend_object_value (*clone_obj_t)(zend_object_handle handle); - -struct _zend_object_handlers { - get_address_t get_address; - get_property_address_t get_property_address; - add_ref_t add_ref; - del_ref_t del_ref; - delete_obj_t delete_obj; - clone_obj_t clone_obj; }; -#include "zend_objects.h" - typedef union _zvalue_value { long lval; /* long value */ double dval; /* double value */ @@ -297,6 +280,7 @@ struct _zend_class_entry { union _zend_function *clone; /* handlers */ + zend_object_value (*create_object)(zend_class_entry *class_type); void (*handle_function_call)(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference); zval (*handle_property_get)(zend_property_reference *property_reference); int (*handle_property_set)(zend_property_reference *property_reference, zval *value); |
