Loading...
Searching...
No Matches
Go to the documentation of this file.
31#define JUCE_NTH_ARG_(_00, _01, _02, _03, _04, _05, _06, _07, _08, _09, \
32 _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, \
33 _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, \
34 _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, N, ...)\
37#define JUCE_EACH_00_(FN)
38#define JUCE_EACH_01_(FN, X) FN(X)
39#define JUCE_EACH_02_(FN, X, ...) FN(X) JUCE_EACH_01_(FN, __VA_ARGS__)
40#define JUCE_EACH_03_(FN, X, ...) FN(X) JUCE_EACH_02_(FN, __VA_ARGS__)
41#define JUCE_EACH_04_(FN, X, ...) FN(X) JUCE_EACH_03_(FN, __VA_ARGS__)
42#define JUCE_EACH_05_(FN, X, ...) FN(X) JUCE_EACH_04_(FN, __VA_ARGS__)
43#define JUCE_EACH_06_(FN, X, ...) FN(X) JUCE_EACH_05_(FN, __VA_ARGS__)
44#define JUCE_EACH_07_(FN, X, ...) FN(X) JUCE_EACH_06_(FN, __VA_ARGS__)
45#define JUCE_EACH_08_(FN, X, ...) FN(X) JUCE_EACH_07_(FN, __VA_ARGS__)
46#define JUCE_EACH_09_(FN, X, ...) FN(X) JUCE_EACH_08_(FN, __VA_ARGS__)
47#define JUCE_EACH_10_(FN, X, ...) FN(X) JUCE_EACH_09_(FN, __VA_ARGS__)
48#define JUCE_EACH_11_(FN, X, ...) FN(X) JUCE_EACH_10_(FN, __VA_ARGS__)
49#define JUCE_EACH_12_(FN, X, ...) FN(X) JUCE_EACH_11_(FN, __VA_ARGS__)
50#define JUCE_EACH_13_(FN, X, ...) FN(X) JUCE_EACH_12_(FN, __VA_ARGS__)
51#define JUCE_EACH_14_(FN, X, ...) FN(X) JUCE_EACH_13_(FN, __VA_ARGS__)
52#define JUCE_EACH_15_(FN, X, ...) FN(X) JUCE_EACH_14_(FN, __VA_ARGS__)
53#define JUCE_EACH_16_(FN, X, ...) FN(X) JUCE_EACH_15_(FN, __VA_ARGS__)
54#define JUCE_EACH_17_(FN, X, ...) FN(X) JUCE_EACH_16_(FN, __VA_ARGS__)
55#define JUCE_EACH_18_(FN, X, ...) FN(X) JUCE_EACH_17_(FN, __VA_ARGS__)
56#define JUCE_EACH_19_(FN, X, ...) FN(X) JUCE_EACH_18_(FN, __VA_ARGS__)
57#define JUCE_EACH_20_(FN, X, ...) FN(X) JUCE_EACH_19_(FN, __VA_ARGS__)
58#define JUCE_EACH_21_(FN, X, ...) FN(X) JUCE_EACH_20_(FN, __VA_ARGS__)
59#define JUCE_EACH_22_(FN, X, ...) FN(X) JUCE_EACH_21_(FN, __VA_ARGS__)
60#define JUCE_EACH_23_(FN, X, ...) FN(X) JUCE_EACH_22_(FN, __VA_ARGS__)
61#define JUCE_EACH_24_(FN, X, ...) FN(X) JUCE_EACH_23_(FN, __VA_ARGS__)
62#define JUCE_EACH_25_(FN, X, ...) FN(X) JUCE_EACH_24_(FN, __VA_ARGS__)
63#define JUCE_EACH_26_(FN, X, ...) FN(X) JUCE_EACH_25_(FN, __VA_ARGS__)
64#define JUCE_EACH_27_(FN, X, ...) FN(X) JUCE_EACH_26_(FN, __VA_ARGS__)
65#define JUCE_EACH_28_(FN, X, ...) FN(X) JUCE_EACH_27_(FN, __VA_ARGS__)
66#define JUCE_EACH_29_(FN, X, ...) FN(X) JUCE_EACH_28_(FN, __VA_ARGS__)
67#define JUCE_EACH_30_(FN, X, ...) FN(X) JUCE_EACH_29_(FN, __VA_ARGS__)
68#define JUCE_EACH_31_(FN, X, ...) FN(X) JUCE_EACH_30_(FN, __VA_ARGS__)
69#define JUCE_EACH_32_(FN, X, ...) FN(X) JUCE_EACH_31_(FN, __VA_ARGS__)
70#define JUCE_EACH_33_(FN, X, ...) FN(X) JUCE_EACH_32_(FN, __VA_ARGS__)
71#define JUCE_EACH_34_(FN, X, ...) FN(X) JUCE_EACH_33_(FN, __VA_ARGS__)
72#define JUCE_EACH_35_(FN, X, ...) FN(X) JUCE_EACH_34_(FN, __VA_ARGS__)
73#define JUCE_EACH_36_(FN, X, ...) FN(X) JUCE_EACH_35_(FN, __VA_ARGS__)
74#define JUCE_EACH_37_(FN, X, ...) FN(X) JUCE_EACH_36_(FN, __VA_ARGS__)
75#define JUCE_EACH_38_(FN, X, ...) FN(X) JUCE_EACH_37_(FN, __VA_ARGS__)
76#define JUCE_EACH_39_(FN, X, ...) FN(X) JUCE_EACH_38_(FN, __VA_ARGS__)
79#define JUCE_EACH(FN, ...) \
80 JUCE_NTH_ARG_(, __VA_ARGS__, \
124#define JUCE_CONCAT_(a, b) a##b
125#define JUCE_CONCAT(a, b) JUCE_CONCAT_(a, b)
128#define JUCE_TO_STRING(x) #x
130#if JUCE_CLANG || JUCE_GCC || JUCE_MINGW
131 #define JUCE_IGNORE_GCC_IMPL_(compiler, warning)
132 #define JUCE_IGNORE_GCC_IMPL_0(compiler, warning)
133 #define JUCE_IGNORE_GCC_IMPL_1(compiler, warning) \
134 _Pragma(JUCE_TO_STRING(compiler diagnostic ignored warning))
137 #if defined (__has_warning)
138 #define JUCE_IGNORE_GCC_LIKE(compiler, warning) \
139 JUCE_CONCAT(JUCE_IGNORE_GCC_IMPL_, __has_warning(warning))(compiler, warning)
141 #define JUCE_IGNORE_GCC_LIKE(compiler, warning) \
142 JUCE_IGNORE_GCC_IMPL_1(compiler, warning)
146 #define JUCE_IGNORE_GCC(warning) JUCE_IGNORE_GCC_LIKE(GCC, warning)
147 #define JUCE_IGNORE_clang(warning) JUCE_IGNORE_GCC_LIKE(clang, warning)
149 #define JUCE_IGNORE_WARNINGS_GCC_LIKE(compiler, ...) \
150 _Pragma(JUCE_TO_STRING(compiler diagnostic push)) \
151 JUCE_EACH(JUCE_CONCAT(JUCE_IGNORE_, compiler), __VA_ARGS__)
158 #if defined (__has_warning)
159 #define JUCE_PUSH_WARNINGS_GCC_LIKE(compiler, ...) \
160 JUCE_IGNORE_WARNINGS_GCC_LIKE(compiler, __VA_ARGS__)
162 #define JUCE_PUSH_WARNINGS_GCC_LIKE(compiler, ...) \
163 JUCE_IGNORE_WARNINGS_GCC_LIKE(compiler, "-Wpragmas", __VA_ARGS__)
167 #define JUCE_POP_WARNINGS_GCC_LIKE(compiler) \
168 _Pragma(JUCE_TO_STRING(compiler diagnostic pop))
174 #define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...) JUCE_PUSH_WARNINGS_GCC_LIKE(clang, __VA_ARGS__)
175 #define JUCE_END_IGNORE_WARNINGS_GCC_LIKE JUCE_POP_WARNINGS_GCC_LIKE(clang)
177 #define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...) JUCE_PUSH_WARNINGS_GCC_LIKE(GCC, __VA_ARGS__)
178 #define JUCE_END_IGNORE_WARNINGS_GCC_LIKE JUCE_POP_WARNINGS_GCC_LIKE(GCC)
181 #define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...)
182 #define JUCE_END_IGNORE_WARNINGS_GCC_LIKE
189 #define JUCE_IGNORE_MSVC(warnings) __pragma(warning(disable:warnings))
190 #define JUCE_BEGIN_IGNORE_WARNINGS_LEVEL_MSVC(level, warnings) \
191 __pragma(warning(push, level)) JUCE_IGNORE_MSVC(warnings)
192 #define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings) \
193 __pragma(warning(push)) JUCE_IGNORE_MSVC(warnings)
194 #define JUCE_END_IGNORE_WARNINGS_MSVC __pragma(warning(pop))
196 #define JUCE_IGNORE_MSVC(warnings)
197 #define JUCE_BEGIN_IGNORE_WARNINGS_LEVEL_MSVC(level, warnings)
198 #define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings)
199 #define JUCE_END_IGNORE_WARNINGS_MSVC
202#if JUCE_MAC || JUCE_IOS
203 #define JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION 11
205 #define JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION 9
212#if JUCE_CLANG && __clang_major__ >= JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION
213 #define JUCE_BEGIN_NO_SANITIZE(warnings) \
214 _Pragma(JUCE_TO_STRING(clang attribute push(__attribute__((no_sanitize(warnings))), apply_to=function)))
215 #define JUCE_END_NO_SANITIZE _Pragma(JUCE_TO_STRING(clang attribute pop))
217 #define JUCE_BEGIN_NO_SANITIZE(warnings)
218 #define JUCE_END_NO_SANITIZE
221#undef JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION