27# define ZEND_AST_SPEC 1
30#define ZEND_AST_SPECIAL_SHIFT 6
31#define ZEND_AST_IS_LIST_SHIFT 7
32#define ZEND_AST_NUM_CHILDREN_SHIFT 8
234# define ZEND_AST_SPEC_CALL(name, ...) \
235 ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
236# define ZEND_AST_SPEC_CALL_(name, _, _6, _5, _4, _3, _2, _1, suffix, ...) \
238# define ZEND_AST_SPEC_CALL_EX(name, ...) \
239 ZEND_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _n, _5, _4, _3, _2, _1, _0)(__VA_ARGS__))
240# define ZEND_AST_SPEC_CALL_EX_(name, _, _7, _6, _5, _4, _3, _2, _1, suffix, ...) \
290# define zend_ast_create(...) \
291 ZEND_AST_SPEC_CALL(zend_ast_create, __VA_ARGS__)
292# define zend_ast_create_ex(...) \
293 ZEND_AST_SPEC_CALL_EX(zend_ast_create_ex, __VA_ARGS__)
294# define zend_ast_create_list(init_children, ...) \
295 ZEND_AST_SPEC_CALL(zend_ast_create_list, __VA_ARGS__)
346 zval *
zv = zend_ast_get_zval(ast);
363 zval *
zv = zend_ast_get_zval(ast);
zend_string * doc_comment
ZEND_API zend_ast_process_t zend_ast_process
#define zend_ast_create(...)
#define zend_ast_create_ex(...)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_zval_from_long(zend_long lval)
ZEND_API zend_ast * zend_ast_create_n(unsigned kind,...)
ZEND_API void ZEND_FASTCALL zend_ast_destroy(zend_ast *ast)
struct _zend_ast_zval zend_ast_zval
ZEND_API zend_string * zend_ast_export(const char *prefix, zend_ast *ast, const char *suffix)
#define ZEND_AST_NUM_CHILDREN_SHIFT
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_2(zend_ast_kind kind, zend_ast *child1, zend_ast *child2)
struct _zend_ast_list zend_ast_list
#define ZEND_AST_SPECIAL_SHIFT
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_1(zend_ast_kind kind, zend_ast *child)
ZEND_API void zend_ast_apply(zend_ast *ast, zend_ast_apply_func fn, void *context)
ZEND_API zend_result ZEND_FASTCALL zend_ast_evaluate_ex(zval *result, zend_ast *ast, zend_class_entry *scope, bool *short_circuited_ptr, zend_ast_evaluate_ctx *ctx)
ZEND_API zend_ast_ref *ZEND_FASTCALL zend_ast_copy(zend_ast *ast)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_3(zend_ast_kind kind, zend_ast *child1, zend_ast *child2, zend_ast *child3)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_zval_with_lineno(zval *zv, uint32_t lineno)
zend_ast *ZEND_FASTCALL zend_ast_with_attributes(zend_ast *ast, zend_ast *attr)
zend_ast * zend_ast_create_concat_op(zend_ast *op0, zend_ast *op1)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_list_1(zend_ast_kind kind, zend_ast *child)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_class_const_or_name(zend_ast *class_name, zend_ast *name)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_va(zend_ast_kind kind, zend_ast_attr attr, va_list *va)
void(* zend_ast_process_t)(zend_ast *ast)
void(* zend_ast_apply_func)(zend_ast **ast_ptr, void *context)
ZEND_API zend_result ZEND_FASTCALL zend_ast_evaluate(zval *result, zend_ast *ast, zend_class_entry *scope)
#define ZEND_AST_IS_LIST_SHIFT
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_zval_ex(zval *zv, zend_ast_attr attr)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_5(zend_ast_kind kind, zend_ast *child1, zend_ast *child2, zend_ast *child3, zend_ast *child4, zend_ast *child5)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_4(zend_ast_kind kind, zend_ast *child1, zend_ast *child2, zend_ast *child3, zend_ast *child4)
#define zend_ast_create_list(init_children,...)
ZEND_API zend_ast * zend_ast_create_decl(zend_ast_kind kind, uint32_t flags, uint32_t start_lineno, zend_string *doc_comment, zend_string *name, zend_ast *child0, zend_ast *child1, zend_ast *child2, zend_ast *child3, zend_ast *child4)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_list_2(zend_ast_kind kind, zend_ast *child1, zend_ast *child2)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_list_add(zend_ast *list, zend_ast *op)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_list_0(zend_ast_kind kind)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_0(zend_ast_kind kind)
ZEND_API zend_ast * zend_ast_create_ex_n(zend_ast_kind kind, unsigned attr,...)
@ ZEND_AST_ASSIGN_COALESCE
@ ZEND_AST_CLASS_CONST_DECL
@ ZEND_AST_CLASS_CONST_GROUP
@ ZEND_AST_ATTRIBUTE_LIST
@ ZEND_AST_TRAIT_ADAPTATIONS
@ ZEND_AST_TYPE_INTERSECTION
@ ZEND_AST_TRAIT_PRECEDENCE
@ ZEND_AST_ATTRIBUTE_GROUP
@ ZEND_AST_PARENT_PROPERTY_HOOK_CALL
@ ZEND_AST_CALLABLE_CONVERT
@ ZEND_AST_INCLUDE_OR_EVAL
@ ZEND_AST_MATCH_ARM_LIST
@ ZEND_AST_CONST_ENUM_INIT
@ ZEND_AST_METHOD_REFERENCE
@ ZEND_AST_PROPERTY_HOOK_SHORT_BODY
@ ZEND_AST_NULLSAFE_METHOD_CALL
@ ZEND_AST_CONSTANT_CLASS
struct _zend_ast_decl zend_ast_decl
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_zval(zval *zv)
ZEND_API void ZEND_FASTCALL zend_ast_ref_destroy(zend_ast_ref *ast)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_constant(zend_string *name, zend_ast_attr attr)
ZEND_API zend_ast *ZEND_FASTCALL zend_ast_create_zval_from_str(zend_string *str)
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)
struct _zend_string zend_string
#define zend_always_inline
#define XtOffsetOf(s_type, field)
struct _zend_class_entry zend_class_entry
struct _zend_ast_ref zend_ast_ref
#define Z_LINENO_P(zval_p)
ZEND_RESULT_CODE zend_result
struct _zend_ast zend_ast