@@ -59,40 +59,46 @@ typedef struct _zend_fcall_info_cache {
5959
6060#define ZEND_NS_NAME (ns , name ) ns "\\" name
6161
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. */
6264#define ZEND_FN (name ) zif_##name
6365#define ZEND_MN (name ) zim_##name
66+
6467#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)
6770
6871#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 },
6972
7073#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 */
7176#define ZEND_RAW_NAMED_FE (zend_name , name , arg_info ) ZEND_RAW_FENTRY(#zend_name, name, arg_info, 0)
7277
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)
7883#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)
8589
8690#define ZEND_NS_FENTRY (ns , zend_name , name , arg_info , flags ) ZEND_RAW_FENTRY(ZEND_NS_NAME(ns, #zend_name), name, arg_info, flags)
8791
8892#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 */
8995#define ZEND_NS_RAW_NAMED_FE (ns , zend_name , name , arg_info ) ZEND_NS_RAW_FENTRY(ns, #zend_name, name, arg_info, 0)
9096
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)
96102
97103#define ZEND_FE_END { NULL, NULL, NULL, 0, 0 }
98104
0 commit comments