2001-08-07 03:17:33 +00:00
|
|
|
#ifndef ZEND_OBJECTS_H
|
|
|
|
#define ZEND_OBJECTS_H
|
|
|
|
|
|
|
|
#include "zend.h"
|
|
|
|
|
|
|
|
typedef struct _zend_object_bucket {
|
|
|
|
zend_bool valid;
|
2001-12-27 14:35:09 +00:00
|
|
|
zend_bool constructor_called;
|
2001-08-07 03:17:33 +00:00
|
|
|
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);
|
2002-01-25 12:55:03 +00:00
|
|
|
void zend_objects_call_destructors(zend_objects *objects TSRMLS_DC);
|
2001-08-07 03:17:33 +00:00
|
|
|
void zend_objects_destroy(zend_objects *objects);
|
2001-08-11 18:04:07 +00:00
|
|
|
zend_object_value zend_objects_new(zend_object **object, zend_class_entry *class_type);
|
2002-02-07 14:08:43 +00:00
|
|
|
|
|
|
|
zend_object *zend_objects_get_address(zval *object);
|
|
|
|
|
|
|
|
void zend_objects_add_ref(zval *object);
|
|
|
|
void zend_objects_del_ref(zval *object);
|
|
|
|
void zend_objects_delete_obj(zval *object);
|
|
|
|
zend_object_value zend_objects_clone_obj(zval *object);
|
|
|
|
|
|
|
|
#define Z_GET_OBJ(object_zval) zend_objects_get_address(object_zval)
|
2001-08-07 03:17:33 +00:00
|
|
|
|
2001-11-05 00:17:28 +00:00
|
|
|
#endif /* ZEND_OBJECTS_H */
|