mirror of
https://github.com/php/php-src.git
synced 2024-10-11 11:32:37 +00:00
6ac6cb1040
object handlers structure
40 lines
1.0 KiB
C
40 lines
1.0 KiB
C
#ifndef ZEND_OBJECTS_H
|
|
#define ZEND_OBJECTS_H
|
|
|
|
#include "zend.h"
|
|
|
|
typedef struct _zend_object_bucket {
|
|
zend_bool valid;
|
|
zend_bool constructor_called;
|
|
union _bucket {
|
|
struct {
|
|
zend_object object;
|
|
zend_uint refcount;
|
|
} obj;
|
|
struct {
|
|
int next;
|
|
} free_list;
|
|
} bucket;
|
|
} zend_object_bucket;
|
|
|
|
typedef struct _zend_objects {
|
|
zend_object_bucket *object_buckets;
|
|
zend_uint top;
|
|
zend_uint size;
|
|
int free_list_head;
|
|
} zend_objects;
|
|
|
|
void zend_objects_init(zend_objects *objects, zend_uint init_size);
|
|
void zend_objects_call_destructors(zend_objects *objects TSRMLS_DC);
|
|
void zend_objects_destroy(zend_objects *objects);
|
|
zend_object_value zend_objects_new(zend_object **object, zend_class_entry *class_type);
|
|
|
|
zend_object *zend_objects_get_address(zval *object);
|
|
|
|
void zend_objects_add_ref(zval *object TSRMLS_DC);
|
|
void zend_objects_del_ref(zval *object TSRMLS_DC);
|
|
void zend_objects_delete_obj(zval *object TSRMLS_DC);
|
|
zend_object_value zend_objects_clone_obj(zval *object TSRMLS_DC);
|
|
|
|
#endif /* ZEND_OBJECTS_H */
|