php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_types.h File Reference
#include "zend_portability.h"
#include "zend_long.h"
#include <stdbool.h>
#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  zend_type
 
struct  zend_type_list
 
union  _zend_value
 
struct  _zval_struct
 
struct  _zend_refcounted_h
 
struct  _zend_refcounted
 
struct  _zend_string
 
struct  _Bucket
 
struct  _zend_array
 
struct  _HashTableIterator
 
struct  _zend_object
 
struct  _zend_resource
 
struct  zend_property_info_list
 
union  zend_property_info_source_list
 
struct  _zend_reference
 
struct  _zend_ast_ref
 

Macros

#define ZEND_ENDIAN_LOHI(lo, hi)
 
#define ZEND_ENDIAN_LOHI_3(lo, mi, hi)
 
#define ZEND_ENDIAN_LOHI_4(a, b, c, d)
 
#define ZEND_ENDIAN_LOHI_C(lo, hi)
 
#define ZEND_ENDIAN_LOHI_C_3(lo, mi, hi)
 
#define ZEND_ENDIAN_LOHI_C_4(a, b, c, d)
 
#define ZEND_SIZE_MAX   SIZE_MAX
 
#define ZEND_TLS   static
 
#define ZEND_EXT_TLS
 
#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT   25
 
#define _ZEND_TYPE_MASK   ((1u << 25) - 1)
 
#define _ZEND_TYPE_NAME_BIT   (1u << 24)
 
#define _ZEND_TYPE_LITERAL_NAME_BIT   (1u << 23)
 
#define _ZEND_TYPE_LIST_BIT   (1u << 22)
 
#define _ZEND_TYPE_KIND_MASK   (_ZEND_TYPE_LIST_BIT|_ZEND_TYPE_NAME_BIT|_ZEND_TYPE_LITERAL_NAME_BIT)
 
#define _ZEND_TYPE_ITERABLE_BIT   (1u << 21)
 
#define _ZEND_TYPE_ARENA_BIT   (1u << 20)
 
#define _ZEND_TYPE_INTERSECTION_BIT   (1u << 19)
 
#define _ZEND_TYPE_UNION_BIT   (1u << 18)
 
#define _ZEND_TYPE_MAY_BE_MASK   ((1u << 18) - 1)
 
#define _ZEND_TYPE_NULLABLE_BIT   0x2u
 
#define ZEND_TYPE_IS_SET(t)
 
#define ZEND_TYPE_IS_COMPLEX(t)
 
#define ZEND_TYPE_HAS_NAME(t)
 
#define ZEND_TYPE_HAS_LITERAL_NAME(t)
 
#define ZEND_TYPE_HAS_LIST(t)
 
#define ZEND_TYPE_IS_ITERABLE_FALLBACK(t)
 
#define ZEND_TYPE_IS_INTERSECTION(t)
 
#define ZEND_TYPE_IS_UNION(t)
 
#define ZEND_TYPE_USES_ARENA(t)
 
#define ZEND_TYPE_IS_ONLY_MASK(t)
 
#define ZEND_TYPE_NAME(t)
 
#define ZEND_TYPE_LITERAL_NAME(t)
 
#define ZEND_TYPE_LIST(t)
 
#define ZEND_TYPE_LIST_SIZE(num_types)
 
#define ZEND_TYPE_LIST_FOREACH(list, type_ptr)
 
#define ZEND_TYPE_LIST_FOREACH_END()
 
#define ZEND_TYPE_FOREACH(type, type_ptr)
 
#define ZEND_TYPE_FOREACH_END()
 
#define ZEND_TYPE_SET_PTR(t, _ptr)
 
#define ZEND_TYPE_SET_PTR_AND_KIND(t, _ptr, kind_bit)
 
#define ZEND_TYPE_SET_LIST(t, list)
 
#define ZEND_TYPE_FULL_MASK(t)
 
#define ZEND_TYPE_PURE_MASK(t)
 
#define ZEND_TYPE_FULL_MASK_WITHOUT_NULL(t)
 
#define ZEND_TYPE_PURE_MASK_WITHOUT_NULL(t)
 
#define ZEND_TYPE_CONTAINS_CODE(t, code)
 
#define ZEND_TYPE_ALLOW_NULL(t)
 
#define _ZEND_TYPE_PREFIX
 
#define ZEND_TYPE_INIT_NONE(extra_flags)
 
#define ZEND_TYPE_INIT_MASK(_type_mask)
 
#define ZEND_TYPE_INIT_CODE(code, allow_null, extra_flags)
 
#define ZEND_TYPE_INIT_PTR(ptr, type_kind, allow_null, extra_flags)
 
#define ZEND_TYPE_INIT_PTR_MASK(ptr, type_mask)
 
#define ZEND_TYPE_INIT_UNION(ptr, extra_flags)
 
#define ZEND_TYPE_INIT_INTERSECTION(ptr, extra_flags)
 
#define ZEND_TYPE_INIT_CLASS(class_name, allow_null, extra_flags)
 
#define ZEND_TYPE_INIT_CLASS_MASK(class_name, type_mask)
 
#define ZEND_TYPE_INIT_CLASS_CONST(class_name, allow_null, extra_flags)
 
#define ZEND_TYPE_INIT_CLASS_CONST_MASK(class_name, type_mask)
 
#define HT_INVALID_IDX   ((uint32_t) -1)
 
#define HT_MIN_MASK   ((uint32_t) -2)
 
#define HT_MIN_SIZE   8
 
#define HT_HASH_EX(data, idx)
 
#define HT_HASH(ht, idx)
 
#define HT_SIZE_TO_MASK(nTableSize)
 
#define HT_HASH_SIZE(nTableMask)
 
#define HT_DATA_SIZE(nTableSize)
 
#define HT_SIZE_EX(nTableSize, nTableMask)
 
#define HT_SIZE(ht)
 
#define HT_USED_SIZE(ht)
 
#define HT_PACKED_DATA_SIZE(nTableSize)
 
#define HT_PACKED_SIZE_EX(nTableSize, nTableMask)
 
#define HT_PACKED_SIZE(ht)
 
#define HT_PACKED_USED_SIZE(ht)
 
#define HT_HASH_RESET(ht)
 
#define HT_HASH_RESET_PACKED(ht)
 
#define HT_HASH_TO_BUCKET(ht, idx)
 
#define HT_SET_DATA_ADDR(ht, ptr)
 
#define HT_GET_DATA_ADDR(ht)
 
#define ZEND_PROPERTY_INFO_SOURCE_FROM_LIST(list)
 
#define ZEND_PROPERTY_INFO_SOURCE_TO_LIST(list)
 
#define ZEND_PROPERTY_INFO_SOURCE_IS_LIST(list)
 
#define IS_UNDEF   0
 
#define IS_NULL   1
 
#define IS_FALSE   2
 
#define IS_TRUE   3
 
#define IS_LONG   4
 
#define IS_DOUBLE   5
 
#define IS_STRING   6
 
#define IS_ARRAY   7
 
#define IS_OBJECT   8
 
#define IS_RESOURCE   9
 
#define IS_REFERENCE   10
 
#define IS_CONSTANT_AST   11 /* Constant expressions */
 
#define IS_CALLABLE   12
 
#define IS_ITERABLE   13
 
#define IS_VOID   14
 
#define IS_STATIC   15
 
#define IS_MIXED   16
 
#define IS_NEVER   17
 
#define IS_INDIRECT   12
 
#define IS_PTR   13
 
#define IS_ALIAS_PTR   14
 
#define _IS_ERROR   15
 
#define _IS_BOOL   18
 
#define _IS_NUMBER   19
 
#define ZEND_GUARD_PROPERTY_GET   (1<<0)
 
#define ZEND_GUARD_PROPERTY_SET   (1<<1)
 
#define ZEND_GUARD_PROPERTY_UNSET   (1<<2)
 
#define ZEND_GUARD_PROPERTY_ISSET   (1<<3)
 
#define ZEND_GUARD_PROPERTY_HOOK   (1<<4)
 
#define ZEND_GUARD_PROPERTY_MASK   31
 
#define ZEND_GUARD_RECURSION_DEBUG   (1<<5)
 
#define ZEND_GUARD_RECURSION_EXPORT   (1<<6)
 
#define ZEND_GUARD_RECURSION_JSON   (1<<7)
 
#define ZEND_GUARD_RECURSION_TYPE(t)
 
#define ZEND_GUARD_IS_RECURSIVE(pg, t)
 
#define ZEND_GUARD_PROTECT_RECURSION(pg, t)
 
#define ZEND_GUARD_UNPROTECT_RECURSION(pg, t)
 
#define ZEND_SAME_FAKE_TYPE(faketype, realtype)
 
#define Z_TYPE(zval)
 
#define Z_TYPE_P(zval_p)
 
#define Z_TYPE_FLAGS(zval)
 
#define Z_TYPE_FLAGS_P(zval_p)
 
#define Z_TYPE_EXTRA(zval)
 
#define Z_TYPE_EXTRA_P(zval_p)
 
#define Z_TYPE_INFO(zval)
 
#define Z_TYPE_INFO_P(zval_p)
 
#define Z_NEXT(zval)
 
#define Z_NEXT_P(zval_p)
 
#define Z_CACHE_SLOT(zval)
 
#define Z_CACHE_SLOT_P(zval_p)
 
#define Z_LINENO(zval)
 
#define Z_LINENO_P(zval_p)
 
#define Z_OPLINE_NUM(zval)
 
#define Z_OPLINE_NUM_P(zval_p)
 
#define Z_FE_POS(zval)
 
#define Z_FE_POS_P(zval_p)
 
#define Z_FE_ITER(zval)
 
#define Z_FE_ITER_P(zval_p)
 
#define Z_GUARD(zval)
 
#define Z_GUARD_P(zval_p)
 
#define Z_CONSTANT_FLAGS(zval)
 
#define Z_CONSTANT_FLAGS_P(zval_p)
 
#define Z_EXTRA(zval)
 
#define Z_EXTRA_P(zval_p)
 
#define Z_COUNTED(zval)
 
#define Z_COUNTED_P(zval_p)
 
#define Z_TYPE_MASK   0xff
 
#define Z_TYPE_FLAGS_MASK   0xff00
 
#define Z_TYPE_FLAGS_SHIFT   8
 
#define Z_TYPE_INFO_EXTRA_SHIFT   16
 
#define GC_REFCOUNT(p)
 
#define GC_SET_REFCOUNT(p, rc)
 
#define GC_ADDREF(p)
 
#define GC_DELREF(p)
 
#define GC_ADDREF_EX(p, rc)
 
#define GC_DELREF_EX(p, rc)
 
#define GC_TRY_ADDREF(p)
 
#define GC_TRY_DELREF(p)
 
#define GC_DTOR(p)
 
#define GC_DTOR_NO_REF(p)
 
#define GC_TYPE_MASK   0x0000000f
 
#define GC_FLAGS_MASK   0x000003f0
 
#define GC_INFO_MASK   0xfffffc00
 
#define GC_FLAGS_SHIFT   0
 
#define GC_INFO_SHIFT   10
 
#define GC_TYPE_INFO(p)
 
#define GC_TYPE(p)
 
#define GC_FLAGS(p)
 
#define GC_INFO(p)
 
#define GC_ADD_FLAGS(p, flags)
 
#define GC_DEL_FLAGS(p, flags)
 
#define Z_GC_TYPE(zval)
 
#define Z_GC_TYPE_P(zval_p)
 
#define Z_GC_FLAGS(zval)
 
#define Z_GC_FLAGS_P(zval_p)
 
#define Z_GC_INFO(zval)
 
#define Z_GC_INFO_P(zval_p)
 
#define Z_GC_TYPE_INFO(zval)
 
#define Z_GC_TYPE_INFO_P(zval_p)
 
#define GC_NOT_COLLECTABLE   (1<<4)
 
#define GC_PROTECTED   (1<<5) /* used for recursion detection */
 
#define GC_IMMUTABLE   (1<<6) /* can't be changed in place */
 
#define GC_PERSISTENT   (1<<7) /* allocated using malloc */
 
#define GC_PERSISTENT_LOCAL   (1<<8) /* persistent, but thread-local */
 
#define GC_NULL   (IS_NULL | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
 
#define GC_STRING   (IS_STRING | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
 
#define GC_ARRAY   IS_ARRAY
 
#define GC_OBJECT   IS_OBJECT
 
#define GC_RESOURCE   (IS_RESOURCE | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
 
#define GC_REFERENCE   (IS_REFERENCE | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
 
#define GC_CONSTANT_AST   (IS_CONSTANT_AST | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))
 
#define IS_TYPE_REFCOUNTED   (1<<0)
 
#define IS_TYPE_COLLECTABLE   (1<<1)
 
#define Z_TYPE_INFO_REFCOUNTED(t)
 
#define IS_INTERNED_STRING_EX   IS_STRING
 
#define IS_STRING_EX   (IS_STRING | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
 
#define IS_ARRAY_EX   (IS_ARRAY | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
 
#define IS_OBJECT_EX   (IS_OBJECT | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT) | (IS_TYPE_COLLECTABLE << Z_TYPE_FLAGS_SHIFT))
 
#define IS_RESOURCE_EX   (IS_RESOURCE | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
 
#define IS_REFERENCE_EX   (IS_REFERENCE | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
 
#define IS_CONSTANT_AST_EX   (IS_CONSTANT_AST | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))
 
#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED /* refcount is a map_ptr offset of class_entry */
 
#define IS_STR_INTERNED   GC_IMMUTABLE /* interned string */
 
#define IS_STR_PERSISTENT   GC_PERSISTENT /* allocated using malloc */
 
#define IS_STR_PERMANENT   (1<<8) /* relives request boundary */
 
#define IS_STR_VALID_UTF8   (1<<9) /* valid UTF-8 according to PCRE */
 
#define IS_ARRAY_IMMUTABLE   GC_IMMUTABLE
 
#define IS_ARRAY_PERSISTENT   GC_PERSISTENT
 
#define IS_OBJ_WEAKLY_REFERENCED   GC_PERSISTENT
 
#define IS_OBJ_DESTRUCTOR_CALLED   (1<<8)
 
#define IS_OBJ_FREE_CALLED   (1<<9)
 
#define OBJ_FLAGS(obj)
 
#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */
 
#define IS_OBJ_LAZY_PROXY   (1U<<30) /* Virtual proxy (may be initialized) */
 
#define OBJ_EXTRA_FLAGS(obj)
 
#define ZSTR_HAS_CE_CACHE(s)
 
#define ZSTR_GET_CE_CACHE(s)
 
#define ZSTR_SET_CE_CACHE(s, ce)
 
#define ZSTR_VALID_CE_CACHE(s)
 
#define ZSTR_GET_CE_CACHE_EX(s, validate)
 
#define ZSTR_SET_CE_CACHE_EX(s, ce, validate)
 
#define GET_CE_CACHE(ce_cache)
 
#define SET_CE_CACHE(ce_cache, ce)
 
#define GC_IS_RECURSIVE(p)
 
#define GC_PROTECT_RECURSION(p)
 
#define GC_UNPROTECT_RECURSION(p)
 
#define GC_TRY_PROTECT_RECURSION(p)
 
#define GC_TRY_UNPROTECT_RECURSION(p)
 
