@@ -59,40 +59,46 @@ typedef struct _zend_fcall_info_cache {
59
59
60
60
#define ZEND_NS_NAME (ns , name ) ns "\\" name
61
61
62
+ /* ZEND_FN/ZEND_MN are inlined below to prevent pre-scan macro expansion,
63
+ * which causes issues if the function name is also a macro name. */
62
64
#define ZEND_FN (name ) zif_##name
63
65
#define ZEND_MN (name ) zim_##name
66
+
64
67
#define ZEND_NAMED_FUNCTION (name ) void ZEND_FASTCALL name(INTERNAL_FUNCTION_PARAMETERS)
65
- #define ZEND_FUNCTION (name ) ZEND_NAMED_FUNCTION(ZEND_FN( name) )
66
- #define ZEND_METHOD (classname , name ) ZEND_NAMED_FUNCTION(ZEND_MN( classname##_##name) )
68
+ #define ZEND_FUNCTION (name ) ZEND_NAMED_FUNCTION(zif_## name)
69
+ #define ZEND_METHOD (classname , name ) ZEND_NAMED_FUNCTION(zim_## classname##_##name)
67
70
68
71
#define ZEND_FENTRY (zend_name , name , arg_info , flags ) { #zend_name, name, arg_info, (uint32_t) (sizeof(arg_info)/sizeof(struct _zend_internal_arg_info)-1), flags },
69
72
70
73
#define ZEND_RAW_FENTRY (zend_name , name , arg_info , flags ) { zend_name, name, arg_info, (uint32_t) (sizeof(arg_info)/sizeof(struct _zend_internal_arg_info)-1), flags },
74
+
75
+ /* Same as ZEND_NAMED_FE */
71
76
#define ZEND_RAW_NAMED_FE (zend_name , name , arg_info ) ZEND_RAW_FENTRY(#zend_name, name, arg_info, 0)
72
77
73
- #define ZEND_NAMED_FE (zend_name , name , arg_info ) ZEND_FENTRY( zend_name, name, arg_info, 0)
74
- #define ZEND_FE (name , arg_info ) ZEND_FENTRY( name, ZEND_FN( name) , arg_info, 0)
75
- #define ZEND_DEP_FE (name , arg_info ) ZEND_FENTRY( name, ZEND_FN( name) , arg_info, ZEND_ACC_DEPRECATED)
76
- #define ZEND_FALIAS (name , alias , arg_info ) ZEND_FENTRY( name, ZEND_FN( alias) , arg_info, 0)
77
- #define ZEND_DEP_FALIAS (name , alias , arg_info ) ZEND_FENTRY( name, ZEND_FN( alias) , arg_info, ZEND_ACC_DEPRECATED)
78
+ #define ZEND_NAMED_FE (zend_name , name , arg_info ) ZEND_RAW_FENTRY(# zend_name, name, arg_info, 0)
79
+ #define ZEND_FE (name , arg_info ) ZEND_RAW_FENTRY(# name, zif_## name, arg_info, 0)
80
+ #define ZEND_DEP_FE (name , arg_info ) ZEND_RAW_FENTRY(# name, zif_## name, arg_info, ZEND_ACC_DEPRECATED)
81
+ #define ZEND_FALIAS (name , alias , arg_info ) ZEND_RAW_FENTRY(# name, zif_## alias, arg_info, 0)
82
+ #define ZEND_DEP_FALIAS (name , alias , arg_info ) ZEND_RAW_FENTRY(# name, zif_## alias, arg_info, ZEND_ACC_DEPRECATED)
78
83
#define ZEND_NAMED_ME (zend_name , name , arg_info , flags ) ZEND_FENTRY(zend_name, name, arg_info, flags)
79
- #define ZEND_ME (classname , name , arg_info , flags ) ZEND_FENTRY(name, ZEND_MN(classname##_##name), arg_info, flags)
80
- #define ZEND_DEP_ME (classname , name , arg_info , flags ) ZEND_ME(classname, name, arg_info, flags | ZEND_ACC_DEPRECATED)
81
- #define ZEND_ABSTRACT_ME (classname , name , arg_info ) ZEND_FENTRY(name, NULL, arg_info, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
82
- #define ZEND_MALIAS (classname , name , alias , arg_info , flags ) \
83
- ZEND_FENTRY(name, ZEND_MN(classname##_##alias), arg_info, flags)
84
- #define ZEND_ME_MAPPING (name , func_name , arg_types , flags ) ZEND_NAMED_ME(name, ZEND_FN(func_name), arg_types, flags)
84
+ #define ZEND_ME (classname , name , arg_info , flags ) ZEND_RAW_FENTRY(#name, zim_##classname##_##name, arg_info, flags)
85
+ #define ZEND_DEP_ME (classname , name , arg_info , flags ) ZEND_RAW_FENTRY(#name, zim_##classname##_##name, arg_info, flags | ZEND_ACC_DEPRECATED)
86
+ #define ZEND_ABSTRACT_ME (classname , name , arg_info ) ZEND_RAW_FENTRY(#name, NULL, arg_info, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
87
+ #define ZEND_MALIAS (classname , name , alias , arg_info , flags ) ZEND_RAW_FENTRY(#name, zim_##classname##_##alias, arg_info, flags)
88
+ #define ZEND_ME_MAPPING (name , func_name , arg_types , flags ) ZEND_RAW_FENTRY(#name, zif_##func_name, arg_types, flags)
85
89
86
90
#define ZEND_NS_FENTRY (ns , zend_name , name , arg_info , flags ) ZEND_RAW_FENTRY(ZEND_NS_NAME(ns, #zend_name), name, arg_info, flags)
87
91
88
92
#define ZEND_NS_RAW_FENTRY (ns , zend_name , name , arg_info , flags ) ZEND_RAW_FENTRY(ZEND_NS_NAME(ns, zend_name), name, arg_info, flags)
93
+
94
+ /* Same as ZEND_NS_NAMED_FE */
89
95
#define ZEND_NS_RAW_NAMED_FE (ns , zend_name , name , arg_info ) ZEND_NS_RAW_FENTRY(ns, #zend_name, name, arg_info, 0)
90
96
91
- #define ZEND_NS_NAMED_FE (ns , zend_name , name , arg_info ) ZEND_NS_FENTRY (ns, zend_name, name, arg_info, 0)
92
- #define ZEND_NS_FE (ns , name , arg_info ) ZEND_NS_FENTRY (ns, name, ZEND_FN( name) , arg_info, 0)
93
- #define ZEND_NS_DEP_FE (ns , name , arg_info ) ZEND_NS_FENTRY (ns, name, ZEND_FN( name) , arg_info, ZEND_ACC_DEPRECATED)
94
- #define ZEND_NS_FALIAS (ns , name , alias , arg_info ) ZEND_NS_FENTRY (ns, name, ZEND_FN( alias) , arg_info, 0)
95
- #define ZEND_NS_DEP_FALIAS (ns , name , alias , arg_info ) ZEND_NS_FENTRY (ns, name, ZEND_FN( alias) , arg_info, ZEND_ACC_DEPRECATED)
97
+ #define ZEND_NS_NAMED_FE (ns , zend_name , name , arg_info ) ZEND_NS_RAW_FENTRY (ns, # zend_name, name, arg_info, 0)
98
+ #define ZEND_NS_FE (ns , name , arg_info ) ZEND_NS_RAW_FENTRY (ns, # name, zif_## name, arg_info, 0)
99
+ #define ZEND_NS_DEP_FE (ns , name , arg_info ) ZEND_NS_RAW_FENTRY (ns, # name, zif_## name, arg_info, ZEND_ACC_DEPRECATED)
100
+ #define ZEND_NS_FALIAS (ns , name , alias , arg_info ) ZEND_NS_RAW_FENTRY (ns, # name, zif_## alias, arg_info, 0)
101
+ #define ZEND_NS_DEP_FALIAS (ns , name , alias , arg_info ) ZEND_NS_RAW_FENTRY (ns, # name, zif_## alias, arg_info, ZEND_ACC_DEPRECATED)
96
102
97
103
#define ZEND_FE_END { NULL, NULL, NULL, 0, 0 }
98
104
0 commit comments