summaryrefslogtreecommitdiff
path: root/Zend/zend.h
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2002-02-07 14:08:43 +0000
committerStanislav Malyshev <stas@php.net>2002-02-07 14:08:43 +0000
commit6608f07322789bd0896b265c29e13c0c9f5d5898 (patch)
tree3149fb62b09cbea8d328df4d930e4cddb99aef03 /Zend/zend.h
parent5e9b1634c68dc70bbc6480fddb303d8807a943d2 (diff)
downloadphp-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.h24
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);