#define Z_IS_RECURSIVE(zval)
 
#define Z_PROTECT_RECURSION(zval)
 
#define Z_UNPROTECT_RECURSION(zval)
 
#define Z_IS_RECURSIVE_P(zv)
 
#define Z_PROTECT_RECURSION_P(zv)
 
#define Z_UNPROTECT_RECURSION_P(zv)
 
#define ZEND_GUARD_OR_GC_IS_RECURSIVE(pg, t, zobj)
 
#define ZEND_GUARD_OR_GC_PROTECT_RECURSION(pg, t, zobj)
 
#define ZEND_GUARD_OR_GC_UNPROTECT_RECURSION(pg, t, zobj)
 
#define Z_CONSTANT(zval)
 
#define Z_CONSTANT_P(zval_p)
 
#define Z_REFCOUNTED(zval)
 
#define Z_REFCOUNTED_P(zval_p)
 
#define Z_COLLECTABLE(zval)
 
#define Z_COLLECTABLE_P(zval_p)
 
#define Z_COPYABLE(zval)
 
#define Z_COPYABLE_P(zval_p)
 
#define Z_IMMUTABLE(zval)
 
#define Z_IMMUTABLE_P(zval_p)
 
#define Z_OPT_IMMUTABLE(zval)
 
#define Z_OPT_IMMUTABLE_P(zval_p)
 
#define Z_OPT_TYPE(zval)
 
#define Z_OPT_TYPE_P(zval_p)
 
#define Z_OPT_CONSTANT(zval)
 
#define Z_OPT_CONSTANT_P(zval_p)
 
#define Z_OPT_REFCOUNTED(zval)
 
#define Z_OPT_REFCOUNTED_P(zval_p)
 
#define Z_OPT_COPYABLE(zval)
 
#define Z_OPT_COPYABLE_P(zval_p)
 
#define Z_OPT_ISREF(zval)
 
#define Z_OPT_ISREF_P(zval_p)
 
#define Z_ISREF(zval)
 
#define Z_ISREF_P(zval_p)
 
#define Z_ISUNDEF(zval)
 
#define Z_ISUNDEF_P(zval_p)
 
#define Z_ISNULL(zval)
 
#define Z_ISNULL_P(zval_p)
 
#define Z_ISERROR(zval)
 
#define Z_ISERROR_P(zval_p)
 
#define Z_LVAL(zval)
 
#define Z_LVAL_P(zval_p)
 
#define Z_DVAL(zval)
 
#define Z_DVAL_P(zval_p)
 
#define Z_STR(zval)
 
#define Z_STR_P(zval_p)
 
#define Z_STRVAL(zval)
 
#define Z_STRVAL_P(zval_p)
 
#define Z_STRLEN(zval)
 
#define Z_STRLEN_P(zval_p)
 
#define Z_STRHASH(zval)
 
#define Z_STRHASH_P(zval_p)
 
#define Z_ARR(zval)
 
#define Z_ARR_P(zval_p)
 
#define Z_ARRVAL(zval)
 
#define Z_ARRVAL_P(zval_p)
 
#define Z_OBJ(zval)
 
#define Z_OBJ_P(zval_p)
 
#define Z_OBJ_HT(zval)
 
#define Z_OBJ_HT_P(zval_p)
 
#define Z_OBJ_HANDLER(zval, hf)
 
#define Z_OBJ_HANDLER_P(zv_p, hf)
 
#define Z_OBJ_HANDLE(zval)
 
#define Z_OBJ_HANDLE_P(zval_p)
 
#define Z_OBJCE(zval)
 
#define Z_OBJCE_P(zval_p)
 
#define Z_OBJPROP(zval)
 
#define Z_OBJPROP_P(zval_p)
 
#define Z_RES(zval)
 
#define Z_RES_P(zval_p)
 
#define Z_RES_HANDLE(zval)
 
#define Z_RES_HANDLE_P(zval_p)
 
#define Z_RES_TYPE(zval)
 
#define Z_RES_TYPE_P(zval_p)
 
#define Z_RES_VAL(zval)
 
#define Z_RES_VAL_P(zval_p)
 
#define Z_REF(zval)
 
#define Z_REF_P(zval_p)
 
#define Z_REFVAL(zval)
 
#define Z_REFVAL_P(zval_p)
 
#define Z_AST(zval)
 
#define Z_AST_P(zval_p)
 
#define GC_AST(p)
 
#define Z_ASTVAL(zval)
 
#define Z_ASTVAL_P(zval_p)
 
#define Z_INDIRECT(zval)
 
#define Z_INDIRECT_P(zval_p)
 
#define Z_CE(zval)
 
#define Z_CE_P(zval_p)
 
#define Z_FUNC(zval)
 
#define Z_FUNC_P(zval_p)
 
#define Z_PTR(zval)
 
#define Z_PTR_P(zval_p)
 
#define ZVAL_UNDEF(z)
 
#define ZVAL_NULL(z)
 
#define ZVAL_FALSE(z)
 
#define ZVAL_TRUE(z)
 
#define ZVAL_BOOL(z, b)
 
#define ZVAL_LONG(z, l)
 
#define ZVAL_DOUBLE(z, d)
 
#define ZVAL_STR(z, s)
 
#define ZVAL_INTERNED_STR(z, s)
 
#define ZVAL_NEW_STR(z, s)
 
#define ZVAL_STR_COPY(z, s)
 
#define ZVAL_ARR(z, a)
 
#define ZVAL_NEW_PERSISTENT_ARR(z)
 
#define ZVAL_OBJ(z, o)
 
#define ZVAL_OBJ_COPY(z, o)
 
#define ZVAL_RES(z, r)
 
#define ZVAL_NEW_RES(z, h, p, t)
 
#define ZVAL_NEW_PERSISTENT_RES(z, h, p, t)
 
#define ZVAL_REF(z, r)
 
#define ZVAL_NEW_EMPTY_REF(z)
 
#define ZVAL_NEW_REF(z, r)
 
#define ZVAL_MAKE_REF_EX(z, refcount)
 
#define ZVAL_NEW_PERSISTENT_REF(z, r)
 
#define ZVAL_AST(z, ast)
 
#define ZVAL_INDIRECT(z, v)
 
#define ZVAL_PTR(z, p)
 
#define ZVAL_FUNC(z, f)
 
#define ZVAL_CE(z, c)
 
#define ZVAL_ALIAS_PTR(z, p)
 
#define ZVAL_ERROR(z)
 
#define Z_REFCOUNT_P(pz)
 
#define Z_SET_REFCOUNT_P(pz, rc)
 
#define Z_ADDREF_P(pz)
 
#define Z_DELREF_P(pz)
 
#define Z_REFCOUNT(z)
 
#define Z_SET_REFCOUNT(z, rc)
 
#define Z_ADDREF(z)
 
#define Z_DELREF(z)
 
#define Z_TRY_ADDREF_P(pz)
 
#define Z_TRY_DELREF_P(pz)
 
#define Z_TRY_ADDREF(z)
 
#define Z_TRY_DELREF(z)
 
#define ZEND_RC_DEBUG   0
 
#define ZEND_RC_MOD_CHECK(p)
 
#define GC_MAKE_PERSISTENT_LOCAL(p)
 
#define ZVAL_COPY_VALUE(z, v)
 
#define ZVAL_COPY(z, v)
 
#define ZVAL_DUP(z, v)
 
#define ZVAL_COPY_OR_DUP(z, v)
 
#define ZVAL_DEREF(z)
 
#define ZVAL_DEINDIRECT(z)
 
#define ZVAL_OPT_DEREF(z)
 
#define ZVAL_MAKE_REF(zv)
 
#define ZVAL_UNREF(z)
 
#define ZVAL_COPY_DEREF(z, v)
 
#define SEPARATE_STRING(zv)
 
#define SEPARATE_ARRAY(zv)
 
#define SEPARATE_ZVAL_NOREF(zv)
 
#define SEPARATE_ZVAL(zv)
 
#define IS_PROP_UNINIT   (1<<0)
 
#define IS_PROP_REINITABLE   (1<<1) /* It has impact only on readonly properties */
 
#define IS_PROP_LAZY   (1<<2)
 
#define Z_PROP_FLAG_P(z)
 
#define ZVAL_COPY_VALUE_PROP(z, v)
 
#define ZVAL_COPY_PROP(z, v)
 
#define ZVAL_COPY_OR_DUP_PROP(z, v)
 

Typedefs

typedef unsigned char zend_uchar
 
typedef ZEND_RESULT_CODE zend_result
 
typedef struct _zend_object_handlers zend_object_handlers
 
typedef struct _zend_execute_data zend_execute_data
 
typedef struct _zend_refcounted zend_refcounted
 
typedef struct _zend_resource zend_resource
 
typedef struct _zend_reference zend_reference
 
typedef struct _zend_ast_ref zend_ast_ref
 
typedef struct _zend_ast zend_ast
 
typedef int(* compare_func_t) (const void *, const void *)
 
typedef void(* swap_func_t) (void *, void *)
 
typedef void(* sort_func_t) (void *, size_t, size_t, compare_func_t, swap_func_t)
 
typedef void(* dtor_func_t) (zval *pDest)
 
typedef void(* copy_ctor_func_t) (zval *pElement)
 
typedef union _zend_value zend_value
 
typedef struct _zend_refcounted_h zend_refcounted_h
 
typedef struct _Bucket Bucket
 
typedef struct _zend_array HashTable
 
typedef uint32_t HashPosition
 
typedef struct _HashTableIterator HashTableIterator
 

Enumerations

enum  ZEND_RESULT_CODE { SUCCESS = 0 , FAILURE = -1 }
 

Macro Definition Documentation

◆ _IS_BOOL

#define _IS_BOOL   18

Definition at line 629 of file zend_types.h.

◆ _IS_ERROR

#define _IS_ERROR   15

Definition at line 626 of file zend_types.h.

◆ _IS_NUMBER

#define _IS_NUMBER   19

Definition at line 630 of file zend_types.h.

◆ _ZEND_TYPE_ARENA_BIT

#define _ZEND_TYPE_ARENA_BIT   (1u << 20)

Definition at line 156 of file zend_types.h.

◆ _ZEND_TYPE_EXTRA_FLAGS_SHIFT

#define _ZEND_TYPE_EXTRA_FLAGS_SHIFT   25

Definition at line 145 of file zend_types.h.

◆ _ZEND_TYPE_INTERSECTION_BIT

#define _ZEND_TYPE_INTERSECTION_BIT   (1u << 19)

Definition at line 158 of file zend_types.h.

◆ _ZEND_TYPE_ITERABLE_BIT

#define _ZEND_TYPE_ITERABLE_BIT   (1u << 21)

Definition at line 154 of file zend_types.h.

◆ _ZEND_TYPE_KIND_MASK

Definition at line 152 of file zend_types.h.

◆ _ZEND_TYPE_LIST_BIT

#define _ZEND_TYPE_LIST_BIT   (1u << 22)

Definition at line 151 of file zend_types.h.

◆ _ZEND_TYPE_LITERAL_NAME_BIT

#define _ZEND_TYPE_LITERAL_NAME_BIT   (1u << 23)

Definition at line 150 of file zend_types.h.

◆ _ZEND_TYPE_MASK

#define _ZEND_TYPE_MASK   ((1u << 25) - 1)

Definition at line 146 of file zend_types.h.

◆ _ZEND_TYPE_MAY_BE_MASK

#define _ZEND_TYPE_MAY_BE_MASK   ((1u << 18) - 1)

Definition at line 162 of file zend_types.h.

◆ _ZEND_TYPE_NAME_BIT

#define _ZEND_TYPE_NAME_BIT   (1u << 24)

Definition at line 148 of file zend_types.h.

◆ _ZEND_TYPE_NULLABLE_BIT

#define _ZEND_TYPE_NULLABLE_BIT   0x2u

Definition at line 164 of file zend_types.h.

◆ _ZEND_TYPE_PREFIX

#define _ZEND_TYPE_PREFIX

Definition at line 277 of file zend_types.h.

◆ _ZEND_TYPE_UNION_BIT

#define _ZEND_TYPE_UNION_BIT   (1u << 18)

Definition at line 160 of file zend_types.h.

◆ GC_ADD_FLAGS

#define GC_ADD_FLAGS ( p,
flags )
Value:
do { \
GC_TYPE_INFO(p) |= (flags) << GC_FLAGS_SHIFT; \
} while (0)
p
Definition session.c:1105
#define GC_FLAGS_SHIFT
Definition zend_types.h:739

Definition at line 759 of file zend_types.h.

◆ GC_ADDREF

#define GC_ADDREF ( p)
Value:
zend_gc_addref(&(p)->gc)

Definition at line 709 of file zend_types.h.

◆ GC_ADDREF_EX

#define GC_ADDREF_EX ( p,
rc )
Value:
zend_gc_addref_ex(&(p)->gc, rc)

Definition at line 711 of file zend_types.h.

◆ GC_ARRAY

#define GC_ARRAY   IS_ARRAY

Definition at line 786 of file zend_types.h.

◆ GC_AST

#define GC_AST ( p)
Value:
((zend_ast*)(((char*)p) + sizeof(zend_ast_ref)))
struct _zend_ast_ref zend_ast_ref
Definition zend_types.h:101
struct _zend_ast zend_ast
Definition zend_types.h:102

Definition at line 1028 of file zend_types.h.

◆ GC_CONSTANT_AST

#define GC_CONSTANT_AST   (IS_CONSTANT_AST | (GC_NOT_COLLECTABLE << GC_FLAGS_SHIFT))

Definition at line 790 of file zend_types.h.

◆ GC_DEL_FLAGS

#define GC_DEL_FLAGS ( p,
flags )
Value:
do { \
GC_TYPE_INFO(p) &= ~((flags) << GC_FLAGS_SHIFT); \
} while (0)

Definition at line 762 of file zend_types.h.

◆ GC_DELREF

#define GC_DELREF ( p)
Value:
zend_gc_delref(&(p)->gc)

Definition at line 710 of file zend_types.h.

◆ GC_DELREF_EX

#define GC_DELREF_EX ( p,
rc )
Value:
zend_gc_delref_ex(&(p)->gc, rc)

Definition at line 712 of file zend_types.h.

◆ GC_DTOR

#define GC_DTOR ( p)
Value:
do { \
zend_refcounted_h *_p = &(p)->gc; \
if (zend_gc_delref(_p) == 0) { \
rc_dtor_func((zend_refcounted *)_p); \
} else { \
gc_check_possible_root((zend_refcounted *)_p); \
} \
} while (0)
struct _zend_refcounted zend_refcounted
Definition zend_types.h:95
struct _zend_refcounted_h zend_refcounted_h

Definition at line 716 of file zend_types.h.

◆ GC_DTOR_NO_REF

#define GC_DTOR_NO_REF ( p)
Value:
do { \
zend_refcounted_h *_p = &(p)->gc; \
if (zend_gc_delref(_p) == 0) { \
rc_dtor_func((zend_refcounted *)_p); \
} else { \
gc_check_possible_root_no_ref((zend_refcounted *)_p); \
} \
} while (0)

Definition at line 726 of file zend_types.h.

◆ GC_FLAGS

