19#ifndef ZEND_LAZY_OBJECT_H
20#define ZEND_LAZY_OBJECT_H
25#define ZEND_LAZY_OBJECT_STRATEGY_PROXY (1<<0)
28#define ZEND_LAZY_OBJECT_STRATEGY_GHOST (1<<1)
31#define ZEND_LAZY_OBJECT_INITIALIZED (1<<2)
34#define ZEND_LAZY_OBJECT_SKIP_INITIALIZATION_ON_SERIALIZE (1<<3)
37#define ZEND_LAZY_OBJECT_SKIP_DESTRUCTOR (1<<4)
39#define ZEND_LAZY_OBJECT_USER_MASK ( \
40 ZEND_LAZY_OBJECT_SKIP_INITIALIZATION_ON_SERIALIZE | \
41 ZEND_LAZY_OBJECT_SKIP_DESTRUCTOR \
44#define ZEND_LAZY_OBJECT_STRATEGY_MASK ( \
45 ZEND_LAZY_OBJECT_STRATEGY_PROXY | \
46 ZEND_LAZY_OBJECT_STRATEGY_GHOST \
100 return zend_object_is_lazy(obj);
103static inline bool zend_lazy_object_initialize_on_serialize(
zend_object *obj)
struct _zend_fcall_info_cache zend_fcall_info_cache
struct _zend_fcall_info zend_fcall_info
struct _zend_property_info zend_property_info
HashTable * zend_lazy_object_debug_info(zend_object *object, int *is_temp)
ZEND_API bool zend_class_can_be_lazy(zend_class_entry *ce)
ZEND_API zend_object * zend_lazy_object_mark_as_initialized(zend_object *obj)
uint8_t zend_lazy_object_flags_t
#define ZEND_LAZY_OBJECT_SKIP_INITIALIZATION_ON_SERIALIZE
zend_object * zend_lazy_object_get_instance(zend_object *obj)
HashTable * zend_lazy_object_get_gc(zend_object *zobj, zval **table, int *n)
zend_lazy_object_flags_t zend_lazy_object_get_flags(zend_object *obj)
ZEND_API zend_object * zend_lazy_object_init(zend_object *obj)
ZEND_API zend_property_info * zend_lazy_object_get_property_info_for_slot(zend_object *obj, zval *slot)
struct _zend_lazy_objects_store zend_lazy_objects_store
ZEND_API zend_object * zend_object_make_lazy(zend_object *obj, zend_class_entry *class_type, zval *initializer_zv, zend_fcall_info_cache *initializer_fcc, zend_lazy_object_flags_t flags)
void zend_lazy_object_realize(zend_object *obj)
ZEND_API HashTable * zend_lazy_object_get_properties(zend_object *object)
bool zend_lazy_object_decr_lazy_props(zend_object *obj)
void zend_lazy_objects_init(zend_lazy_objects_store *store)
zval * zend_lazy_object_get_initializer_zv(zend_object *obj)
zend_object * zend_lazy_object_clone(zend_object *old_obj)
void zend_lazy_object_del_info(zend_object *obj)
void zend_lazy_objects_destroy(zend_lazy_objects_store *store)
#define zend_always_inline
struct _zend_class_entry zend_class_entry
struct _zend_object zend_object
#define IS_OBJ_LAZY_PROXY
struct _zend_array HashTable
#define OBJ_EXTRA_FLAGS(obj)
#define IS_OBJ_LAZY_UNINITIALIZED