nRF Connect SDK API 3.3.99
Loading...
Searching...
No Matches
util_internal.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5 */
6
14#ifndef UTIL_INTERNAL_H_
15#define UTIL_INTERNAL_H_
16
17#include <zephyr/sys/util_internal.h>
18
19/* Helper macro for IS_ENABLED_ALL */
20#define Z_IS_ENABLED_ALL(...) \
21 Z_IS_ENABLED_ALL_N(NUM_VA_ARGS(__VA_ARGS__), __VA_ARGS__)
22#define Z_IS_ENABLED_ALL_N(N, ...) UTIL_CAT(Z_IS_ENABLED_ALL_, N)(__VA_ARGS__)
23#define Z_IS_ENABLED_ALL_0(...)
24#define Z_IS_ENABLED_ALL_1(a, ...) COND_CODE_1(a, (1), (0))
25#define Z_IS_ENABLED_ALL_2(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_1(__VA_ARGS__,)), (0))
26#define Z_IS_ENABLED_ALL_3(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_2(__VA_ARGS__,)), (0))
27#define Z_IS_ENABLED_ALL_4(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_3(__VA_ARGS__,)), (0))
28#define Z_IS_ENABLED_ALL_5(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_4(__VA_ARGS__,)), (0))
29#define Z_IS_ENABLED_ALL_6(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_5(__VA_ARGS__,)), (0))
30#define Z_IS_ENABLED_ALL_7(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_6(__VA_ARGS__,)), (0))
31#define Z_IS_ENABLED_ALL_8(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_7(__VA_ARGS__,)), (0))
32#define Z_IS_ENABLED_ALL_9(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_8(__VA_ARGS__,)), (0))
33#define Z_IS_ENABLED_ALL_10(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_9(__VA_ARGS__,)), (0))
34#define Z_IS_ENABLED_ALL_11(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_10(__VA_ARGS__,)), (0))
35#define Z_IS_ENABLED_ALL_12(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_11(__VA_ARGS__,)), (0))
36#define Z_IS_ENABLED_ALL_13(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_12(__VA_ARGS__,)), (0))
37#define Z_IS_ENABLED_ALL_14(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_13(__VA_ARGS__,)), (0))
38#define Z_IS_ENABLED_ALL_15(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_14(__VA_ARGS__,)), (0))
39#define Z_IS_ENABLED_ALL_16(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_15(__VA_ARGS__,)), (0))
40#define Z_IS_ENABLED_ALL_17(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_16(__VA_ARGS__,)), (0))
41#define Z_IS_ENABLED_ALL_18(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_17(__VA_ARGS__,)), (0))
42#define Z_IS_ENABLED_ALL_19(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_18(__VA_ARGS__,)), (0))
43#define Z_IS_ENABLED_ALL_20(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_19(__VA_ARGS__,)), (0))
44#define Z_IS_ENABLED_ALL_21(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_20(__VA_ARGS__,)), (0))
45#define Z_IS_ENABLED_ALL_22(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_21(__VA_ARGS__,)), (0))
46#define Z_IS_ENABLED_ALL_23(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_22(__VA_ARGS__,)), (0))
47#define Z_IS_ENABLED_ALL_24(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_23(__VA_ARGS__,)), (0))
48#define Z_IS_ENABLED_ALL_25(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_24(__VA_ARGS__,)), (0))
49#define Z_IS_ENABLED_ALL_26(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_25(__VA_ARGS__,)), (0))
50#define Z_IS_ENABLED_ALL_27(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_26(__VA_ARGS__,)), (0))
51#define Z_IS_ENABLED_ALL_28(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_27(__VA_ARGS__,)), (0))
52#define Z_IS_ENABLED_ALL_29(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_28(__VA_ARGS__,)), (0))
53#define Z_IS_ENABLED_ALL_30(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_29(__VA_ARGS__,)), (0))
54#define Z_IS_ENABLED_ALL_31(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_30(__VA_ARGS__,)), (0))
55#define Z_IS_ENABLED_ALL_32(a, ...) COND_CODE_1(a, (Z_IS_ENABLED_ALL_31(__VA_ARGS__,)), (0))
56
57/* Helper macro for IS_ENABLED_ANY */
58#define Z_IS_ENABLED_ANY(...) \
59 Z_IS_ENABLED_ANY_N(NUM_VA_ARGS(__VA_ARGS__), __VA_ARGS__)
60#define Z_IS_ENABLED_ANY_N(N, ...) UTIL_CAT(Z_IS_ENABLED_ANY_, N)(__VA_ARGS__)
61#define Z_IS_ENABLED_ANY_0(...)
62#define Z_IS_ENABLED_ANY_1(a, ...) COND_CODE_1(a, (1), (0))
63#define Z_IS_ENABLED_ANY_2(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_1(__VA_ARGS__,)))
64#define Z_IS_ENABLED_ANY_3(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_2(__VA_ARGS__,)))
65#define Z_IS_ENABLED_ANY_4(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_3(__VA_ARGS__,)))
66#define Z_IS_ENABLED_ANY_5(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_4(__VA_ARGS__,)))
67#define Z_IS_ENABLED_ANY_6(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_5(__VA_ARGS__,)))
68#define Z_IS_ENABLED_ANY_7(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_6(__VA_ARGS__,)))
69#define Z_IS_ENABLED_ANY_8(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_7(__VA_ARGS__,)))
70#define Z_IS_ENABLED_ANY_9(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_8(__VA_ARGS__,)))
71#define Z_IS_ENABLED_ANY_10(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_9(__VA_ARGS__,)))
72#define Z_IS_ENABLED_ANY_11(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_10(__VA_ARGS__,)))
73#define Z_IS_ENABLED_ANY_12(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_11(__VA_ARGS__,)))
74#define Z_IS_ENABLED_ANY_13(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_12(__VA_ARGS__,)))
75#define Z_IS_ENABLED_ANY_14(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_13(__VA_ARGS__,)))
76#define Z_IS_ENABLED_ANY_15(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_14(__VA_ARGS__,)))
77#define Z_IS_ENABLED_ANY_16(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_15(__VA_ARGS__,)))
78#define Z_IS_ENABLED_ANY_17(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_16(__VA_ARGS__,)))
79#define Z_IS_ENABLED_ANY_18(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_17(__VA_ARGS__,)))
80#define Z_IS_ENABLED_ANY_19(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_18(__VA_ARGS__,)))
81#define Z_IS_ENABLED_ANY_20(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_19(__VA_ARGS__,)))
82#define Z_IS_ENABLED_ANY_21(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_20(__VA_ARGS__,)))
83#define Z_IS_ENABLED_ANY_22(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_21(__VA_ARGS__,)))
84#define Z_IS_ENABLED_ANY_23(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_22(__VA_ARGS__,)))
85#define Z_IS_ENABLED_ANY_24(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_23(__VA_ARGS__,)))
86#define Z_IS_ENABLED_ANY_25(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_24(__VA_ARGS__,)))
87#define Z_IS_ENABLED_ANY_26(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_25(__VA_ARGS__,)))
88#define Z_IS_ENABLED_ANY_27(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_26(__VA_ARGS__,)))
89#define Z_IS_ENABLED_ANY_28(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_27(__VA_ARGS__,)))
90#define Z_IS_ENABLED_ANY_29(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_28(__VA_ARGS__,)))
91#define Z_IS_ENABLED_ANY_30(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_29(__VA_ARGS__,)))
92#define Z_IS_ENABLED_ANY_31(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_30(__VA_ARGS__,)))
93#define Z_IS_ENABLED_ANY_32(a, ...) COND_CODE_1(a, (1), (Z_IS_ENABLED_ANY_31(__VA_ARGS__,)))
94
95/* Helper macro for IF_ENABLED_ALL */
96#define Z_IF_ENABLED_ALL(_code, ...) \
97 Z_IF_ENABLED_ALL_N(NUM_VA_ARGS(__VA_ARGS__), _code, __VA_ARGS__)
98#define Z_IF_ENABLED_ALL_N(N, _code, ...) \
99 UTIL_CAT(Z_IF_ENABLED_ALL_, N)(_code, __VA_ARGS__)
100#define IF_ENABLED_ALL_0(_code, ...)
101#define Z_IF_ENABLED_ALL_1(_code, a, ...) \
102 COND_CODE_1(a, _code, ())
103#define Z_IF_ENABLED_ALL_2(_code, a, ...) \
104 COND_CODE_1(a, (Z_IF_ENABLED_ALL_1(_code, __VA_ARGS__,)), ())
105#define Z_IF_ENABLED_ALL_3(_code, a, ...) \
106 COND_CODE_1(a, (Z_IF_ENABLED_ALL_2(_code, __VA_ARGS__,)), ())
107#define Z_IF_ENABLED_ALL_4(_code, a, ...) \
108 COND_CODE_1(a, (Z_IF_ENABLED_ALL_3(_code, __VA_ARGS__,)), ())
109#define Z_IF_ENABLED_ALL_5(_code, a, ...) \
110 COND_CODE_1(a, (Z_IF_ENABLED_ALL_4(_code, __VA_ARGS__,)), ())
111#define Z_IF_ENABLED_ALL_6(_code, a, ...) \
112 COND_CODE_1(a, (Z_IF_ENABLED_ALL_5(_code, __VA_ARGS__,)), ())
113#define Z_IF_ENABLED_ALL_7(_code, a, ...) \
114 COND_CODE_1(a, (Z_IF_ENABLED_ALL_6(_code, __VA_ARGS__,)), ())
115#define Z_IF_ENABLED_ALL_8(_code, a, ...) \
116 COND_CODE_1(a, (Z_IF_ENABLED_ALL_7(_code, __VA_ARGS__,)), ())
117#define Z_IF_ENABLED_ALL_9(_code, a, ...) \
118 COND_CODE_1(a, (Z_IF_ENABLED_ALL_8(_code, __VA_ARGS__,)), ())
119#define Z_IF_ENABLED_ALL_10(_code, a, ...) \
120 COND_CODE_1(a, (Z_IF_ENABLED_ALL_9(_code, __VA_ARGS__,)), ())
121#define Z_IF_ENABLED_ALL_11(_code, a, ...) \
122 COND_CODE_1(a, (Z_IF_ENABLED_ALL_10(_code, __VA_ARGS__,)), ())
123#define Z_IF_ENABLED_ALL_12(_code, a, ...) \
124 COND_CODE_1(a, (Z_IF_ENABLED_ALL_11(_code, __VA_ARGS__,)), ())
125#define Z_IF_ENABLED_ALL_13(_code, a, ...) \
126 COND_CODE_1(a, (Z_IF_ENABLED_ALL_12(_code, __VA_ARGS__,)), ())
127#define Z_IF_ENABLED_ALL_14(_code, a, ...) \
128 COND_CODE_1(a, (Z_IF_ENABLED_ALL_13(_code, __VA_ARGS__,)), ())
129#define Z_IF_ENABLED_ALL_15(_code, a, ...) \
130 COND_CODE_1(a, (Z_IF_ENABLED_ALL_14(_code, __VA_ARGS__,)), ())
131#define Z_IF_ENABLED_ALL_16(_code, a, ...) \
132 COND_CODE_1(a, (Z_IF_ENABLED_ALL_15(_code, __VA_ARGS__,)), ())
133#define Z_IF_ENABLED_ALL_17(_code, a, ...) \
134 COND_CODE_1(a, (Z_IF_ENABLED_ALL_16(_code, __VA_ARGS__,)), ())
135#define Z_IF_ENABLED_ALL_18(_code, a, ...) \
136 COND_CODE_1(a, (Z_IF_ENABLED_ALL_17(_code, __VA_ARGS__,)), ())
137#define Z_IF_ENABLED_ALL_19(_code, a, ...) \
138 COND_CODE_1(a, (Z_IF_ENABLED_ALL_18(_code, __VA_ARGS__,)), ())
139#define Z_IF_ENABLED_ALL_20(_code, a, ...) \
140 COND_CODE_1(a, (Z_IF_ENABLED_ALL_19(_code, __VA_ARGS__,)), ())
141#define Z_IF_ENABLED_ALL_21(_code, a, ...) \
142 COND_CODE_1(a, (Z_IF_ENABLED_ALL_20(_code, __VA_ARGS__,)), ())
143#define Z_IF_ENABLED_ALL_22(_code, a, ...) \
144 COND_CODE_1(a, (Z_IF_ENABLED_ALL_21(_code, __VA_ARGS__,)), ())
145#define Z_IF_ENABLED_ALL_23(_code, a, ...) \
146 COND_CODE_1(a, (Z_IF_ENABLED_ALL_22(_code, __VA_ARGS__,)), ())
147#define Z_IF_ENABLED_ALL_24(_code, a, ...) \
148 COND_CODE_1(a, (Z_IF_ENABLED_ALL_23(_code, __VA_ARGS__,)), ())
149#define Z_IF_ENABLED_ALL_25(_code, a, ...) \
150 COND_CODE_1(a, (Z_IF_ENABLED_ALL_24(_code, __VA_ARGS__,)), ())
151#define Z_IF_ENABLED_ALL_26(_code, a, ...) \
152 COND_CODE_1(a, (Z_IF_ENABLED_ALL_25(_code, __VA_ARGS__,)), ())
153#define Z_IF_ENABLED_ALL_27(_code, a, ...) \
154 COND_CODE_1(a, (Z_IF_ENABLED_ALL_26(_code, __VA_ARGS__,)), ())
155#define Z_IF_ENABLED_ALL_28(_code, a, ...) \
156 COND_CODE_1(a, (Z_IF_ENABLED_ALL_27(_code, __VA_ARGS__,)), ())
157#define Z_IF_ENABLED_ALL_29(_code, a, ...) \
158 COND_CODE_1(a, (Z_IF_ENABLED_ALL_28(_code, __VA_ARGS__,)), ())
159#define Z_IF_ENABLED_ALL_30(_code, a, ...) \
160 COND_CODE_1(a, (Z_IF_ENABLED_ALL_29(_code, __VA_ARGS__,)), ())
161#define Z_IF_ENABLED_ALL_31(_code, a, ...) \
162 COND_CODE_1(a, (Z_IF_ENABLED_ALL_30(_code, __VA_ARGS__,)), ())
163#define Z_IF_ENABLED_ALL_32(_code, a, ...) \
164 COND_CODE_1(a, (Z_IF_ENABLED_ALL_31(_code, __VA_ARGS__,)), ())
165
166/* Helper macro for IF_ENABLED_ANY */
167#define Z_IF_ENABLED_ANY(_code, ...) \
168 Z_IF_ENABLED_ANY_N(NUM_VA_ARGS(__VA_ARGS__), _code, __VA_ARGS__)
169#define Z_IF_ENABLED_ANY_N(N, _code, ...) \
170 UTIL_CAT(Z_IF_ENABLED_ANY_, N)(_code, __VA_ARGS__)
171#define Z_IF_ENABLED_ANY_0(_code, ...)
172#define Z_IF_ENABLED_ANY_1(_code, a, ...) \
173 COND_CODE_1(a, _code, ())
174#define Z_IF_ENABLED_ANY_2(_code, a, ...) \
175 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_1(_code, __VA_ARGS__,)))
176#define Z_IF_ENABLED_ANY_3(_code, a, ...) \
177 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_2(_code, __VA_ARGS__,)))
178#define Z_IF_ENABLED_ANY_4(_code, a, ...) \
179 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_3(_code, __VA_ARGS__,)))
180#define Z_IF_ENABLED_ANY_5(_code, a, ...) \
181 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_4(_code, __VA_ARGS__,)))
182#define Z_IF_ENABLED_ANY_6(_code, a, ...) \
183 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_5(_code, __VA_ARGS__,)))
184#define Z_IF_ENABLED_ANY_7(_code, a, ...) \
185 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_6(_code, __VA_ARGS__,)))
186#define Z_IF_ENABLED_ANY_8(_code, a, ...) \
187 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_7(_code, __VA_ARGS__,)))
188#define Z_IF_ENABLED_ANY_9(_code, a, ...) \
189 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_8(_code, __VA_ARGS__,)))
190#define Z_IF_ENABLED_ANY_10(_code, a, ...) \
191 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_9(_code, __VA_ARGS__,)))
192#define Z_IF_ENABLED_ANY_11(_code, a, ...) \
193 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_10(_code, __VA_ARGS__,)))
194#define Z_IF_ENABLED_ANY_12(_code, a, ...) \
195 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_11(_code, __VA_ARGS__,)))
196#define Z_IF_ENABLED_ANY_13(_code, a, ...) \
197 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_12(_code, __VA_ARGS__,)))
198#define Z_IF_ENABLED_ANY_14(_code, a, ...) \
199 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_13(_code, __VA_ARGS__,)))
200#define Z_IF_ENABLED_ANY_15(_code, a, ...) \
201 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_14(_code, __VA_ARGS__,)))
202#define Z_IF_ENABLED_ANY_16(_code, a, ...) \
203 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_15(_code, __VA_ARGS__,)))
204#define Z_IF_ENABLED_ANY_17(_code, a, ...) \
205 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_16(_code, __VA_ARGS__,)))
206#define Z_IF_ENABLED_ANY_18(_code, a, ...) \
207 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_17(_code, __VA_ARGS__,)))
208#define Z_IF_ENABLED_ANY_19(_code, a, ...) \
209 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_18(_code, __VA_ARGS__,)))
210#define Z_IF_ENABLED_ANY_20(_code, a, ...) \
211 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_19(_code, __VA_ARGS__,)))
212#define Z_IF_ENABLED_ANY_21(_code, a, ...) \
213 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_20(_code, __VA_ARGS__,)))
214#define Z_IF_ENABLED_ANY_22(_code, a, ...) \
215 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_21(_code, __VA_ARGS__,)))
216#define Z_IF_ENABLED_ANY_23(_code, a, ...) \
217 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_22(_code, __VA_ARGS__,)))
218#define Z_IF_ENABLED_ANY_24(_code, a, ...) \
219 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_23(_code, __VA_ARGS__,)))
220#define Z_IF_ENABLED_ANY_25(_code, a, ...) \
221 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_24(_code, __VA_ARGS__,)))
222#define Z_IF_ENABLED_ANY_26(_code, a, ...) \
223 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_25(_code, __VA_ARGS__,)))
224#define Z_IF_ENABLED_ANY_27(_code, a, ...) \
225 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_26(_code, __VA_ARGS__,)))
226#define Z_IF_ENABLED_ANY_28(_code, a, ...) \
227 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_27(_code, __VA_ARGS__,)))
228#define Z_IF_ENABLED_ANY_29(_code, a, ...) \
229 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_28(_code, __VA_ARGS__,)))
230#define Z_IF_ENABLED_ANY_30(_code, a, ...) \
231 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_29(_code, __VA_ARGS__,)))
232#define Z_IF_ENABLED_ANY_31(_code, a, ...) \
233 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_30(_code, __VA_ARGS__,)))
234#define Z_IF_ENABLED_ANY_32(_code, a, ...) \
235 COND_CODE_1(a, _code, (Z_IF_ENABLED_ANY_31(_code, __VA_ARGS__,)))
236
237#define UTIL_AND_CAT(a, b) a && b
238/* Used by UTIL_CONCAT_AND */
239#define Z_UTIL_CONCAT_AND(...) \
240 (Z_UTIL_CONCAT_AND_N(NUM_VA_ARGS(__VA_ARGS__), __VA_ARGS__))
241#define Z_UTIL_CONCAT_AND_N(N, ...) UTIL_CAT(Z_UTIL_CONCAT_AND_, N)(__VA_ARGS__)
242#define Z_UTIL_CONCAT_AND_0
243#define Z_UTIL_CONCAT_AND_1(a, ...) a
244#define Z_UTIL_CONCAT_AND_2(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_1(__VA_ARGS__,))
245#define Z_UTIL_CONCAT_AND_3(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_2(__VA_ARGS__,))
246#define Z_UTIL_CONCAT_AND_4(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_3(__VA_ARGS__,))
247#define Z_UTIL_CONCAT_AND_5(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_4(__VA_ARGS__,))
248#define Z_UTIL_CONCAT_AND_6(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_5(__VA_ARGS__,))
249#define Z_UTIL_CONCAT_AND_7(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_6(__VA_ARGS__,))
250#define Z_UTIL_CONCAT_AND_8(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_7(__VA_ARGS__,))
251#define Z_UTIL_CONCAT_AND_9(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_8(__VA_ARGS__,))
252#define Z_UTIL_CONCAT_AND_10(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_9(__VA_ARGS__,))
253#define Z_UTIL_CONCAT_AND_11(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_10(__VA_ARGS__,))
254#define Z_UTIL_CONCAT_AND_12(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_11(__VA_ARGS__,))
255#define Z_UTIL_CONCAT_AND_13(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_12(__VA_ARGS__,))
256#define Z_UTIL_CONCAT_AND_14(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_13(__VA_ARGS__,))
257#define Z_UTIL_CONCAT_AND_15(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_14(__VA_ARGS__,))
258#define Z_UTIL_CONCAT_AND_16(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_15(__VA_ARGS__,))
259#define Z_UTIL_CONCAT_AND_17(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_16(__VA_ARGS__,))
260#define Z_UTIL_CONCAT_AND_18(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_17(__VA_ARGS__,))
261#define Z_UTIL_CONCAT_AND_19(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_18(__VA_ARGS__,))
262#define Z_UTIL_CONCAT_AND_20(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_19(__VA_ARGS__,))
263#define Z_UTIL_CONCAT_AND_21(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_20(__VA_ARGS__,))
264#define Z_UTIL_CONCAT_AND_22(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_21(__VA_ARGS__,))
265#define Z_UTIL_CONCAT_AND_23(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_22(__VA_ARGS__,))
266#define Z_UTIL_CONCAT_AND_24(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_23(__VA_ARGS__,))
267#define Z_UTIL_CONCAT_AND_25(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_24(__VA_ARGS__,))
268#define Z_UTIL_CONCAT_AND_26(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_25(__VA_ARGS__,))
269#define Z_UTIL_CONCAT_AND_27(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_26(__VA_ARGS__,))
270#define Z_UTIL_CONCAT_AND_28(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_27(__VA_ARGS__,))
271#define Z_UTIL_CONCAT_AND_29(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_28(__VA_ARGS__,))
272#define Z_UTIL_CONCAT_AND_30(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_29(__VA_ARGS__,))
273#define Z_UTIL_CONCAT_AND_31(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_30(__VA_ARGS__,))
274#define Z_UTIL_CONCAT_AND_32(a, ...) UTIL_AND_CAT(a, Z_UTIL_CONCAT_AND_31(__VA_ARGS__,))
275
276#define UTIL_OR_CAT(a, b) a || b
277/* Used by UTIL_CONCAT_OR */
278#define Z_UTIL_CONCAT_OR(...) \
279 (Z_UTIL_CONCAT_OR_N(NUM_VA_ARGS(__VA_ARGS__), __VA_ARGS__))
280#define Z_UTIL_CONCAT_OR_N(N, ...) UTIL_CAT(Z_UTIL_CONCAT_OR_, N)(__VA_ARGS__)
281#define Z_UTIL_CONCAT_OR_0
282#define Z_UTIL_CONCAT_OR_1(a, ...) a
283#define Z_UTIL_CONCAT_OR_2(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_1(__VA_ARGS__,))
284#define Z_UTIL_CONCAT_OR_3(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_2(__VA_ARGS__,))
285#define Z_UTIL_CONCAT_OR_4(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_3(__VA_ARGS__,))
286#define Z_UTIL_CONCAT_OR_5(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_4(__VA_ARGS__,))
287#define Z_UTIL_CONCAT_OR_6(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_5(__VA_ARGS__,))
288#define Z_UTIL_CONCAT_OR_7(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_6(__VA_ARGS__,))
289#define Z_UTIL_CONCAT_OR_8(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_7(__VA_ARGS__,))
290#define Z_UTIL_CONCAT_OR_9(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_8(__VA_ARGS__,))
291#define Z_UTIL_CONCAT_OR_10(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_9(__VA_ARGS__,))
292#define Z_UTIL_CONCAT_OR_11(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_10(__VA_ARGS__,))
293#define Z_UTIL_CONCAT_OR_12(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_11(__VA_ARGS__,))
294#define Z_UTIL_CONCAT_OR_13(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_12(__VA_ARGS__,))
295#define Z_UTIL_CONCAT_OR_14(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_13(__VA_ARGS__,))
296#define Z_UTIL_CONCAT_OR_15(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_14(__VA_ARGS__,))
297#define Z_UTIL_CONCAT_OR_16(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_15(__VA_ARGS__,))
298#define Z_UTIL_CONCAT_OR_17(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_16(__VA_ARGS__,))
299#define Z_UTIL_CONCAT_OR_18(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_17(__VA_ARGS__,))
300#define Z_UTIL_CONCAT_OR_19(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_18(__VA_ARGS__,))
301#define Z_UTIL_CONCAT_OR_20(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_19(__VA_ARGS__,))
302#define Z_UTIL_CONCAT_OR_21(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_20(__VA_ARGS__,))
303#define Z_UTIL_CONCAT_OR_22(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_21(__VA_ARGS__,))
304#define Z_UTIL_CONCAT_OR_23(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_22(__VA_ARGS__,))
305#define Z_UTIL_CONCAT_OR_24(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_23(__VA_ARGS__,))
306#define Z_UTIL_CONCAT_OR_25(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_24(__VA_ARGS__,))
307#define Z_UTIL_CONCAT_OR_26(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_25(__VA_ARGS__,))
308#define Z_UTIL_CONCAT_OR_27(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_26(__VA_ARGS__,))
309#define Z_UTIL_CONCAT_OR_28(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_27(__VA_ARGS__,))
310#define Z_UTIL_CONCAT_OR_29(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_28(__VA_ARGS__,))
311#define Z_UTIL_CONCAT_OR_30(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_29(__VA_ARGS__,))
312#define Z_UTIL_CONCAT_OR_31(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_30(__VA_ARGS__,))
313#define Z_UTIL_CONCAT_OR_32(a, ...) UTIL_OR_CAT(a, Z_UTIL_CONCAT_OR_31(__VA_ARGS__,))
314
315#endif /* UTIL_INTERNAL_H_ */