#define GC_FLAGS ( p)
Value:
zval_gc_flags(GC_TYPE_INFO(p))
#define GC_TYPE_INFO(p)
Definition zend_types.h:754

Definition at line 756 of file zend_types.h.

◆ GC_FLAGS_MASK

#define GC_FLAGS_MASK   0x000003f0

Definition at line 737 of file zend_types.h.

◆ GC_FLAGS_SHIFT

#define GC_FLAGS_SHIFT   0

Definition at line 739 of file zend_types.h.

◆ GC_IMMUTABLE

#define GC_IMMUTABLE   (1<<6) /* can't be changed in place */

Definition at line 780 of file zend_types.h.

◆ GC_INFO

#define GC_INFO ( p)
Value:
zval_gc_info(GC_TYPE_INFO(p))

Definition at line 757 of file zend_types.h.

◆ GC_INFO_MASK

#define GC_INFO_MASK   0xfffffc00

Definition at line 738 of file zend_types.h.

◆ GC_INFO_SHIFT

#define GC_INFO_SHIFT   10

Definition at line 740 of file zend_types.h.

◆ GC_IS_RECURSIVE

#define GC_IS_RECURSIVE ( p)
Value:
#define GC_PROTECTED
Definition zend_types.h:779
#define GC_FLAGS(p)
Definition zend_types.h:756

Definition at line 865 of file zend_types.h.

◆ GC_MAKE_PERSISTENT_LOCAL

#define GC_MAKE_PERSISTENT_LOCAL ( p)
Value:
do { } while (0)

Definition at line 1313 of file zend_types.h.

◆ GC_NOT_COLLECTABLE

#define GC_NOT_COLLECTABLE   (1<<4)

Definition at line 778 of file zend_types.h.

◆ GC_NULL

Definition at line 784 of file zend_types.h.

◆ GC_OBJECT

#define GC_OBJECT   IS_OBJECT

Definition at line 787 of file zend_types.h.

◆ GC_PERSISTENT

#define GC_PERSISTENT   (1<<7) /* allocated using malloc */

Definition at line 781 of file zend_types.h.

◆ GC_PERSISTENT_LOCAL

#define GC_PERSISTENT_LOCAL   (1<<8) /* persistent, but thread-local */

Definition at line 782 of file zend_types.h.

◆ GC_PROTECT_RECURSION

#define GC_PROTECT_RECURSION ( p)
Value:
do { \
GC_ADD_FLAGS(p, GC_PROTECTED); \
} while (0)

Definition at line 868 of file zend_types.h.

◆ GC_PROTECTED

#define GC_PROTECTED   (1<<5) /* used for recursion detection */

Definition at line 779 of file zend_types.h.

◆ GC_REFCOUNT

#define GC_REFCOUNT ( p)
Value:
zend_gc_refcount(&(p)->gc)

Definition at line 707 of file zend_types.h.

◆ GC_REFERENCE

Definition at line 789 of file zend_types.h.

◆ GC_RESOURCE

Definition at line 788 of file zend_types.h.

◆ GC_SET_REFCOUNT

#define GC_SET_REFCOUNT ( p,
rc )
Value:
zend_gc_set_refcount(&(p)->gc, rc)

Definition at line 708 of file zend_types.h.

◆ GC_STRING

Definition at line 785 of file zend_types.h.

◆ GC_TRY_ADDREF

#define GC_TRY_ADDREF ( p)
Value:
zend_gc_try_addref(&(p)->gc)

Definition at line 713 of file zend_types.h.

◆ GC_TRY_DELREF

#define GC_TRY_DELREF ( p)
Value:
zend_gc_try_delref(&(p)->gc)

Definition at line 714 of file zend_types.h.

◆ GC_TRY_PROTECT_RECURSION

#define GC_TRY_PROTECT_RECURSION ( p)
Value:
do { \
} while (0)
#define GC_PROTECT_RECURSION(p)
Definition zend_types.h:868
#define GC_IMMUTABLE
Definition zend_types.h:780

Definition at line 876 of file zend_types.h.

◆ GC_TRY_UNPROTECT_RECURSION

#define GC_TRY_UNPROTECT_RECURSION ( p)
Value:
do { \
} while (0)
#define GC_UNPROTECT_RECURSION(p)
Definition zend_types.h:872

Definition at line 880 of file zend_types.h.

◆ GC_TYPE

#define GC_TYPE ( p)
Value:
zval_gc_type(GC_TYPE_INFO(p))

Definition at line 755 of file zend_types.h.

◆ GC_TYPE_INFO

#define GC_TYPE_INFO ( p)
Value:
(p)->gc.u.type_info

Definition at line 754 of file zend_types.h.

◆ GC_TYPE_MASK

#define GC_TYPE_MASK   0x0000000f

Definition at line 736 of file zend_types.h.

◆ GC_UNPROTECT_RECURSION

#define GC_UNPROTECT_RECURSION ( p)
Value:
do { \
GC_DEL_FLAGS(p, GC_PROTECTED); \
} while (0)

Definition at line 872 of file zend_types.h.

◆ GET_CE_CACHE

#define GET_CE_CACHE ( ce_cache)
Value:
#define ZEND_MAP_PTR_OFFSET2PTR(offset)
struct _zend_class_entry zend_class_entry

Definition at line 857 of file zend_types.h.

◆ HT_DATA_SIZE

#define HT_DATA_SIZE ( nTableSize)
Value:
((size_t)(nTableSize) * sizeof(Bucket))
struct _Bucket Bucket

Definition at line 470 of file zend_types.h.

◆ HT_GET_DATA_ADDR

#define HT_GET_DATA_ADDR ( ht)
Value:
((char*)((ht)->arData) - HT_HASH_SIZE((ht)->nTableMask))
HashTable * ht
Definition ffi.c:4838
#define HT_HASH_SIZE(nTableMask)
Definition zend_types.h:468

Definition at line 545 of file zend_types.h.

◆ HT_HASH

#define HT_HASH ( ht,
idx )
Value:
HT_HASH_EX((ht)->arHash, idx)
#define HT_HASH_EX(data, idx)
Definition zend_types.h:461

Definition at line 463 of file zend_types.h.

◆ HT_HASH_EX

#define HT_HASH_EX ( data,
idx )
Value:
((uint32_t*)(data))[(int32_t)(idx)]
zend_constant * data

Definition at line 461 of file zend_types.h.

◆ HT_HASH_RESET

#define HT_HASH_RESET ( ht)
Value:
memset(&HT_HASH(ht, (ht)->nTableMask), HT_INVALID_IDX, HT_HASH_SIZE((ht)->nTableMask))
memset(ptr, 0, type->size)
#define HT_HASH(ht, idx)
Definition zend_types.h:463
#define HT_INVALID_IDX
Definition zend_types.h:429

Definition at line 532 of file zend_types.h.

◆ HT_HASH_RESET_PACKED

#define HT_HASH_RESET_PACKED ( ht)
Value:
do { \
HT_HASH(ht, -2) = HT_INVALID_IDX; \
HT_HASH(ht, -1) = HT_INVALID_IDX; \
} while (0)

Definition at line 535 of file zend_types.h.

◆ HT_HASH_SIZE

#define HT_HASH_SIZE ( nTableMask)
Value:
(((size_t)-(uint32_t)(nTableMask)) * sizeof(uint32_t))

Definition at line 468 of file zend_types.h.

◆ HT_HASH_TO_BUCKET

#define HT_HASH_TO_BUCKET ( ht,
idx )
Value:
HT_HASH_TO_BUCKET_EX((ht)->arData, idx)

Definition at line 539 of file zend_types.h.

◆ HT_INVALID_IDX

#define HT_INVALID_IDX   ((uint32_t) -1)

Definition at line 429 of file zend_types.h.

◆ HT_MIN_MASK

#define HT_MIN_MASK   ((uint32_t) -2)

Definition at line 431 of file zend_types.h.

◆ HT_MIN_SIZE

#define HT_MIN_SIZE   8

Definition at line 432 of file zend_types.h.

◆ HT_PACKED_DATA_SIZE

#define HT_PACKED_DATA_SIZE ( nTableSize)
Value:
((size_t)(nTableSize) * sizeof(zval))
struct _zval_struct zval

Definition at line 478 of file zend_types.h.

◆ HT_PACKED_SIZE

#define HT_PACKED_SIZE ( ht)
Value:
HT_PACKED_SIZE_EX((ht)->nTableSize, (ht)->nTableMask)
#define HT_PACKED_SIZE_EX(nTableSize, nTableMask)
Definition zend_types.h:480

Definition at line 482 of file zend_types.h.

◆ HT_PACKED_SIZE_EX

#define HT_PACKED_SIZE_EX ( nTableSize,
nTableMask )
Value:
(HT_PACKED_DATA_SIZE((nTableSize)) + HT_HASH_SIZE((nTableMask)))
#define HT_PACKED_DATA_SIZE(nTableSize)
Definition zend_types.h:478

Definition at line 480 of file zend_types.h.

◆ HT_PACKED_USED_SIZE

#define HT_PACKED_USED_SIZE ( ht)
Value:
(HT_HASH_SIZE((ht)->nTableMask) + ((size_t)(ht)->nNumUsed * sizeof(zval)))

Definition at line 484 of file zend_types.h.

◆ HT_SET_DATA_ADDR

#define HT_SET_DATA_ADDR ( ht,
ptr )
Value:
do { \
(ht)->arData = (Bucket*)(((char*)(ptr)) + HT_HASH_SIZE((ht)->nTableMask)); \
} while (0)
void * ptr
Definition ffi.c:3814

Definition at line 542 of file zend_types.h.

◆ HT_SIZE

#define HT_SIZE ( ht)
Value:
HT_SIZE_EX((ht)->nTableSize, (ht)->nTableMask)
#define HT_SIZE_EX(nTableSize, nTableMask)
Definition zend_types.h:472

Definition at line 474 of file zend_types.h.

◆ HT_SIZE_EX

#define HT_SIZE_EX ( nTableSize,
nTableMask )
Value:
(HT_DATA_SIZE((nTableSize)) + HT_HASH_SIZE((nTableMask)))
#define HT_DATA_SIZE(nTableSize)
Definition zend_types.h:470

Definition at line 472 of file zend_types.h.

◆ HT_SIZE_TO_MASK

#define HT_SIZE_TO_MASK ( nTableSize)
Value:
((uint32_t)(-((nTableSize) + (nTableSize))))

Definition at line 466 of file zend_types.h.

◆ HT_USED_SIZE

#define HT_USED_SIZE ( ht)
Value:
(HT_HASH_SIZE((ht)->nTableMask) + ((size_t)(ht)->nNumUsed * sizeof(Bucket)))

Definition at line 476 of file zend_types.h.

◆ IS_ALIAS_PTR

#define IS_ALIAS_PTR   14

Definition at line 625 of file zend_types.h.

◆ IS_ARRAY

#define IS_ARRAY   7

Definition at line 607 of file zend_types.h.

◆ IS_ARRAY_EX

Definition at line 808 of file zend_types.h.

◆ IS_ARRAY_IMMUTABLE

#define IS_ARRAY_IMMUTABLE   GC_IMMUTABLE

Definition at line 823 of file zend_types.h.

◆ IS_ARRAY_PERSISTENT

#define IS_ARRAY_PERSISTENT   GC_PERSISTENT

Definition at line 824 of file zend_types.h.

◆ IS_CALLABLE

#define IS_CALLABLE   12

Definition at line 615 of file zend_types.h.

◆ IS_CONSTANT_AST

#define IS_CONSTANT_AST   11 /* Constant expressions */

Definition at line 611 of file zend_types.h.

◆ IS_CONSTANT_AST_EX

#define IS_CONSTANT_AST_EX   (IS_CONSTANT_AST | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))

Definition at line 813 of file zend_types.h.

◆ IS_DOUBLE

#define IS_DOUBLE   5

Definition at line 605 of file zend_types.h.

◆ IS_FALSE

#define IS_FALSE   2

Definition at line 602 of file zend_types.h.

◆ IS_INDIRECT

#define IS_INDIRECT   12

Definition at line 623 of file zend_types.h.

◆ IS_INTERNED_STRING_EX

#define IS_INTERNED_STRING_EX   IS_STRING

Definition at line 805 of file zend_types.h.

◆ IS_ITERABLE

#define IS_ITERABLE   13

Definition at line 616 of file zend_types.h.

◆ IS_LONG

#define IS_LONG   4

Definition at line 604 of file zend_types.h.

◆ IS_MIXED

#define IS_MIXED   16

Definition at line 619 of file zend_types.h.

◆ IS_NEVER

#define IS_NEVER   17

Definition at line 620 of file zend_types.h.

◆ IS_NULL

#define IS_NULL   1

Definition at line 601 of file zend_types.h.

◆ IS_OBJ_DESTRUCTOR_CALLED

#define IS_OBJ_DESTRUCTOR_CALLED   (1<<8)

Definition at line 828 of file zend_types.h.

◆ IS_OBJ_FREE_CALLED

#define IS_OBJ_FREE_CALLED   (1<<9)

Definition at line 829 of file zend_types.h.

◆ IS_OBJ_LAZY_PROXY

#define IS_OBJ_LAZY_PROXY   (1U<<30) /* Virtual proxy (may be initialized) */

Definition at line 836 of file zend_types.h.

◆ IS_OBJ_LAZY_UNINITIALIZED

#define IS_OBJ_LAZY_UNINITIALIZED   (1U<<31) /* Virtual proxy or uninitialized Ghost */

Definition at line 835 of file zend_types.h.

◆ IS_OBJ_WEAKLY_REFERENCED

#define IS_OBJ_WEAKLY_REFERENCED   GC_PERSISTENT

Definition at line 827 of file zend_types.h.

◆ IS_OBJECT

#define IS_OBJECT   8

Definition at line 608 of file zend_types.h.

◆ IS_OBJECT_EX

Definition at line 809 of file zend_types.h.

◆ IS_PROP_LAZY

#define IS_PROP_LAZY   (1<<2)

Definition at line 1567 of file zend_types.h.

◆ IS_PROP_REINITABLE

#define IS_PROP_REINITABLE   (1<<1) /* It has impact only on readonly properties */

Definition at line 1566 of file zend_types.h.

◆ IS_PROP_UNINIT

#define IS_PROP_UNINIT   (1<<0)

Definition at line 1565 of file zend_types.h.

◆ IS_PTR

#define IS_PTR   13

Definition at line 624 of file zend_types.h.

◆ IS_REFERENCE

#define IS_REFERENCE   10

Definition at line 610 of file zend_types.h.

◆ IS_REFERENCE_EX

#define IS_REFERENCE_EX   (IS_REFERENCE | (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT))

Definition at line 811 of file zend_types.h.

◆ IS_RESOURCE

#define IS_RESOURCE   9

Definition at line 609 of file zend_types.h.

◆ IS_RESOURCE_EX

Definition at line 810 of file zend_types.h.

◆ IS_STATIC

#define IS_STATIC   15

Definition at line 618 of file zend_types.h.

◆ IS_STR_CLASS_NAME_MAP_PTR

#define IS_STR_CLASS_NAME_MAP_PTR   GC_PROTECTED /* refcount is a map_ptr offset of class_entry */

Definition at line 816 of file zend_types.h.

◆ IS_STR_INTERNED

