20#ifndef ZEND_CONSTANTS_H
21#define ZEND_CONSTANTS_H
26#define CONST_PERSISTENT (1<<0)
27#define CONST_NO_FILE_CACHE (1<<1)
28#define CONST_DEPRECATED (1<<2)
29#define CONST_OWNED (1<<3)
31#define PHP_USER_CONSTANT 0x7fffff
38#define ZEND_CONSTANT_FLAGS(c) \
39 (Z_CONSTANT_FLAGS((c)->value) & 0xff)
41#define ZEND_CONSTANT_MODULE_NUMBER(c) \
42 (Z_CONSTANT_FLAGS((c)->value) >> 8)
44#define ZEND_CONSTANT_SET_FLAGS(c, _flags, _module_number) do { \
45 Z_CONSTANT_FLAGS((c)->value) = \
46 ((_flags) & 0xff) | ((_module_number) << 8); \
49#define REGISTER_NULL_CONSTANT(name, flags) zend_register_null_constant((name), sizeof(name)-1, (flags), module_number)
50#define REGISTER_BOOL_CONSTANT(name, bval, flags) zend_register_bool_constant((name), sizeof(name)-1, (bval), (flags), module_number)
51#define REGISTER_LONG_CONSTANT(name, lval, flags) zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), module_number)
52#define REGISTER_DOUBLE_CONSTANT(name, dval, flags) zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), module_number)
53#define REGISTER_STRING_CONSTANT(name, str, flags) zend_register_string_constant((name), sizeof(name)-1, (str), (flags), module_number)
54#define REGISTER_STRINGL_CONSTANT(name, str, len, flags) zend_register_stringl_constant((name), sizeof(name)-1, (str), (len), (flags), module_number)
56#define REGISTER_NS_NULL_CONSTANT(ns, name, flags) zend_register_null_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, (flags), module_number)
57#define REGISTER_NS_BOOL_CONSTANT(ns, name, bval, flags) zend_register_bool_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, (bval), (flags), module_number)
58#define REGISTER_NS_LONG_CONSTANT(ns, name, lval, flags) zend_register_long_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, (lval), (flags), module_number)
59#define REGISTER_NS_DOUBLE_CONSTANT(ns, name, dval, flags) zend_register_double_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, (dval), (flags), module_number)
60#define REGISTER_NS_STRING_CONSTANT(ns, name, str, flags) zend_register_string_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, (str), (flags), module_number)
61#define REGISTER_NS_STRINGL_CONSTANT(ns, name, str, len, flags) zend_register_stringl_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, (str), (len), (flags), module_number)
63#define REGISTER_MAIN_NULL_CONSTANT(name, flags) zend_register_null_constant((name), sizeof(name)-1, (flags), 0)
64#define REGISTER_MAIN_BOOL_CONSTANT(name, bval, flags) zend_register_bool_constant((name), sizeof(name)-1, (bval), (flags), 0)
65#define REGISTER_MAIN_LONG_CONSTANT(name, lval, flags) zend_register_long_constant((name), sizeof(name)-1, (lval), (flags), 0)
66#define REGISTER_MAIN_DOUBLE_CONSTANT(name, dval, flags) zend_register_double_constant((name), sizeof(name)-1, (dval), (flags), 0)
67#define REGISTER_MAIN_STRING_CONSTANT(name, str, flags) zend_register_string_constant((name), sizeof(name)-1, (str), (flags), 0)
68#define REGISTER_MAIN_STRINGL_CONSTANT(name, str, len, flags) zend_register_stringl_constant((name), sizeof(name)-1, (str), (len), (flags), 0)
95 const char *
name,
size_t name_len) {
96 if (name_len == 4 || name_len == 5) {
104#define ZEND_CONSTANT_DTOR free_zend_constant
struct _zend_class_constant zend_class_constant
ZEND_API zval * zend_get_constant_ex(zend_string *cname, zend_class_entry *scope, uint32_t flags)
ZEND_API void zend_register_bool_constant(const char *name, size_t name_len, bool bval, int flags, int module_number)
ZEND_API void zend_register_stringl_constant(const char *name, size_t name_len, const char *strval, size_t strlen, int flags, int module_number)
ZEND_API zval * zend_get_constant(zend_string *name)
ZEND_API void zend_register_string_constant(const char *name, size_t name_len, const char *strval, int flags, int module_number)
ZEND_API void zend_register_double_constant(const char *name, size_t name_len, double dval, int flags, int module_number)
void clean_module_constants(int module_number)
void zend_register_standard_constants(void)
ZEND_API zend_constant * zend_get_constant_ptr(zend_string *name)
ZEND_API zend_result zend_register_constant(zend_constant *c)
ZEND_API zval * zend_get_constant_str(const char *name, size_t name_len)
ZEND_API void zend_register_long_constant(const char *name, size_t name_len, zend_long lval, int flags, int module_number)
void free_zend_constant(zval *zv)
ZEND_API void zend_register_null_constant(const char *name, size_t name_len, int flags, int module_number)
ZEND_API bool zend_verify_const_access(zend_class_constant *c, zend_class_entry *scope)
ZEND_API zval * zend_get_class_constant_ex(zend_string *class_name, zend_string *constant_name, zend_class_entry *scope, uint32_t flags)
void zend_startup_constants(void)
ZEND_API zend_constant * _zend_get_special_const(const char *name, size_t name_len)
struct _zend_constant zend_constant
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)
struct _zend_string zend_string
#define zend_always_inline
struct _zend_class_entry zend_class_entry
struct _zend_array HashTable
ZEND_RESULT_CODE zend_result