@@ -176,20 +176,46 @@ CLANG_MACRO_CONDITIONAL("SWIFT_ENUM_ATTR", "(_extensibility)", \
176
176
" __attribute__((enum_extensibility(_extensibility)))" )
177
177
178
178
CLANG_MACRO_BODY(" SWIFT_ENUM" , \
179
- " # define SWIFT_ENUM(_type, _name, _extensibility) " \
179
+ " # if (defined(__cplusplus) && __cplusplus >= 201103L) || " \
180
+ " (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || " \
181
+ " __has_feature(objc_fixed_enum)\n " \
182
+ " # define SWIFT_ENUM(_type, _name, _extensibility) " \
180
183
" enum _name : _type _name; " \
181
184
" enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type\n " \
182
- " # if __has_feature(generalized_swift_name)\n " \
183
- " # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) " \
184
- " enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); " \
185
- " enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) " \
186
- " SWIFT_ENUM_EXTRA _name : _type\n " \
185
+ " # if __has_feature(generalized_swift_name)\n " \
186
+ " # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) " \
187
+ " enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); " \
188
+ " enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) " \
189
+ " SWIFT_ENUM_EXTRA _name : _type\n " \
190
+ " # else\n " \
191
+ " # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) " \
192
+ " SWIFT_ENUM(_type, _name, _extensibility)\n " \
193
+ " # endif\n " \
187
194
" # else\n " \
195
+ " # define SWIFT_ENUM(_type, _name, _extensibility) _type _name; enum \n " \
188
196
" # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) " \
189
197
" SWIFT_ENUM(_type, _name, _extensibility)\n " \
190
198
" # endif" )
191
199
CLANG_MACRO_DEFINED(" SWIFT_ENUM_NAMED" )
192
200
201
+ CLANG_MACRO_BODY(" SWIFT_ENUM_TAG" , \
202
+ " # if (defined(__cplusplus) && __cplusplus >= 201103L) || " \
203
+ " (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || " \
204
+ " __has_feature(objc_fixed_enum)\n " \
205
+ " # define SWIFT_ENUM_TAG enum\n " \
206
+ " # else\n " \
207
+ " # define SWIFT_ENUM_TAG\n " \
208
+ " # endif" )
209
+
210
+ CLANG_MACRO_BODY(" SWIFT_ENUM_FWD_DECL" , \
211
+ " # if (defined(__cplusplus) && __cplusplus >= 201103L) || " \
212
+ " (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || " \
213
+ " __has_feature(objc_fixed_enum)\n " \
214
+ " # define SWIFT_ENUM_FWD_DECL(_type, _name) enum _name : _type _name;\n " \
215
+ " # else\n " \
216
+ " # define SWIFT_ENUM_FWD_DECL(_type, _name) _type _name;\n " \
217
+ " # endif" )
218
+
193
219
CLANG_MACRO(" SWIFT_UNAVAILABLE" , , " __attribute__((unavailable))" )
194
220
CLANG_MACRO(" SWIFT_UNAVAILABLE_MSG" , " (msg)" , " __attribute__((unavailable(msg)))" )
195
221
0 commit comments