#define IS_STR_INTERNED   GC_IMMUTABLE /* interned string */

Definition at line 817 of file zend_types.h.

◆ IS_STR_PERMANENT

#define IS_STR_PERMANENT   (1<<8) /* relives request boundary */

Definition at line 819 of file zend_types.h.

◆ IS_STR_PERSISTENT

#define IS_STR_PERSISTENT   GC_PERSISTENT /* allocated using malloc */

Definition at line 818 of file zend_types.h.

◆ IS_STR_VALID_UTF8

#define IS_STR_VALID_UTF8   (1<<9) /* valid UTF-8 according to PCRE */

Definition at line 820 of file zend_types.h.

◆ IS_STRING

#define IS_STRING   6

Definition at line 606 of file zend_types.h.

◆ IS_STRING_EX

Definition at line 807 of file zend_types.h.

◆ IS_TRUE

#define IS_TRUE   3

Definition at line 603 of file zend_types.h.

◆ IS_TYPE_COLLECTABLE

#define IS_TYPE_COLLECTABLE   (1<<1)

Definition at line 794 of file zend_types.h.

◆ IS_TYPE_REFCOUNTED

#define IS_TYPE_REFCOUNTED   (1<<0)

Definition at line 793 of file zend_types.h.

◆ IS_UNDEF

#define IS_UNDEF   0

Definition at line 600 of file zend_types.h.

◆ IS_VOID

#define IS_VOID   14

Definition at line 617 of file zend_types.h.

◆ OBJ_EXTRA_FLAGS

#define OBJ_EXTRA_FLAGS ( obj)
Value:
((obj)->extra_flags)

Definition at line 838 of file zend_types.h.

◆ OBJ_FLAGS

#define OBJ_FLAGS ( obj)
Value:

Definition at line 831 of file zend_types.h.

◆ SEPARATE_ARRAY

#define SEPARATE_ARRAY ( zv)
Value:
do { \
zval *__zv = (zv); \
zend_array *_arr = Z_ARR_P(__zv); \
if (UNEXPECTED(GC_REFCOUNT(_arr) > 1)) { \
ZVAL_ARR(__zv, zend_array_dup(_arr)); \
GC_TRY_DELREF(_arr); \
} \
} while (0)
zval * zv
Definition ffi.c:3975
ZEND_API HashTable *ZEND_FASTCALL zend_array_dup(HashTable *source)
Definition zend_hash.c:2438
#define UNEXPECTED(condition)
struct _zend_array zend_array
#define GC_REFCOUNT(p)
Definition zend_types.h:707
#define Z_ARR_P(zval_p)
Definition zend_types.h:984

Definition at line 1524 of file zend_types.h.

◆ SEPARATE_STRING

#define SEPARATE_STRING ( zv)
Value:
do { \
zval *_zv = (zv); \
if (Z_REFCOUNT_P(_zv) > 1) { \
zend_string *_str = Z_STR_P(_zv); \
ZEND_ASSERT(Z_REFCOUNTED_P(_zv)); \
ZEND_ASSERT(!ZSTR_IS_INTERNED(_str)); \
ZVAL_NEW_STR(_zv, zend_string_init( \
ZSTR_VAL(_str), ZSTR_LEN(_str), 0)); \
GC_DELREF(_str); \
} \
} while (0)
struct _zend_string zend_string
#define ZSTR_IS_INTERNED(s)
Definition zend_string.h:84
#define ZSTR_VAL(zstr)
Definition zend_string.h:68
#define ZSTR_LEN(zstr)
Definition zend_string.h:69
#define Z_REFCOUNTED_P(zval_p)
Definition zend_types.h:921
#define Z_STR_P(zval_p)
Definition zend_types.h:972
#define Z_REFCOUNT_P(pz)

Definition at line 1512 of file zend_types.h.

◆ SEPARATE_ZVAL

#define SEPARATE_ZVAL ( zv)
Value:
do { \
zval *_zv = (zv); \
if (Z_ISREF_P(_zv)) { \
zend_reference *_r = Z_REF_P(_zv); \
ZVAL_COPY_VALUE(_zv, &_r->val); \
if (GC_DELREF(_r) == 0) { \
efree_size(_r, sizeof(zend_reference)); \
} else if (Z_OPT_TYPE_P(_zv) == IS_ARRAY) { \
ZVAL_ARR(_zv, zend_array_dup(Z_ARR_P(_zv)));\
break; \
} else if (Z_OPT_REFCOUNTED_P(_zv)) { \
Z_ADDREF_P(_zv); \
break; \
} \
} \
if (Z_TYPE_P(_zv) == IS_ARRAY) { \
SEPARATE_ARRAY(_zv); \
} \
} while (0)
#define Z_TYPE_P(zval_p)
Definition zend_types.h:660
#define Z_ISREF_P(zval_p)
Definition zend_types.h:954
#define Z_OPT_REFCOUNTED_P(zval_p)
Definition zend_types.h:944
#define IS_ARRAY
Definition zend_types.h:607
#define GC_DELREF(p)
Definition zend_types.h:710
#define Z_REF_P(zval_p)
struct _zend_reference zend_reference
Definition zend_types.h:100
#define Z_OPT_TYPE_P(zval_p)
Definition zend_types.h:938

Definition at line 1541 of file zend_types.h.

◆ SEPARATE_ZVAL_NOREF

#define SEPARATE_ZVAL_NOREF ( zv)
Value:
do { \
zval *_zv = (zv); \
ZEND_ASSERT(Z_TYPE_P(_zv) != IS_REFERENCE); \
if (Z_TYPE_P(_zv) == IS_ARRAY) { \
SEPARATE_ARRAY(_zv); \
} \
} while (0)
#define IS_REFERENCE
Definition zend_types.h:610

Definition at line 1533 of file zend_types.h.

◆ SET_CE_CACHE

#define SET_CE_CACHE ( ce_cache,
ce )
Value:
do { \
*((zend_class_entry **)ZEND_MAP_PTR_OFFSET2PTR(ce_cache)) = ce; \
} while (0)

Definition at line 860 of file zend_types.h.

◆ Z_ADDREF

#define Z_ADDREF ( z)
Value:
#define Z_ADDREF_P(pz)

Definition at line 1272 of file zend_types.h.

◆ Z_ADDREF_P

#define Z_ADDREF_P ( pz)
Value:
zval_addref_p(pz)

Definition at line 1267 of file zend_types.h.

◆ Z_ARR

#define Z_ARR ( zval)
Value:
(zval).value.arr
value

Definition at line 983 of file zend_types.h.

◆ Z_ARR_P

#define Z_ARR_P ( zval_p)
Value:
Z_ARR(*(zval_p))
#define Z_ARR(zval)
Definition zend_types.h:983

Definition at line 984 of file zend_types.h.

◆ Z_ARRVAL

#define Z_ARRVAL ( zval)
Value:

Definition at line 986 of file zend_types.h.

◆ Z_ARRVAL_P

#define Z_ARRVAL_P ( zval_p)
Value:
Z_ARRVAL(*(zval_p))
#define Z_ARRVAL(zval)
Definition zend_types.h:986

Definition at line 987 of file zend_types.h.

◆ Z_AST

#define Z_AST ( zval)
Value:
(zval).value.ast

Definition at line 1025 of file zend_types.h.

◆ Z_AST_P

#define Z_AST_P ( zval_p)
Value:
Z_AST(*(zval_p))
#define Z_AST(zval)

Definition at line 1026 of file zend_types.h.

◆ Z_ASTVAL

#define Z_ASTVAL ( zval)
Value:
#define GC_AST(p)

Definition at line 1030 of file zend_types.h.

◆ Z_ASTVAL_P

#define Z_ASTVAL_P ( zval_p)
Value:
Z_ASTVAL(*(zval_p))
#define Z_ASTVAL(zval)

Definition at line 1031 of file zend_types.h.

◆ Z_CACHE_SLOT

#define Z_CACHE_SLOT ( zval)
Value:
(zval).u2.cache_slot

Definition at line 674 of file zend_types.h.

◆ Z_CACHE_SLOT_P

#define Z_CACHE_SLOT_P ( zval_p)
Value:
Z_CACHE_SLOT(*(zval_p))
#define Z_CACHE_SLOT(zval)
Definition zend_types.h:674

Definition at line 675 of file zend_types.h.

◆ Z_CE

#define Z_CE ( zval)
Value:
(zval).value.ce

Definition at line 1036 of file zend_types.h.

◆ Z_CE_P

#define Z_CE_P ( zval_p)
Value:
Z_CE(*(zval_p))
#define Z_CE(zval)

Definition at line 1037 of file zend_types.h.

◆ Z_COLLECTABLE

#define Z_COLLECTABLE ( zval)
Value:
#define Z_TYPE_FLAGS(zval)
Definition zend_types.h:662
#define IS_TYPE_COLLECTABLE
Definition zend_types.h:794

Definition at line 923 of file zend_types.h.

◆ Z_COLLECTABLE_P

#define Z_COLLECTABLE_P ( zval_p)
Value:
Z_COLLECTABLE(*(zval_p))
#define Z_COLLECTABLE(zval)
Definition zend_types.h:923

Definition at line 924 of file zend_types.h.

◆ Z_CONSTANT

#define Z_CONSTANT ( zval)
Value:
#define IS_CONSTANT_AST
Definition zend_types.h:611
#define Z_TYPE(zval)
Definition zend_types.h:659

Definition at line 911 of file zend_types.h.

◆ Z_CONSTANT_FLAGS

#define Z_CONSTANT_FLAGS ( zval)
Value:
(zval).u2.constant_flags

Definition at line 692 of file zend_types.h.

◆ Z_CONSTANT_FLAGS_P

#define Z_CONSTANT_FLAGS_P ( zval_p)
Value:
Z_CONSTANT_FLAGS(*(zval_p))
#define Z_CONSTANT_FLAGS(zval)
Definition zend_types.h:692

Definition at line 693 of file zend_types.h.

◆ Z_CONSTANT_P

#define Z_CONSTANT_P ( zval_p)
Value:
Z_CONSTANT(*(zval_p))
#define Z_CONSTANT(zval)
Definition zend_types.h:911

Definition at line 912 of file zend_types.h.

◆ Z_COPYABLE

#define Z_COPYABLE ( zval)
Value:

Definition at line 927 of file zend_types.h.

◆ Z_COPYABLE_P

#define Z_COPYABLE_P ( zval_p)
Value:
Z_COPYABLE(*(zval_p))
#define Z_COPYABLE(zval)
Definition zend_types.h:927

Definition at line 928 of file zend_types.h.

◆ Z_COUNTED

#define Z_COUNTED ( zval)
Value:
(zval).value.counted

Definition at line 698 of file zend_types.h.

◆ Z_COUNTED_P

#define Z_COUNTED_P ( zval_p)
Value:
Z_COUNTED(*(zval_p))
#define Z_COUNTED(zval)
Definition zend_types.h:698

Definition at line 699 of file zend_types.h.

◆ Z_DELREF

#define Z_DELREF ( z)
Value:
#define Z_DELREF_P(pz)

Definition at line 1273 of file zend_types.h.

◆ Z_DELREF_P

#define Z_DELREF_P ( pz)
Value:
zval_delref_p(pz)

Definition at line 1268 of file zend_types.h.

◆ Z_DVAL

#define Z_DVAL ( zval)
Value:
(zval).value.dval

Definition at line 968 of file zend_types.h.

◆ Z_DVAL_P

#define Z_DVAL_P ( zval_p)
Value:
Z_DVAL(*(zval_p))
#define Z_DVAL(zval)
Definition zend_types.h:968

Definition at line 969 of file zend_types.h.

◆ Z_EXTRA

#define Z_EXTRA ( zval)
Value:
(zval).u2.extra

Definition at line 695 of file zend_types.h.

◆ Z_EXTRA_P

#define Z_EXTRA_P ( zval_p)
Value:
Z_EXTRA(*(zval_p))
#define Z_EXTRA(zval)
Definition zend_types.h:695

Definition at line 696 of file zend_types.h.

◆ Z_FE_ITER

#define Z_FE_ITER ( zval)
Value:
(zval).u2.fe_iter_idx

Definition at line 686 of file zend_types.h.

◆ Z_FE_ITER_P

#define Z_FE_ITER_P ( zval_p)
Value:
Z_FE_ITER(*(zval_p))
#define Z_FE_ITER(zval)
Definition zend_types.h:686

Definition at line 687 of file zend_types.h.

◆ Z_FE_POS

#define Z_FE_POS ( zval)
Value:
(zval).u2.fe_pos

Definition at line 683 of file zend_types.h.

◆ Z_FE_POS_P

#define Z_FE_POS_P ( zval_p)
Value:
Z_FE_POS(*(zval_p))
#define Z_FE_POS(zval)
Definition zend_types.h:683

Definition at line 684 of file zend_types.h.

◆ Z_FUNC

#define Z_FUNC ( zval)
Value:
(zval).value.func

Definition at line 1039 of file zend_types.h.

◆ Z_FUNC_P

#define Z_FUNC_P ( zval_p)
Value:
Z_FUNC(*(zval_p))
#define Z_FUNC(zval)

Definition at line 1040 of file zend_types.h.

◆ Z_GC_FLAGS

#define Z_GC_FLAGS ( zval)
Value:

Definition at line 769 of file zend_types.h.

◆ Z_GC_FLAGS_P

#define Z_GC_FLAGS_P ( zval_p)
Value:
Z_GC_FLAGS(*(zval_p))
#define Z_GC_FLAGS(zval)
Definition zend_types.h:769

Definition at line 770 of file zend_types.h.

◆ Z_GC_INFO

#define Z_GC_INFO ( zval)
Value:
#define GC_INFO(p)
Definition zend_types.h:757

Definition at line 772 of file zend_types.h.

◆ Z_GC_INFO_P

#define Z_GC_INFO_P ( zval_p)
Value:
Z_GC_INFO(*(zval_p))
#define Z_GC_INFO(zval)
Definition zend_types.h:772

Definition at line 773 of file zend_types.h.

◆ Z_GC_TYPE

#define Z_GC_TYPE ( zval)
Value:
#define GC_TYPE(p)
Definition zend_types.h:755

Definition at line 766 of file zend_types.h.

◆ Z_GC_TYPE_INFO

#define Z_GC_TYPE_INFO ( zval)
Value:

Definition at line 774 of file zend_types.h.

◆ Z_GC_TYPE_INFO_P

#define Z_GC_TYPE_INFO_P ( zval_p)
Value:
Z_GC_TYPE_INFO(*(zval_p))
#define Z_GC_TYPE_INFO(zval)
Definition zend_types.h:774

Definition at line 775 of file zend_types.h.

◆ Z_GC_TYPE_P

#define Z_GC_TYPE_P ( zval_p)
Value:
Z_GC_TYPE(*(zval_p))
#define Z_GC_TYPE(zval)
Definition zend_types.h:766

Definition at line 767 of file zend_types.h.

◆ Z_GUARD

#define Z_GUARD ( zval)
Value:
(zval).u2.guard

Definition at line 689 of file zend_types.h.

◆ Z_GUARD_P

#define Z_GUARD_P ( zval_p)
Value:
Z_GUARD(*(zval_p))
#define Z_GUARD(zval)
Definition zend_types.h:689

