123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- #ifndef ZEND_OBJECT_HANDLERS_H
- #define ZEND_OBJECT_HANDLERS_H
- union _zend_function;
- struct _zend_property_info;
- struct _zend_literal;
- typedef zval *(*zend_object_read_property_t)(zval *object, zval *member, int type, const struct _zend_literal *key TSRMLS_DC);
- typedef zval *(*zend_object_read_dimension_t)(zval *object, zval *offset, int type TSRMLS_DC);
- typedef void (*zend_object_write_property_t)(zval *object, zval *member, zval *value, const struct _zend_literal *key TSRMLS_DC);
- typedef void (*zend_object_write_dimension_t)(zval *object, zval *offset, zval *value TSRMLS_DC);
- typedef zval **(*zend_object_get_property_ptr_ptr_t)(zval *object, zval *member, int type, const struct _zend_literal *key TSRMLS_DC);
- typedef void (*zend_object_set_t)(zval **object, zval *value TSRMLS_DC);
- typedef zval* (*zend_object_get_t)(zval *object TSRMLS_DC);
- typedef int (*zend_object_has_property_t)(zval *object, zval *member, int has_set_exists, const struct _zend_literal *key TSRMLS_DC);
- typedef int (*zend_object_has_dimension_t)(zval *object, zval *member, int check_empty TSRMLS_DC);
- typedef void (*zend_object_unset_property_t)(zval *object, zval *member, const struct _zend_literal *key TSRMLS_DC);
- typedef void (*zend_object_unset_dimension_t)(zval *object, zval *offset TSRMLS_DC);
- typedef HashTable *(*zend_object_get_properties_t)(zval *object TSRMLS_DC);
- typedef HashTable *(*zend_object_get_debug_info_t)(zval *object, int *is_temp TSRMLS_DC);
- typedef int (*zend_object_call_method_t)(const char *method, INTERNAL_FUNCTION_PARAMETERS);
- typedef union _zend_function *(*zend_object_get_method_t)(zval **object_ptr, char *method, int method_len, const struct _zend_literal *key TSRMLS_DC);
- typedef union _zend_function *(*zend_object_get_constructor_t)(zval *object TSRMLS_DC);
- typedef void (*zend_object_add_ref_t)(zval *object TSRMLS_DC);
- typedef void (*zend_object_del_ref_t)(zval *object TSRMLS_DC);
- typedef void (*zend_object_delete_obj_t)(zval *object TSRMLS_DC);
- typedef zend_object_value (*zend_object_clone_obj_t)(zval *object TSRMLS_DC);
- typedef zend_class_entry *(*zend_object_get_class_entry_t)(const zval *object TSRMLS_DC);
- typedef int (*zend_object_get_class_name_t)(const zval *object, const char **class_name, zend_uint *class_name_len, int parent TSRMLS_DC);
- typedef int (*zend_object_compare_t)(zval *object1, zval *object2 TSRMLS_DC);
- typedef int (*zend_object_compare_zvals_t)(zval *resul, zval *op1, zval *op2 TSRMLS_DC);
- typedef int (*zend_object_cast_t)(zval *readobj, zval *retval, int type TSRMLS_DC);
- typedef int (*zend_object_count_elements_t)(zval *object, long *count TSRMLS_DC);
- typedef int (*zend_object_get_closure_t)(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC);
- typedef HashTable *(*zend_object_get_gc_t)(zval *object, zval ***table, int *n TSRMLS_DC);
- typedef int (*zend_object_do_operation_t)(zend_uchar opcode, zval *result, zval *op1, zval *op2 TSRMLS_DC);
- struct _zend_object_handlers {
-
- zend_object_add_ref_t add_ref;
- zend_object_del_ref_t del_ref;
- zend_object_clone_obj_t clone_obj;
-
- zend_object_read_property_t read_property;
- zend_object_write_property_t write_property;
- zend_object_read_dimension_t read_dimension;
- zend_object_write_dimension_t write_dimension;
- zend_object_get_property_ptr_ptr_t get_property_ptr_ptr;
- zend_object_get_t get;
- zend_object_set_t set;
- zend_object_has_property_t has_property;
- zend_object_unset_property_t unset_property;
- zend_object_has_dimension_t has_dimension;
- zend_object_unset_dimension_t unset_dimension;
- zend_object_get_properties_t get_properties;
- zend_object_get_method_t get_method;
- zend_object_call_method_t call_method;
- zend_object_get_constructor_t get_constructor;
- zend_object_get_class_entry_t get_class_entry;
- 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_get_debug_info_t get_debug_info;
- zend_object_get_closure_t get_closure;
- zend_object_get_gc_t get_gc;
- zend_object_do_operation_t do_operation;
- zend_object_compare_zvals_t compare;
- };
- extern ZEND_API zend_object_handlers std_object_handlers;
- #define zend_get_function_root_class(fbc) \
- ((fbc)->common.prototype ? (fbc)->common.prototype->common.scope : (fbc)->common.scope)
- BEGIN_EXTERN_C()
- ZEND_API union _zend_function *zend_std_get_static_method(zend_class_entry *ce, const char *function_name_strval, int function_name_strlen, const struct _zend_literal *key TSRMLS_DC);
- ZEND_API zval **zend_std_get_static_property(zend_class_entry *ce, const char *property_name, int property_name_len, zend_bool silent, const struct _zend_literal *key TSRMLS_DC);
- ZEND_API zend_bool zend_std_unset_static_property(zend_class_entry *ce, const char *property_name, int property_name_len, const struct _zend_literal *key TSRMLS_DC);
- ZEND_API union _zend_function *zend_std_get_constructor(zval *object TSRMLS_DC);
- ZEND_API struct _zend_property_info *zend_get_property_info(zend_class_entry *ce, zval *member, int silent TSRMLS_DC);
- ZEND_API HashTable *zend_std_get_properties(zval *object TSRMLS_DC);
- ZEND_API HashTable *zend_std_get_debug_info(zval *object, int *is_temp TSRMLS_DC);
- ZEND_API int zend_std_cast_object_tostring(zval *readobj, zval *writeobj, int type TSRMLS_DC);
- ZEND_API void zend_std_write_property(zval *object, zval *member, zval *value, const struct _zend_literal *key TSRMLS_DC);
- ZEND_API void rebuild_object_properties(zend_object *zobj);
- #define IS_ZEND_STD_OBJECT(z) (Z_TYPE(z) == IS_OBJECT && (Z_OBJ_HT((z))->get_class_entry != NULL))
- #define HAS_CLASS_ENTRY(z) (Z_OBJ_HT(z)->get_class_entry != NULL)
- ZEND_API int zend_check_private(union _zend_function *fbc, zend_class_entry *ce, char *function_name_strval, int function_name_strlen TSRMLS_DC);
- ZEND_API int zend_check_protected(zend_class_entry *ce, zend_class_entry *scope);
- ZEND_API int zend_check_property_access(zend_object *zobj, const char *prop_info_name, int prop_info_name_len TSRMLS_DC);
- ZEND_API void zend_std_call_user_call(INTERNAL_FUNCTION_PARAMETERS);
- END_EXTERN_C()
- #endif
|