Definition at line 690 of file zend_types.h.

◆ Z_IMMUTABLE

#define Z_IMMUTABLE ( zval)
Value:
#define Z_TYPE_INFO(zval)
Definition zend_types.h:668

Definition at line 931 of file zend_types.h.

◆ Z_IMMUTABLE_P

#define Z_IMMUTABLE_P ( zval_p)
Value:
Z_IMMUTABLE(*(zval_p))
#define Z_IMMUTABLE(zval)
Definition zend_types.h:931

Definition at line 932 of file zend_types.h.

◆ Z_INDIRECT

#define Z_INDIRECT ( zval)
Value:
(zval).value.zv

Definition at line 1033 of file zend_types.h.

◆ Z_INDIRECT_P

#define Z_INDIRECT_P ( zval_p)
Value:
Z_INDIRECT(*(zval_p))
#define Z_INDIRECT(zval)

Definition at line 1034 of file zend_types.h.

◆ Z_IS_RECURSIVE

#define Z_IS_RECURSIVE ( zval)
Value:
#define GC_IS_RECURSIVE(p)
Definition zend_types.h:865

Definition at line 884 of file zend_types.h.

◆ Z_IS_RECURSIVE_P

#define Z_IS_RECURSIVE_P ( zv)
Value:
#define Z_IS_RECURSIVE(zval)
Definition zend_types.h:884

Definition at line 887 of file zend_types.h.

◆ Z_ISERROR

#define Z_ISERROR ( zval)
Value:
#define _IS_ERROR
Definition zend_types.h:626

Definition at line 962 of file zend_types.h.

◆ Z_ISERROR_P

#define Z_ISERROR_P ( zval_p)
Value:
Z_ISERROR(*(zval_p))
#define Z_ISERROR(zval)
Definition zend_types.h:962

Definition at line 963 of file zend_types.h.

◆ Z_ISNULL

#define Z_ISNULL ( zval)
Value:
#define IS_NULL
Definition zend_types.h:601

Definition at line 959 of file zend_types.h.

◆ Z_ISNULL_P

#define Z_ISNULL_P ( zval_p)
Value:
Z_ISNULL(*(zval_p))
#define Z_ISNULL(zval)
Definition zend_types.h:959

Definition at line 960 of file zend_types.h.

◆ Z_ISREF

#define Z_ISREF ( zval)
Value:

Definition at line 953 of file zend_types.h.

◆ Z_ISREF_P

#define Z_ISREF_P ( zval_p)
Value:
Z_ISREF(*(zval_p))
#define Z_ISREF(zval)
Definition zend_types.h:953

Definition at line 954 of file zend_types.h.

◆ Z_ISUNDEF

#define Z_ISUNDEF ( zval)
Value:
#define IS_UNDEF
Definition zend_types.h:600

Definition at line 956 of file zend_types.h.

◆ Z_ISUNDEF_P

#define Z_ISUNDEF_P ( zval_p)
Value:
Z_ISUNDEF(*(zval_p))
#define Z_ISUNDEF(zval)
Definition zend_types.h:956

Definition at line 957 of file zend_types.h.

◆ Z_LINENO

#define Z_LINENO ( zval)
Value:
(zval).u2.lineno

Definition at line 677 of file zend_types.h.

◆ Z_LINENO_P

#define Z_LINENO_P ( zval_p)
Value:
Z_LINENO(*(zval_p))
#define Z_LINENO(zval)
Definition zend_types.h:677

Definition at line 678 of file zend_types.h.

◆ Z_LVAL

#define Z_LVAL ( zval)
Value:
(zval).value.lval

Definition at line 965 of file zend_types.h.

◆ Z_LVAL_P

#define Z_LVAL_P ( zval_p)
Value:
Z_LVAL(*(zval_p))
#define Z_LVAL(zval)
Definition zend_types.h:965

Definition at line 966 of file zend_types.h.

◆ Z_NEXT

#define Z_NEXT ( zval)
Value:
(zval).u2.next

Definition at line 671 of file zend_types.h.

◆ Z_NEXT_P

#define Z_NEXT_P ( zval_p)
Value:
Z_NEXT(*(zval_p))
#define Z_NEXT(zval)
Definition zend_types.h:671

Definition at line 672 of file zend_types.h.

◆ Z_OBJ

#define Z_OBJ ( zval)
Value:
(zval).value.obj

Definition at line 989 of file zend_types.h.

◆ Z_OBJ_HANDLE

#define Z_OBJ_HANDLE ( zval)
Value:
DL_HANDLE handle
Definition ffi.c:3028
#define Z_OBJ(zval)
Definition zend_types.h:989

Definition at line 998 of file zend_types.h.

◆ Z_OBJ_HANDLE_P

#define Z_OBJ_HANDLE_P ( zval_p)
Value:
Z_OBJ_HANDLE(*(zval_p))
#define Z_OBJ_HANDLE(zval)
Definition zend_types.h:998

Definition at line 999 of file zend_types.h.

◆ Z_OBJ_HANDLER

#define Z_OBJ_HANDLER ( zval,
hf )
Value:
Z_OBJ_HT((zval))->hf
#define Z_OBJ_HT(zval)
Definition zend_types.h:992

Definition at line 995 of file zend_types.h.

◆ Z_OBJ_HANDLER_P

#define Z_OBJ_HANDLER_P ( zv_p,
hf )
Value:
Z_OBJ_HANDLER(*(zv_p), hf)
#define Z_OBJ_HANDLER(zval, hf)
Definition zend_types.h:995

Definition at line 996 of file zend_types.h.

◆ Z_OBJ_HT

#define Z_OBJ_HT ( zval)
Value:
Z_OBJ(zval)->handlers

Definition at line 992 of file zend_types.h.

◆ Z_OBJ_HT_P

#define Z_OBJ_HT_P ( zval_p)
Value:
Z_OBJ_HT(*(zval_p))

Definition at line 993 of file zend_types.h.

◆ Z_OBJ_P

#define Z_OBJ_P ( zval_p)
Value:
Z_OBJ(*(zval_p))

Definition at line 990 of file zend_types.h.

◆ Z_OBJCE

#define Z_OBJCE ( zval)
Value:
(Z_OBJ(zval)->ce)

Definition at line 1001 of file zend_types.h.

◆ Z_OBJCE_P

#define Z_OBJCE_P ( zval_p)
Value:
Z_OBJCE(*(zval_p))
#define Z_OBJCE(zval)

Definition at line 1002 of file zend_types.h.

◆ Z_OBJPROP

#define Z_OBJPROP ( zval)
Value:
Z_OBJ_HT((zval))->get_properties(Z_OBJ(zval))

Definition at line 1004 of file zend_types.h.

◆ Z_OBJPROP_P

#define Z_OBJPROP_P ( zval_p)
Value:
Z_OBJPROP(*(zval_p))
#define Z_OBJPROP(zval)

Definition at line 1005 of file zend_types.h.

◆ Z_OPLINE_NUM

#define Z_OPLINE_NUM ( zval)
Value:
(zval).u2.opline_num

Definition at line 680 of file zend_types.h.

◆ Z_OPLINE_NUM_P

#define Z_OPLINE_NUM_P ( zval_p)
Value:
Z_OPLINE_NUM(*(zval_p))
#define Z_OPLINE_NUM(zval)
Definition zend_types.h:680

Definition at line 681 of file zend_types.h.

◆ Z_OPT_CONSTANT

#define Z_OPT_CONSTANT ( zval)
Value:
#define Z_OPT_TYPE(zval)
Definition zend_types.h:937

Definition at line 940 of file zend_types.h.

◆ Z_OPT_CONSTANT_P

#define Z_OPT_CONSTANT_P ( zval_p)
Value:
Z_OPT_CONSTANT(*(zval_p))
#define Z_OPT_CONSTANT(zval)
Definition zend_types.h:940

Definition at line 941 of file zend_types.h.

◆ Z_OPT_COPYABLE

#define Z_OPT_COPYABLE ( zval)
Value:

Definition at line 947 of file zend_types.h.

◆ Z_OPT_COPYABLE_P

#define Z_OPT_COPYABLE_P ( zval_p)
Value:
Z_OPT_COPYABLE(*(zval_p))
#define Z_OPT_COPYABLE(zval)
Definition zend_types.h:947

Definition at line 948 of file zend_types.h.

◆ Z_OPT_IMMUTABLE

#define Z_OPT_IMMUTABLE ( zval)
Value:
Z_IMMUTABLE(zval_p)

Definition at line 933 of file zend_types.h.

◆ Z_OPT_IMMUTABLE_P

#define Z_OPT_IMMUTABLE_P ( zval_p)
Value:
Z_IMMUTABLE(*(zval_p))

Definition at line 934 of file zend_types.h.

◆ Z_OPT_ISREF

#define Z_OPT_ISREF ( zval)
Value:

Definition at line 950 of file zend_types.h.

◆ Z_OPT_ISREF_P

#define Z_OPT_ISREF_P ( zval_p)
Value:
Z_OPT_ISREF(*(zval_p))
#define Z_OPT_ISREF(zval)
Definition zend_types.h:950

Definition at line 951 of file zend_types.h.

◆ Z_OPT_REFCOUNTED

#define Z_OPT_REFCOUNTED ( zval)
Value:
#define Z_TYPE_INFO_REFCOUNTED(t)
Definition zend_types.h:799

Definition at line 943 of file zend_types.h.

◆ Z_OPT_REFCOUNTED_P

#define Z_OPT_REFCOUNTED_P ( zval_p)
Value:
Z_OPT_REFCOUNTED(*(zval_p))
#define Z_OPT_REFCOUNTED(zval)
Definition zend_types.h:943

Definition at line 944 of file zend_types.h.

◆ Z_OPT_TYPE

#define Z_OPT_TYPE ( zval)
Value:
#define Z_TYPE_MASK
Definition zend_types.h:701

Definition at line 937 of file zend_types.h.

◆ Z_OPT_TYPE_P

#define Z_OPT_TYPE_P ( zval_p)
Value:
Z_OPT_TYPE(*(zval_p))

Definition at line 938 of file zend_types.h.

◆ Z_PROP_FLAG_P

#define Z_PROP_FLAG_P ( z)
Value:
#define Z_EXTRA_P(zval_p)
Definition zend_types.h:696

Definition at line 1568 of file zend_types.h.

◆ Z_PROTECT_RECURSION

#define Z_PROTECT_RECURSION ( zval)
Value:

Definition at line 885 of file zend_types.h.

◆ Z_PROTECT_RECURSION_P

#define Z_PROTECT_RECURSION_P ( zv)
Value:
#define Z_PROTECT_RECURSION(zval)
Definition zend_types.h:885

Definition at line 888 of file zend_types.h.

◆ Z_PTR

#define Z_PTR ( zval)
Value:
(zval).value.ptr

Definition at line 1042 of file zend_types.h.

◆ Z_PTR_P

#define Z_PTR_P ( zval_p)
Value:
Z_PTR(*(zval_p))
#define Z_PTR(zval)

Definition at line 1043 of file zend_types.h.

◆ Z_REF

#define Z_REF ( zval)
Value:
(zval).value.ref

Definition at line 1019 of file zend_types.h.

◆ Z_REF_P

#define Z_REF_P ( zval_p)
Value:
Z_REF(*(zval_p))
#define Z_REF(zval)

Definition at line 1020 of file zend_types.h.

◆ Z_REFCOUNT

#define Z_REFCOUNT ( z)
Value:

Definition at line 1270 of file zend_types.h.

◆ Z_REFCOUNT_P

#define Z_REFCOUNT_P ( pz)
Value:
zval_refcount_p(pz)

Definition at line 1265 of file zend_types.h.

◆ Z_REFCOUNTED

#define Z_REFCOUNTED ( zval)
Value:

Definition at line 917 of file zend_types.h.

◆ Z_REFCOUNTED_P

#define Z_REFCOUNTED_P ( zval_p)
Value:
Z_REFCOUNTED(*(zval_p))
#define Z_REFCOUNTED(zval)
Definition zend_types.h:917

Definition at line 921 of file zend_types.h.

◆ Z_REFVAL

#define Z_REFVAL ( zval)
Value:
&Z_REF(zval)->val

Definition at line 1022 of file zend_types.h.

◆ Z_REFVAL_P

#define Z_REFVAL_P ( zval_p)
Value:
Z_REFVAL(*(zval_p))
#define Z_REFVAL(zval)

Definition at line 1023 of file zend_types.h.

◆ Z_RES

#define Z_RES ( zval)
Value:
(zval).value.res

Definition at line 1007 of file zend_types.h.

◆ Z_RES_HANDLE

#define Z_RES_HANDLE ( zval)
Value:
Z_RES(zval)->handle
#define Z_RES(zval)

Definition at line 1010 of file zend_types.h.

◆ Z_RES_HANDLE_P

#define Z_RES_HANDLE_P ( zval_p)
Value:
Z_RES_HANDLE(*zval_p)
#define Z_RES_HANDLE(zval)

Definition at line 1011 of file zend_types.h.

◆ Z_RES_P

#define Z_RES_P ( zval_p)
Value:
Z_RES(*zval_p)

Definition at line 1008 of file zend_types.h.

◆ Z_RES_TYPE

#define Z_RES_TYPE ( zval)
Value:
Z_RES(zval)->type

Definition at line 1013 of file zend_types.h.

◆ Z_RES_TYPE_P

#define Z_RES_TYPE_P ( zval_p)
Value:
Z_RES_TYPE(*zval_p)
#define Z_RES_TYPE(zval)

Definition at line 1014 of file zend_types.h.

◆ Z_RES_VAL

#define Z_RES_VAL ( zval)
Value:
Z_RES(zval)->ptr

Definition at line 1016 of file zend_types.h.

◆ Z_RES_VAL_P

#define Z_RES_VAL_P ( zval_p)
Value:
Z_RES_VAL(*zval_p)
#define Z_RES_VAL(zval)

Definition at line 1017 of file zend_types.h.

◆ Z_SET_REFCOUNT

#define Z_SET_REFCOUNT ( z,
rc )
Value:
#define Z_SET_REFCOUNT_P(pz, rc)

Definition at line 1271 of file zend_types.h.

◆ Z_SET_REFCOUNT_P

#define Z_SET_REFCOUNT_P ( pz,
rc )
Value:
zval_set_refcount_p(pz, rc)

Definition at line 1266 of file zend_types.h.

◆ Z_STR

#define Z_STR ( zval)
Value:
(zval).value.str

Definition at line 971 of file zend_types.h.

◆ Z_STR_P

#define Z_STR_P ( zval_p)
Value:
Z_STR(*(zval_p))
#define Z_STR(zval)
Definition zend_types.h:971

Definition at line 972 of file zend_types.h.

◆ Z_STRHASH

#define Z_STRHASH ( zval)
Value:
#define ZSTR_HASH(zstr)
Definition zend_string.h:71

Definition at line 980 of file zend_types.h.

◆ Z_STRHASH_P

#define Z_STRHASH_P ( zval_p)
Value:
Z_STRHASH(*(zval_p))
#define Z_STRHASH(zval)
Definition zend_types.h:980

Definition at line 981 of file zend_types.h.

◆ Z_STRLEN

#define Z_STRLEN ( zval)
Value:

Definition at line 977 of file zend_types.h.

◆ Z_STRLEN_P

#define Z_STRLEN_P ( zval_p)
Value:
Z_STRLEN(*(zval_p))
#define Z_STRLEN(zval)
Definition zend_types.h:977

Definition at line 978 of file zend_types.h.

◆ Z_STRVAL

#define Z_STRVAL ( zval)
Value:

Definition at line 974 of file zend_types.h.

◆ Z_STRVAL_P

#define Z_STRVAL_P ( zval_p)
Value:
Z_STRVAL(*(zval_p))
#define Z_STRVAL(zval)
Definition zend_types.h:974

Definition at line 975 of file zend_types.h.

◆ Z_TRY_ADDREF

#define Z_TRY_ADDREF ( z)
Value:
#define Z_TRY_ADDREF_P(pz)

Definition at line 1287 of file zend_types.h.

◆ Z_TRY_ADDREF_P

#define Z_TRY_ADDREF_P ( pz)
Value:
do { \
if (Z_REFCOUNTED_P((pz))) { \
Z_ADDREF_P((pz)); \
} \
} while (0)

Definition at line 1275 of file zend_types.h.

◆ Z_TRY_DELREF

#define Z_TRY_DELREF ( z)
Value:
#define Z_TRY_DELREF_P(pz)

Definition at line 1288 of file zend_types.h.

◆ Z_TRY_DELREF_P

#define Z_TRY_DELREF_P ( pz)
Value:
do { \
if (Z_REFCOUNTED_P((pz))) { \
Z_DELREF_P((pz)); \
} \
} while (0)

Definition at line 1281 of file zend_types.h.

◆ Z_TYPE

#define Z_TYPE ( zval)
Value:
zval_get_type(&(zval))

Definition at line 659 of file zend_types.h.

◆ Z_TYPE_EXTRA

#define Z_TYPE_EXTRA ( zval)
Value:
(zval).u1.v.u.extra

Definition at line 665 of file zend_types.h.

◆ Z_TYPE_EXTRA_P

#define Z_TYPE_EXTRA_P ( zval_p)
Value:
Z_TYPE_EXTRA(*(zval_p))
#define Z_TYPE_EXTRA(zval)
Definition zend_types.h:665

Definition at line 666 of file zend_types.h.

◆ Z_TYPE_FLAGS

#define Z_TYPE_FLAGS ( zval)
Value:
(zval).u1.v.type_flags

Definition at line 662 of file zend_types.h.

◆ Z_TYPE_FLAGS_MASK

#define Z_TYPE_FLAGS_MASK   0xff00

Definition at line 702 of file zend_types.h.

◆ Z_TYPE_FLAGS_P

#define Z_TYPE_FLAGS_P ( zval_p)
Value:
Z_TYPE_FLAGS(*(zval_p))

Definition at line 663 of file zend_types.h.

◆ Z_TYPE_FLAGS_SHIFT

#define Z_TYPE_FLAGS_SHIFT   8

Definition at line 704 of file zend_types.h.

◆ Z_TYPE_INFO

#define Z_TYPE_INFO ( zval)
Value:
(zval).u1.type_info

Definition at line 668 of file zend_types.h.

◆ Z_TYPE_INFO_EXTRA_SHIFT

#define Z_TYPE_INFO_EXTRA_SHIFT   16

Definition at line 705 of file zend_types.h.

◆ Z_TYPE_INFO_P

#define Z_TYPE_INFO_P ( zval_p)
Value:
Z_TYPE_INFO(*(zval_p))

Definition at line 669 of file zend_types.h.

◆ Z_TYPE_INFO_REFCOUNTED

#define Z_TYPE_INFO_REFCOUNTED ( t)
Value:
(((t) & Z_TYPE_FLAGS_MASK) != 0)
#define Z_TYPE_FLAGS_MASK
Definition zend_types.h:702

Definition at line 799 of file zend_types.h.

◆ Z_TYPE_MASK

#define Z_TYPE_MASK   0xff

Definition at line 701 of file zend_types.h.

◆ Z_TYPE_P

#define Z_TYPE_P ( zval_p)
Value:
Z_TYPE(*(zval_p))

Definition at line 660 of file zend_types.h.

◆ Z_UNPROTECT_RECURSION

#define Z_UNPROTECT_RECURSION ( zval)
Value:

Definition at line 886 of file zend_types.h.

◆ Z_UNPROTECT_RECURSION_P

#define Z_UNPROTECT_RECURSION_P ( zv)
Value:
#define Z_UNPROTECT_RECURSION(zval)
Definition zend_types.h:886

Definition at line 889 of file zend_types.h.

◆ ZEND_ENDIAN_LOHI

#define ZEND_ENDIAN_LOHI ( lo,
hi )
Value:
lo; hi;

Definition at line 49 of file zend_types.h.

◆ ZEND_ENDIAN_LOHI_3

#define ZEND_ENDIAN_LOHI_3 ( lo,
mi,
hi )
Value:
lo; mi; hi;

Definition at line 50 of file zend_types.h.

◆ ZEND_ENDIAN_LOHI_4

#define ZEND_ENDIAN_LOHI_4 ( a,
b,
c,
d )
Value:
a; b; c; d;
$obj a
Definition test.php:84

Definition at line 51 of file zend_types.h.

◆ ZEND_ENDIAN_LOHI_C

#define ZEND_ENDIAN_LOHI_C ( lo,
hi )
Value:
lo, hi

Definition at line 52 of file zend_types.h.

◆ ZEND_ENDIAN_LOHI_C_3

#define ZEND_ENDIAN_LOHI_C_3 ( lo,
mi,
hi )
Value:
lo, mi, hi,

Definition at line 53 of file zend_types.h.

◆ ZEND_ENDIAN_LOHI_C_4

#define ZEND_ENDIAN_LOHI_C_4 ( a,
b,
c,
d )
Value:
a, b, c, d

Definition at line 54 of file zend_types.h.

◆ ZEND_EXT_TLS

#define ZEND_EXT_TLS

Definition at line 85 of file zend_types.h.

◆ ZEND_GUARD_IS_RECURSIVE

#define ZEND_GUARD_IS_RECURSIVE ( pg,
t )
Value:
((*pg & ZEND_GUARD_RECURSION_TYPE(t)) != 0)
#define ZEND_GUARD_RECURSION_TYPE(t)
Definition zend_types.h:643

Definition at line 645 of file zend_types.h.

◆ ZEND_GUARD_OR_GC_IS_RECURSIVE

#define ZEND_GUARD_OR_GC_IS_RECURSIVE ( pg,
t,
zobj )
Value:
#define ZEND_GUARD_IS_RECURSIVE(pg, t)
Definition zend_types.h:645
zend_object * zobj

Definition at line 891 of file zend_types.h.

◆ ZEND_GUARD_OR_GC_PROTECT_RECURSION

#define ZEND_GUARD_OR_GC_PROTECT_RECURSION ( pg,
t,
zobj )
Value:
do { \
if (pg) { \
ZEND_GUARD_PROTECT_RECURSION(pg, t); \
} else { \
GC_PROTECT_RECURSION(zobj); \
} \
} while(0)

Definition at line 894 of file zend_types.h.

◆ ZEND_GUARD_OR_GC_UNPROTECT_RECURSION

#define ZEND_GUARD_OR_GC_UNPROTECT_RECURSION ( pg,
t,
zobj )
Value:
do { \
if (pg) { \
ZEND_GUARD_UNPROTECT_RECURSION(pg, t); \
} else { \
GC_UNPROTECT_RECURSION(zobj); \
} \
} while(0)

Definition at line 902 of file zend_types.h.

◆ ZEND_GUARD_PROPERTY_GET

#define ZEND_GUARD_PROPERTY_GET   (1<<0)

Definition at line 633 of file zend_types.h.

◆ ZEND_GUARD_PROPERTY_HOOK

#define ZEND_GUARD_PROPERTY_HOOK   (1<<4)

Definition at line 637 of file zend_types.h.

◆ ZEND_GUARD_PROPERTY_ISSET

#define ZEND_GUARD_PROPERTY_ISSET   (1<<3)

Definition at line 636 of file zend_types.h.

◆ ZEND_GUARD_PROPERTY_MASK

#define ZEND_GUARD_PROPERTY_MASK   31

Definition at line 638 of file zend_types.h.

◆ ZEND_GUARD_PROPERTY_SET

#define ZEND_GUARD_PROPERTY_SET   (1<<1)

Definition at line 634 of file zend_types.h.

◆ ZEND_GUARD_PROPERTY_UNSET

#define ZEND_GUARD_PROPERTY_UNSET   (1<<2)

Definition at line 635 of file zend_types.h.

◆ ZEND_GUARD_PROTECT_RECURSION

#define ZEND_GUARD_PROTECT_RECURSION ( pg,
t )
Value:

Definition at line 646 of file zend_types.h.

◆ ZEND_GUARD_RECURSION_DEBUG

#define ZEND_GUARD_RECURSION_DEBUG   (1<<5)

Definition at line 639 of file zend_types.h.

◆ ZEND_GUARD_RECURSION_EXPORT

#define ZEND_GUARD_RECURSION_EXPORT   (1<<6)

Definition at line 640 of file zend_types.h.

◆ ZEND_GUARD_RECURSION_JSON

#define ZEND_GUARD_RECURSION_JSON   (1<<7)

Definition at line 641 of file zend_types.h.

◆ ZEND_GUARD_RECURSION_TYPE

#define ZEND_GUARD_RECURSION_TYPE ( t)
Value:
ZEND_GUARD_RECURSION_ ## t

Definition at line 643 of file zend_types.h.

◆ ZEND_GUARD_UNPROTECT_RECURSION

#define ZEND_GUARD_UNPROTECT_RECURSION ( pg,
t )
Value:

Definition at line 647 of file zend_types.h.

◆ ZEND_PROPERTY_INFO_SOURCE_FROM_LIST

#define ZEND_PROPERTY_INFO_SOURCE_FROM_LIST ( list)
Value:
(0x1 | (uintptr_t) (list))

Definition at line 584 of file zend_types.h.

◆ ZEND_PROPERTY_INFO_SOURCE_IS_LIST

#define ZEND_PROPERTY_INFO_SOURCE_IS_LIST ( list)
Value:
((list) & 0x1)

Definition at line 586 of file zend_types.h.

◆ ZEND_PROPERTY_INFO_SOURCE_TO_LIST

#define ZEND_PROPERTY_INFO_SOURCE_TO_LIST ( list)
Value:

Definition at line 585 of file zend_types.h.

◆ ZEND_RC_DEBUG

#define ZEND_RC_DEBUG   0

Definition at line 1291 of file zend_types.h.

◆ ZEND_RC_MOD_CHECK

#define ZEND_RC_MOD_CHECK ( p)
Value:
do { } while (0)

Definition at line 1311 of file zend_types.h.

◆ ZEND_SAME_FAKE_TYPE

#define ZEND_SAME_FAKE_TYPE ( faketype,
realtype )
Value:
( \
(faketype) == (realtype) \
|| ((faketype) == _IS_BOOL && ((realtype) == IS_TRUE || (realtype) == IS_FALSE)) \
)
#define IS_TRUE
Definition zend_types.h:603
#define IS_FALSE
Definition zend_types.h:602
#define _IS_BOOL
Definition zend_types.h:629

Definition at line 653 of file zend_types.h.

◆ ZEND_SIZE_MAX

#define ZEND_SIZE_MAX   SIZE_MAX

Definition at line 76 of file zend_types.h.

◆ ZEND_TLS

#define ZEND_TLS   static

Definition at line 84 of file zend_types.h.

◆ ZEND_TYPE_ALLOW_NULL

#define ZEND_TYPE_ALLOW_NULL ( t)
Value:
(((t).type_mask & _ZEND_TYPE_NULLABLE_BIT) != 0)
#define _ZEND_TYPE_NULLABLE_BIT
Definition zend_types.h:164

Definition at line 269 of file zend_types.h.

◆ ZEND_TYPE_CONTAINS_CODE

#define ZEND_TYPE_CONTAINS_CODE ( t,
code )
Value:
(((t).type_mask & (1u << (code))) != 0)

Definition at line 266 of file zend_types.h.

◆ ZEND_TYPE_FOREACH

#define ZEND_TYPE_FOREACH ( type,
type_ptr )
Value:
do { \
zend_type *_cur, *_end; \
_cur = _list->types; \
_end = _cur + _list->num_types; \
} else { \
_cur = &(type); \
_end = _cur + 1; \
} \
do { \
type_ptr = _cur;
zend_ffi_type * type
Definition ffi.c:3812
zend_ffi_type * type_ptr
Definition ffi.c:3812
zend_type types[1]
Definition zend_types.h:142
uint32_t num_types
Definition zend_types.h:141
#define ZEND_TYPE_HAS_LIST(t)
Definition zend_types.h:180
#define ZEND_TYPE_LIST(t)
Definition zend_types.h:204

Definition at line 223 of file zend_types.h.

◆ ZEND_TYPE_FOREACH_END

#define ZEND_TYPE_FOREACH_END ( )
Value:
} while (++_cur < _end); \
} while (0)

Definition at line 236 of file zend_types.h.

◆ ZEND_TYPE_FULL_MASK

#define ZEND_TYPE_FULL_MASK ( t)
Value:
((t).type_mask)

Definition at line 254 of file zend_types.h.

◆ ZEND_TYPE_FULL_MASK_WITHOUT_NULL

#define ZEND_TYPE_FULL_MASK_WITHOUT_NULL ( t)
Value:
((t).type_mask & ~_ZEND_TYPE_NULLABLE_BIT)

Definition at line 260 of file zend_types.h.

◆ ZEND_TYPE_HAS_LIST

#define ZEND_TYPE_HAS_LIST ( t)
Value:
((((t).type_mask) & _ZEND_TYPE_LIST_BIT) != 0)
#define _ZEND_TYPE_LIST_BIT
Definition zend_types.h:151

Definition at line 180 of file zend_types.h.

◆ ZEND_TYPE_HAS_LITERAL_NAME

#define ZEND_TYPE_HAS_LITERAL_NAME ( t)
Value:
((((t).type_mask) & _ZEND_TYPE_LITERAL_NAME_BIT) != 0)
#define _ZEND_TYPE_LITERAL_NAME_BIT
Definition zend_types.h:150

Definition at line 177 of file zend_types.h.

◆ ZEND_TYPE_HAS_NAME

#define ZEND_TYPE_HAS_NAME ( t)
Value:
((((t).type_mask) & _ZEND_TYPE_NAME_BIT) != 0)
#define _ZEND_TYPE_NAME_BIT
Definition zend_types.h:148

Definition at line 174 of file zend_types.h.

◆ ZEND_TYPE_INIT_CLASS

#define ZEND_TYPE_INIT_CLASS ( class_name,
allow_null,
extra_flags )
Value:
ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_NAME_BIT, allow_null, extra_flags)
#define ZEND_TYPE_INIT_PTR(ptr, type_kind, allow_null, extra_flags)
Definition zend_types.h:290

Definition at line 303 of file zend_types.h.

◆ ZEND_TYPE_INIT_CLASS_CONST

#define ZEND_TYPE_INIT_CLASS_CONST ( class_name,
allow_null,
extra_flags )
Value:
ZEND_TYPE_INIT_PTR(class_name, _ZEND_TYPE_LITERAL_NAME_BIT, allow_null, extra_flags)

Definition at line 309 of file zend_types.h.

◆ ZEND_TYPE_INIT_CLASS_CONST_MASK

#define ZEND_TYPE_INIT_CLASS_CONST_MASK ( class_name,
type_mask )
Value:
#define ZEND_TYPE_INIT_PTR_MASK(ptr, type_mask)
Definition zend_types.h:294

Definition at line 312 of file zend_types.h.

◆ ZEND_TYPE_INIT_CLASS_MASK

#define ZEND_TYPE_INIT_CLASS_MASK ( class_name,
type_mask )
Value:
ZEND_TYPE_INIT_PTR_MASK(class_name, _ZEND_TYPE_NAME_BIT | (type_mask))

Definition at line 306 of file zend_types.h.

◆ ZEND_TYPE_INIT_CODE

#define ZEND_TYPE_INIT_CODE ( code,
allow_null,
extra_flags )
Value:
ZEND_TYPE_INIT_MASK(((code) == _IS_BOOL ? MAY_BE_BOOL : ( (code) == IS_ITERABLE ? _ZEND_TYPE_ITERABLE_BIT : ((code) == IS_MIXED ? MAY_BE_ANY : (1 << (code))))) \
| ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags))
#define MAY_BE_BOOL
#define MAY_BE_ANY
#define ZEND_TYPE_INIT_MASK(_type_mask)
Definition zend_types.h:283
#define IS_MIXED
Definition zend_types.h:619
#define IS_ITERABLE
Definition zend_types.h:616
#define _ZEND_TYPE_ITERABLE_BIT
Definition zend_types.h:154

Definition at line 286 of file zend_types.h.

◆ ZEND_TYPE_INIT_INTERSECTION

#define ZEND_TYPE_INIT_INTERSECTION ( ptr,
extra_flags )
Value:
#define _ZEND_TYPE_PREFIX
Definition zend_types.h:277
#define _ZEND_TYPE_INTERSECTION_BIT
Definition zend_types.h:158

Definition at line 300 of file zend_types.h.

◆ ZEND_TYPE_INIT_MASK

#define ZEND_TYPE_INIT_MASK ( _type_mask)
Value:
_ZEND_TYPE_PREFIX { NULL, (_type_mask) }
#define NULL
Definition gdcache.h:45

Definition at line 283 of file zend_types.h.

◆ ZEND_TYPE_INIT_NONE

#define ZEND_TYPE_INIT_NONE ( extra_flags)
Value:
_ZEND_TYPE_PREFIX { NULL, (extra_flags) }

Definition at line 280 of file zend_types.h.

◆ ZEND_TYPE_INIT_PTR

#define ZEND_TYPE_INIT_PTR ( ptr,
type_kind,
allow_null,
extra_flags )
Value:
_ZEND_TYPE_PREFIX { (void *) (ptr), \
(type_kind) | ((allow_null) ? _ZEND_TYPE_NULLABLE_BIT : 0) | (extra_flags) }

Definition at line 290 of file zend_types.h.

◆ ZEND_TYPE_INIT_PTR_MASK

#define ZEND_TYPE_INIT_PTR_MASK ( ptr,
type_mask )
Value:
_ZEND_TYPE_PREFIX { (void *) (ptr), (type_mask) }

Definition at line 294 of file zend_types.h.

◆ ZEND_TYPE_INIT_UNION

#define ZEND_TYPE_INIT_UNION ( ptr,
extra_flags )
Value:
#define _ZEND_TYPE_UNION_BIT
Definition zend_types.h:160

Definition at line 297 of file zend_types.h.

◆ ZEND_TYPE_IS_COMPLEX

#define ZEND_TYPE_IS_COMPLEX ( t)
Value:
((((t).type_mask) & _ZEND_TYPE_KIND_MASK) != 0)
#define _ZEND_TYPE_KIND_MASK
Definition zend_types.h:152

Definition at line 171 of file zend_types.h.

◆ ZEND_TYPE_IS_INTERSECTION

#define ZEND_TYPE_IS_INTERSECTION ( t)
Value:
((((t).type_mask) & _ZEND_TYPE_INTERSECTION_BIT) != 0)

Definition at line 186 of file zend_types.h.

◆ ZEND_TYPE_IS_ITERABLE_FALLBACK

#define ZEND_TYPE_IS_ITERABLE_FALLBACK ( t)
Value:
((((t).type_mask) & _ZEND_TYPE_ITERABLE_BIT) != 0)

Definition at line 183 of file zend_types.h.

◆ ZEND_TYPE_IS_ONLY_MASK

#define ZEND_TYPE_IS_ONLY_MASK ( t)
Value:
(ZEND_TYPE_IS_SET(t) && (t).ptr == NULL)
#define ZEND_TYPE_IS_SET(t)
Definition zend_types.h:166

Definition at line 195 of file zend_types.h.

◆ ZEND_TYPE_IS_SET

#define ZEND_TYPE_IS_SET ( t)
Value:
(((t).type_mask & _ZEND_TYPE_MASK) != 0)
#define _ZEND_TYPE_MASK
Definition zend_types.h:146

Definition at line 166 of file zend_types.h.

◆ ZEND_TYPE_IS_UNION

#define ZEND_TYPE_IS_UNION ( t)
Value:
((((t).type_mask) & _ZEND_TYPE_UNION_BIT) != 0)

Definition at line 189 of file zend_types.h.

◆ ZEND_TYPE_LIST

#define ZEND_TYPE_LIST ( t)
Value:
((zend_type_list *) (t).ptr)

Definition at line 204 of file zend_types.h.

◆ ZEND_TYPE_LIST_FOREACH

#define ZEND_TYPE_LIST_FOREACH ( list,
type_ptr )
Value:
do { \
zend_type *_list = (list)->types; \
zend_type *_end = _list + (list)->num_types; \
for (; _list < _end; _list++) { \
type_ptr = _list;
HashTable types
Definition php_ffi.h:36

Definition at line 211 of file zend_types.h.

◆ ZEND_TYPE_LIST_FOREACH_END

#define ZEND_TYPE_LIST_FOREACH_END ( )
Value:
} \
} while (0)

Definition at line 217 of file zend_types.h.

◆ ZEND_TYPE_LIST_SIZE

#define ZEND_TYPE_LIST_SIZE ( num_types)
Value:
(sizeof(zend_type_list) + ((num_types) - 1) * sizeof(zend_type))

Definition at line 207 of file zend_types.h.

◆ ZEND_TYPE_LITERAL_NAME

#define ZEND_TYPE_LITERAL_NAME ( t)
Value:
((const char *) (t).ptr)

Definition at line 201 of file zend_types.h.

◆ ZEND_TYPE_NAME

#define ZEND_TYPE_NAME ( t)
Value:
((zend_string *) (t).ptr)

Definition at line 198 of file zend_types.h.

◆ ZEND_TYPE_PURE_MASK

#define ZEND_TYPE_PURE_MASK ( t)
Value:
((t).type_mask & _ZEND_TYPE_MAY_BE_MASK)
#define _ZEND_TYPE_MAY_BE_MASK
Definition zend_types.h:162

Definition at line 257 of file zend_types.h.

◆ ZEND_TYPE_PURE_MASK_WITHOUT_NULL

#define ZEND_TYPE_PURE_MASK_WITHOUT_NULL ( t)
Value:

Definition at line 263 of file zend_types.h.

◆ ZEND_TYPE_SET_LIST

#define ZEND_TYPE_SET_LIST ( t,
list )
Value:
#define ZEND_TYPE_SET_PTR_AND_KIND(t, _ptr, kind_bit)
Definition zend_types.h:243

Definition at line 249 of file zend_types.h.

◆ ZEND_TYPE_SET_PTR

#define ZEND_TYPE_SET_PTR ( t,
_ptr )
Value:
((t).ptr = (_ptr))

Definition at line 240 of file zend_types.h.

◆ ZEND_TYPE_SET_PTR_AND_KIND

#define ZEND_TYPE_SET_PTR_AND_KIND ( t,
_ptr,
kind_bit )
Value:
do { \
(t).ptr = (_ptr); \
(t).type_mask &= ~_ZEND_TYPE_KIND_MASK; \
(t).type_mask |= (kind_bit); \
} while (0)

Definition at line 243 of file zend_types.h.

◆ ZEND_TYPE_USES_ARENA

#define ZEND_TYPE_USES_ARENA ( t)
Value:
((((t).type_mask) & _ZEND_TYPE_ARENA_BIT) != 0)
#define _ZEND_TYPE_ARENA_BIT
Definition zend_types.h:156

Definition at line 192 of file zend_types.h.

◆ ZSTR_GET_CE_CACHE

#define ZSTR_GET_CE_CACHE ( s)
Value:
char s[4]
Definition cdf.c:77
#define ZSTR_GET_CE_CACHE_EX(s, validate)
Definition zend_types.h:847

Definition at line 842 of file zend_types.h.

◆ ZSTR_GET_CE_CACHE_EX

#define ZSTR_GET_CE_CACHE_EX ( s,
validate )
Value:
((!(validate) || ZSTR_VALID_CE_CACHE(s)) ? GET_CE_CACHE(GC_REFCOUNT(s)) : NULL)
#define ZSTR_VALID_CE_CACHE(s)
Definition zend_types.h:845
#define GET_CE_CACHE(ce_cache)
Definition zend_types.h:857

Definition at line 847 of file zend_types.h.

◆ ZSTR_HAS_CE_CACHE

#define ZSTR_HAS_CE_CACHE ( s)
Value:
#define IS_STR_CLASS_NAME_MAP_PTR
Definition zend_types.h:816

Definition at line 841 of file zend_types.h.

◆ ZSTR_SET_CE_CACHE

#define ZSTR_SET_CE_CACHE ( s,
ce )
Value:
#define ZSTR_SET_CE_CACHE_EX(s, ce, validate)
Definition zend_types.h:850

Definition at line 843 of file zend_types.h.

◆ ZSTR_SET_CE_CACHE_EX

#define ZSTR_SET_CE_CACHE_EX ( s,
ce,
validate )
Value:
do { \
if (!(validate) || ZSTR_VALID_CE_CACHE(s)) { \
ZEND_ASSERT((validate) || ZSTR_VALID_CE_CACHE(s)); \
SET_CE_CACHE(GC_REFCOUNT(s), ce); \
} \
} while (0)

Definition at line 850 of file zend_types.h.

◆ ZSTR_VALID_CE_CACHE

#define ZSTR_VALID_CE_CACHE ( s)
Value:
EXPECTED((GC_REFCOUNT(s)-1)/sizeof(void *) < CG(map_ptr_last))
#define CG(v)
#define EXPECTED(condition)

Definition at line 845 of file zend_types.h.

◆ ZVAL_ALIAS_PTR

#define ZVAL_ALIAS_PTR ( z,
p )
Value:
do { \
Z_PTR_P(z) = (p); \
Z_TYPE_INFO_P(z) = IS_ALIAS_PTR; \
} while (0)
#define IS_ALIAS_PTR
Definition zend_types.h:625

Definition at line 1256 of file zend_types.h.

◆ ZVAL_ARR

#define ZVAL_ARR ( z,
a )
Value:
do { \
zend_array *__arr = (a); \
zval *__z = (z); \
Z_ARR_P(__z) = __arr; \
Z_TYPE_INFO_P(__z) = IS_ARRAY_EX; \
} while (0)
#define IS_ARRAY_EX
Definition zend_types.h:808

Definition at line 1115 of file zend_types.h.

◆ ZVAL_AST

#define ZVAL_AST ( z,
ast )
Value:
do { \
zval *__z = (z); \
Z_AST_P(__z) = ast; \
Z_TYPE_INFO_P(__z) = IS_CONSTANT_AST_EX; \
} while (0)
#define IS_CONSTANT_AST_EX
Definition zend_types.h:813

Definition at line 1230 of file zend_types.h.

◆ ZVAL_BOOL

#define ZVAL_BOOL ( z,
b )
Value:
do { \
Z_TYPE_INFO_P(z) = \
(b) ? IS_TRUE : IS_FALSE; \
} while (0)

Definition at line 1061 of file zend_types.h.

◆ ZVAL_CE

#define ZVAL_CE ( z,
c )
Value:
do { \
Z_CE_P(z) = (c); \
Z_TYPE_INFO_P(z) = IS_PTR; \
} while (0)
#define IS_PTR
Definition zend_types.h:624

Definition at line 1251 of file zend_types.h.

◆ ZVAL_COPY

#define ZVAL_COPY ( z,
v )
Value:
do { \
zval *_z1 = (z); \
const zval *_z2 = (v); \
uint32_t _t = Z_TYPE_INFO_P(_z2); \
ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t); \
GC_ADDREF(_gc); \
} \
} while (0)
uint32_t v
Definition cdf.c:1237
#define Z_TYPE_INFO_P(zval_p)
Definition zend_types.h:669
#define Z_COUNTED_P(zval_p)
Definition zend_types.h:699

Definition at line 1412 of file zend_types.h.

◆ ZVAL_COPY_DEREF

#define ZVAL_COPY_DEREF ( z,
v )
Value:
do { \
zval *_z3 = (v); \
if (Z_OPT_REFCOUNTED_P(_z3)) { \
if (UNEXPECTED(Z_OPT_ISREF_P(_z3))) { \
_z3 = Z_REFVAL_P(_z3); \
if (Z_OPT_REFCOUNTED_P(_z3)) { \
Z_ADDREF_P(_z3); \
} \
} else { \
Z_ADDREF_P(_z3); \
} \
} \
ZVAL_COPY_VALUE(z, _z3); \
} while (0)
#define Z_REFVAL_P(zval_p)
#define Z_OPT_ISREF_P(zval_p)
Definition zend_types.h:951

Definition at line 1496 of file zend_types.h.

◆ ZVAL_COPY_OR_DUP

#define ZVAL_COPY_OR_DUP ( z,
v )
Value:
do { \
zval *_z1 = (z); \
const zval *_z2 = (v); \
uint32_t _t = Z_TYPE_INFO_P(_z2); \
ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t); \
/* Objects reuse PERSISTENT as WEAKLY_REFERENCED */ \
|| GC_TYPE(_gc) == IS_OBJECT)) { \
GC_ADDREF(_gc); \
} else { \
zval_copy_ctor_func(_z1); \
} \
} \
} while (0)
#define IS_OBJECT
Definition zend_types.h:608
#define GC_PERSISTENT
Definition zend_types.h:781

Definition at line 1444 of file zend_types.h.

◆ ZVAL_COPY_OR_DUP_PROP

#define ZVAL_COPY_OR_DUP_PROP ( z,
v )
Value:
do { ZVAL_COPY_OR_DUP(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
#define ZVAL_COPY_OR_DUP(z, v)
#define Z_PROP_FLAG_P(z)

Definition at line 1573 of file zend_types.h.

◆ ZVAL_COPY_PROP

#define ZVAL_COPY_PROP ( z,
v )
Value:
do { ZVAL_COPY(z, v); Z_PROP_FLAG_P(z) = Z_PROP_FLAG_P(v); } while (0)
#define ZVAL_COPY(z, v)

Definition at line 1571 of file zend_types.h.

◆ ZVAL_COPY_VALUE

#define ZVAL_COPY_VALUE ( z,
v )
Value:
do { \
zval *_z1 = (z); \
const zval *_z2 = (v); \
uint32_t _t = Z_TYPE_INFO_P(_z2); \
ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t); \
} while (0)

Definition at line 1403 of file zend_types.h.

◆ ZVAL_COPY_VALUE_PROP

#define ZVAL_COPY_VALUE_PROP ( z,
v )
Value:
do { *(z) = *(v); } while (0)

Definition at line 1569 of file zend_types.h.

◆ ZVAL_DEINDIRECT

#define ZVAL_DEINDIRECT ( z)
Value:
do { \
if (Z_TYPE_P(z) == IS_INDIRECT) { \
(z) = Z_INDIRECT_P(z); \
} \
} while (0)
#define Z_INDIRECT_P(zval_p)
#define IS_INDIRECT
Definition zend_types.h:623

Definition at line 1468 of file zend_types.h.

◆ ZVAL_DEREF

#define ZVAL_DEREF ( z)
Value:
do { \
if (UNEXPECTED(Z_ISREF_P(z))) { \
(z) = Z_REFVAL_P(z); \
} \
} while (0)

Definition at line 1462 of file zend_types.h.

◆ ZVAL_DOUBLE

#define ZVAL_DOUBLE ( z,
d )
Value:
do { \
zval *__z = (z); \
Z_DVAL_P(__z) = d; \
Z_TYPE_INFO_P(__z) = IS_DOUBLE; \
} while (0)
#define IS_DOUBLE
Definition zend_types.h:605

Definition at line 1072 of file zend_types.h.

◆ ZVAL_DUP

#define ZVAL_DUP ( z,
v )
Value:
do { \
zval *_z1 = (z); \
const zval *_z2 = (v); \
uint32_t _t = Z_TYPE_INFO_P(_z2); \
if ((_t & Z_TYPE_MASK) == IS_ARRAY) { \
ZVAL_ARR(_z1, zend_array_dup((zend_array*)_gc));\
} else { \
GC_ADDREF(_gc); \
} \
ZVAL_COPY_VALUE_EX(_z1, _z2, _gc, _t); \
} \
} while (0)

Definition at line 1424 of file zend_types.h.

◆ ZVAL_ERROR

#define ZVAL_ERROR ( z)
Value:
do { \
Z_TYPE_INFO_P(z) = _IS_ERROR; \
} while (0)

Definition at line 1261 of file zend_types.h.

◆ ZVAL_FALSE

#define ZVAL_FALSE ( z)
Value:
do { \
Z_TYPE_INFO_P(z) = IS_FALSE; \
} while (0)

Definition at line 1053 of file zend_types.h.

◆ ZVAL_FUNC

#define ZVAL_FUNC ( z,
f )
Value:
do { \
Z_FUNC_P(z) = (f); \
Z_TYPE_INFO_P(z) = IS_PTR; \
} while (0)

Definition at line 1246 of file zend_types.h.

◆ ZVAL_INDIRECT

#define ZVAL_INDIRECT ( z,
v )
Value:
do { \
Z_INDIRECT_P(z) = (v); \
Z_TYPE_INFO_P(z) = IS_INDIRECT; \
} while (0)

Definition at line 1236 of file zend_types.h.

◆ ZVAL_INTERNED_STR

#define ZVAL_INTERNED_STR ( z,
s )
Value:
do { \
zval *__z = (z); \
zend_string *__s = (s); \
Z_STR_P(__z) = __s; \
Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX; \
} while (0)
#define IS_INTERNED_STRING_EX
Definition zend_types.h:805

Definition at line 1088 of file zend_types.h.

◆ ZVAL_LONG

#define ZVAL_LONG ( z,
l )
Value:
do { \
zval *__z = (z); \
Z_LVAL_P(__z) = l; \
Z_TYPE_INFO_P(__z) = IS_LONG; \
} while (0)
#define IS_LONG
Definition zend_types.h:604

Definition at line 1066 of file zend_types.h.

◆ ZVAL_MAKE_REF

#define ZVAL_MAKE_REF ( zv)
Value:
do { \
zval *__zv = (zv); \
if (!Z_ISREF_P(__zv)) { \
ZVAL_NEW_REF(__zv, __zv); \
} \
} while (0)

Definition at line 1480 of file zend_types.h.

◆ ZVAL_MAKE_REF_EX

#define ZVAL_MAKE_REF_EX ( z,
refcount )
Value:
do { \
zval *_z = (z); \
zend_reference *_ref = \
GC_SET_REFCOUNT(_ref, (refcount)); \
GC_TYPE_INFO(_ref) = GC_REFERENCE; \
ZVAL_COPY_VALUE(&_ref->val, _z); \
_ref->sources.ptr = NULL; \
Z_REF_P(_z) = _ref; \
Z_TYPE_INFO_P(_z) = IS_REFERENCE_EX; \
} while (0)
zend_property_info_source_list sources
Definition zend_types.h:591
struct _zend_property_info * ptr
Definition zend_types.h:580
#define emalloc(size)
Definition zend_alloc.h:151
#define GC_REFERENCE
Definition zend_types.h:789
#define IS_REFERENCE_EX
Definition zend_types.h:811

Definition at line 1206 of file zend_types.h.

◆ ZVAL_NEW_EMPTY_REF

#define ZVAL_NEW_EMPTY_REF ( z)
Value:
do { \
zend_reference *_ref = \
GC_SET_REFCOUNT(_ref, 1); \
GC_TYPE_INFO(_ref) = GC_REFERENCE; \
_ref->sources.ptr = NULL; \
Z_REF_P(z) = _ref; \
Z_TYPE_INFO_P(z) = IS_REFERENCE_EX; \
} while (0)

Definition at line 1185 of file zend_types.h.

◆ ZVAL_NEW_PERSISTENT_ARR

#define ZVAL_NEW_PERSISTENT_ARR ( z)
Value:
do { \
zval *__z = (z); \
zend_array *_arr = \
(zend_array *) malloc(sizeof(zend_array)); \
Z_ARR_P(__z) = _arr; \
Z_TYPE_INFO_P(__z) = IS_ARRAY_EX; \
} while (0)

Definition at line 1122 of file zend_types.h.

◆ ZVAL_NEW_PERSISTENT_REF

#define ZVAL_NEW_PERSISTENT_REF ( z,
r )
Value:
do { \
zend_reference *_ref = \
(zend_reference *) malloc(sizeof(zend_reference)); \
GC_SET_REFCOUNT(_ref, 1); \
GC_TYPE_INFO(_ref) = GC_REFERENCE | \
ZVAL_COPY_VALUE(&_ref->val, r); \
_ref->sources.ptr = NULL; \
Z_REF_P(z) = _ref; \
Z_TYPE_INFO_P(z) = IS_REFERENCE_EX; \
} while (0)

Definition at line 1218 of file zend_types.h.

◆ ZVAL_NEW_PERSISTENT_RES

#define ZVAL_NEW_PERSISTENT_RES ( z,
h,
p,
t )
Value:
do { \
zend_resource *_res = \
(zend_resource *) malloc(sizeof(zend_resource)); \
zval *__z; \
GC_SET_REFCOUNT(_res, 1); \
GC_TYPE_INFO(_res) = GC_RESOURCE | \
_res->handle = (h); \
_res->type = (t); \
_res->ptr = (p); \
__z = (z); \
Z_RES_P(__z) = _res; \
Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX; \
} while (0)
zend_long handle
Definition zend_types.h:568
struct _zend_resource zend_resource
Definition zend_types.h:99
#define GC_RESOURCE
Definition zend_types.h:788
#define IS_RESOURCE_EX
Definition zend_types.h:810

Definition at line 1164 of file zend_types.h.

◆ ZVAL_NEW_REF

#define ZVAL_NEW_REF ( z,
r )
Value:
do { \
zend_reference *_ref = \
GC_SET_REFCOUNT(_ref, 1); \
GC_TYPE_INFO(_ref) = GC_REFERENCE; \
ZVAL_COPY_VALUE(&_ref->val, r); \
_ref->sources.ptr = NULL; \
Z_REF_P(z) = _ref; \
Z_TYPE_INFO_P(z) = IS_REFERENCE_EX; \
} while (0)

Definition at line 1195 of file zend_types.h.

◆ ZVAL_NEW_RES

#define ZVAL_NEW_RES ( z,
h,
p,
t )
Value:
do { \
zend_resource *_res = \
zval *__z; \
GC_SET_REFCOUNT(_res, 1); \
GC_TYPE_INFO(_res) = GC_RESOURCE; \
_res->handle = (h); \
_res->type = (t); \
_res->ptr = (p); \
__z = (z); \
Z_RES_P(__z) = _res; \
Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX; \
} while (0)

Definition at line 1150 of file zend_types.h.

◆ ZVAL_NEW_STR

#define ZVAL_NEW_STR ( z,
s )
Value:
do { \
zval *__z = (z); \
zend_string *__s = (s); \
Z_STR_P(__z) = __s; \
Z_TYPE_INFO_P(__z) = IS_STRING_EX; \
} while (0)
#define IS_STRING_EX
Definition zend_types.h:807

Definition at line 1095 of file zend_types.h.

◆ ZVAL_NULL

#define ZVAL_NULL ( z)
Value:
do { \
Z_TYPE_INFO_P(z) = IS_NULL; \
} while (0)

Definition at line 1049 of file zend_types.h.

◆ ZVAL_OBJ

#define ZVAL_OBJ ( z,
o )
Value:
do { \
zval *__z = (z); \
Z_OBJ_P(__z) = (o); \
Z_TYPE_INFO_P(__z) = IS_OBJECT_EX; \
} while (0)
#define IS_OBJECT_EX
Definition zend_types.h:809

Definition at line 1130 of file zend_types.h.

◆ ZVAL_OBJ_COPY

#define ZVAL_OBJ_COPY ( z,
o )
Value:
do { \
zval *__z = (z); \
zend_object *__o = (o); \
GC_ADDREF(__o); \
Z_OBJ_P(__z) = __o; \
Z_TYPE_INFO_P(__z) = IS_OBJECT_EX; \
} while (0)
struct _zend_object zend_object

Definition at line 1136 of file zend_types.h.

◆ ZVAL_OPT_DEREF

#define ZVAL_OPT_DEREF ( z)
Value:
do { \
(z) = Z_REFVAL_P(z); \
} \
} while (0)

Definition at line 1474 of file zend_types.h.

◆ ZVAL_PTR

#define ZVAL_PTR ( z,
p )
Value:
do { \
Z_PTR_P(z) = (p); \
Z_TYPE_INFO_P(z) = IS_PTR; \
} while (0)

Definition at line 1241 of file zend_types.h.

◆ ZVAL_REF

#define ZVAL_REF ( z,
r )
Value:
do { \
zval *__z = (z); \
Z_REF_P(__z) = (r); \
Z_TYPE_INFO_P(__z) = IS_REFERENCE_EX; \
} while (0)

Definition at line 1179 of file zend_types.h.

◆ ZVAL_RES

#define ZVAL_RES ( z,
r )
Value:
do { \
zval *__z = (z); \
Z_RES_P(__z) = (r); \
Z_TYPE_INFO_P(__z) = IS_RESOURCE_EX; \
} while (0)

Definition at line 1144 of file zend_types.h.

◆ ZVAL_STR

#define ZVAL_STR ( z,
s )
Value:
do { \
zval *__z = (z); \
zend_string *__s = (s); \
Z_STR_P(__z) = __s; \
/* interned strings support */ \
Z_TYPE_INFO_P(__z) = ZSTR_IS_INTERNED(__s) ? \
} while (0)

Definition at line 1078 of file zend_types.h.

◆ ZVAL_STR_COPY

#define ZVAL_STR_COPY ( z,
s )
Value:
do { \
zval *__z = (z); \
zend_string *__s = (s); \
Z_STR_P(__z) = __s; \
/* interned strings support */ \
if (ZSTR_IS_INTERNED(__s)) { \
Z_TYPE_INFO_P(__z) = IS_INTERNED_STRING_EX; \
} else { \
GC_ADDREF(__s); \
Z_TYPE_INFO_P(__z) = IS_STRING_EX; \
} \
} while (0)

Definition at line 1102 of file zend_types.h.

◆ ZVAL_TRUE

#define ZVAL_TRUE ( z)
Value:
do { \
Z_TYPE_INFO_P(z) = IS_TRUE; \
} while (0)

Definition at line 1057 of file zend_types.h.

◆ ZVAL_UNDEF

#define ZVAL_UNDEF ( z)
Value:
do { \
Z_TYPE_INFO_P(z) = IS_UNDEF; \
} while (0)

Definition at line 1045 of file zend_types.h.

◆ ZVAL_UNREF

#define ZVAL_UNREF ( z)
Value:
do { \
zval *_z = (z); \
ZEND_ASSERT(Z_ISREF_P(_z)); \
ref = Z_REF_P(_z); \
ZVAL_COPY_VALUE(_z, &ref->val); \
efree_size(ref, sizeof(zend_reference)); \
} while (0)

Definition at line 1487 of file zend_types.h.

Typedef Documentation

◆ Bucket

typedef struct _Bucket Bucket

◆ compare_func_t

typedef int(* compare_func_t) (const void *, const void *)

Definition at line 104 of file zend_types.h.

◆ copy_ctor_func_t

typedef void(* copy_ctor_func_t) (zval *pElement)

Definition at line 108 of file zend_types.h.

◆ dtor_func_t

typedef void(* dtor_func_t) (zval *pDest)

Definition at line 107 of file zend_types.h.

◆ HashPosition

typedef uint32_t HashPosition

Definition at line 548 of file zend_types.h.

◆ HashTable

typedef struct _zend_array HashTable

Definition at line 386 of file zend_types.h.

◆ HashTableIterator

◆ sort_func_t

typedef void(* sort_func_t) (void *, size_t, size_t, compare_func_t, swap_func_t)

Definition at line 106 of file zend_types.h.

◆ swap_func_t

typedef void(* swap_func_t) (void *, void *)

Definition at line 105 of file zend_types.h.

◆ zend_ast

typedef struct _zend_ast zend_ast

Definition at line 102 of file zend_types.h.

◆ zend_ast_ref

typedef struct _zend_ast_ref zend_ast_ref

Definition at line 101 of file zend_types.h.

◆ zend_execute_data

Definition at line 91 of file zend_types.h.

◆ zend_object_handlers

Definition at line 88 of file zend_types.h.

◆ zend_refcounted

Definition at line 95 of file zend_types.h.

◆ zend_refcounted_h

◆ zend_reference

Definition at line 100 of file zend_types.h.

◆ zend_resource

typedef struct _zend_resource zend_resource

Definition at line 99 of file zend_types.h.

◆ zend_result

Definition at line 64 of file zend_types.h.

◆ zend_uchar

typedef unsigned char zend_uchar

Definition at line 57 of file zend_types.h.

◆ zend_value

typedef union _zend_value zend_value

Enumeration Type Documentation

◆ ZEND_RESULT_CODE

Enumerator
SUCCESS 
FAILURE 

Definition at line 59 of file zend_types.h.