Lines Matching full:fields
37 #define CHECK_PACKED_FIELD_OVERLAP(fields, index1, index2) ({ \ argument
38 typeof(&(fields)[0]) __f = (fields); \
42 __stringify(fields) " field " __stringify(index2) \
45 __stringify(fields) " field " __stringify(index2) \
49 __stringify(fields) " field " __stringify(index2) \
53 #define CHECK_PACKED_FIELD(fields, index) ({ \ argument
54 typeof(&(fields)[0]) _f = (fields); \
57 __stringify(fields) " field " __stringify(index) \
61 __stringify(fields) " field " __stringify(index) \
64 __stringify(fields) " field " __stringify(index) \
67 CHECK_PACKED_FIELD_OVERLAP(fields, index - 1, index), \
71 /* Note that the packed fields may be either in ascending or descending order.
75 #define CHECK_PACKED_FIELDS_SIZE(fields, pbuflen) ({ \ argument
76 typeof(&(fields)[0]) _f = (fields); \
78 const size_t num_fields = ARRAY_SIZE(fields); \
80 __stringify(fields) " pbuflen " __stringify(pbuflen) \
83 __stringify(fields) " first field exceeds packed buffer size"); \
85 __stringify(fields) " last field exceeds packed buffer size"); \
107 const struct packed_field_u8 *fields, size_t num_fields,
111 const struct packed_field_u16 *fields, size_t num_fields,
115 const struct packed_field_u8 *fields, size_t num_fields,
119 const struct packed_field_u16 *fields, size_t num_fields,
130 #define CHECK_PACKED_FIELDS_1(fields) \ argument
131 CHECK_PACKED_FIELD(fields, 0)
133 #define CHECK_PACKED_FIELDS_2(fields) do { \ argument
134 CHECK_PACKED_FIELDS_1(fields); \
135 CHECK_PACKED_FIELD(fields, 1); \
138 #define CHECK_PACKED_FIELDS_3(fields) do { \ argument
139 CHECK_PACKED_FIELDS_2(fields); \
140 CHECK_PACKED_FIELD(fields, 2); \
143 #define CHECK_PACKED_FIELDS_4(fields) do { \ argument
144 CHECK_PACKED_FIELDS_3(fields); \
145 CHECK_PACKED_FIELD(fields, 3); \
148 #define CHECK_PACKED_FIELDS_5(fields) do { \ argument
149 CHECK_PACKED_FIELDS_4(fields); \
150 CHECK_PACKED_FIELD(fields, 4); \
153 #define CHECK_PACKED_FIELDS_6(fields) do { \ argument
154 CHECK_PACKED_FIELDS_5(fields); \
155 CHECK_PACKED_FIELD(fields, 5); \
158 #define CHECK_PACKED_FIELDS_7(fields) do { \ argument
159 CHECK_PACKED_FIELDS_6(fields); \
160 CHECK_PACKED_FIELD(fields, 6); \
163 #define CHECK_PACKED_FIELDS_8(fields) do { \ argument
164 CHECK_PACKED_FIELDS_7(fields); \
165 CHECK_PACKED_FIELD(fields, 7); \
168 #define CHECK_PACKED_FIELDS_9(fields) do { \ argument
169 CHECK_PACKED_FIELDS_8(fields); \
170 CHECK_PACKED_FIELD(fields, 8); \
173 #define CHECK_PACKED_FIELDS_10(fields) do { \ argument
174 CHECK_PACKED_FIELDS_9(fields); \
175 CHECK_PACKED_FIELD(fields, 9); \
178 #define CHECK_PACKED_FIELDS_11(fields) do { \ argument
179 CHECK_PACKED_FIELDS_10(fields); \
180 CHECK_PACKED_FIELD(fields, 10); \
183 #define CHECK_PACKED_FIELDS_12(fields) do { \ argument
184 CHECK_PACKED_FIELDS_11(fields); \
185 CHECK_PACKED_FIELD(fields, 11); \
188 #define CHECK_PACKED_FIELDS_13(fields) do { \ argument
189 CHECK_PACKED_FIELDS_12(fields); \
190 CHECK_PACKED_FIELD(fields, 12); \
193 #define CHECK_PACKED_FIELDS_14(fields) do { \ argument
194 CHECK_PACKED_FIELDS_13(fields); \
195 CHECK_PACKED_FIELD(fields, 13); \
198 #define CHECK_PACKED_FIELDS_15(fields) do { \ argument
199 CHECK_PACKED_FIELDS_14(fields); \
200 CHECK_PACKED_FIELD(fields, 14); \
203 #define CHECK_PACKED_FIELDS_16(fields) do { \ argument
204 CHECK_PACKED_FIELDS_15(fields); \
205 CHECK_PACKED_FIELD(fields, 15); \
208 #define CHECK_PACKED_FIELDS_17(fields) do { \ argument
209 CHECK_PACKED_FIELDS_16(fields); \
210 CHECK_PACKED_FIELD(fields, 16); \
213 #define CHECK_PACKED_FIELDS_18(fields) do { \ argument
214 CHECK_PACKED_FIELDS_17(fields); \
215 CHECK_PACKED_FIELD(fields, 17); \
218 #define CHECK_PACKED_FIELDS_19(fields) do { \ argument
219 CHECK_PACKED_FIELDS_18(fields); \
220 CHECK_PACKED_FIELD(fields, 18); \
223 #define CHECK_PACKED_FIELDS_20(fields) do { \ argument
224 CHECK_PACKED_FIELDS_19(fields); \
225 CHECK_PACKED_FIELD(fields, 19); \
228 #define CHECK_PACKED_FIELDS_21(fields) do { \ argument
229 CHECK_PACKED_FIELDS_20(fields); \
230 CHECK_PACKED_FIELD(fields, 20); \
233 #define CHECK_PACKED_FIELDS_22(fields) do { \ argument
234 CHECK_PACKED_FIELDS_21(fields); \
235 CHECK_PACKED_FIELD(fields, 21); \
238 #define CHECK_PACKED_FIELDS_23(fields) do { \ argument
239 CHECK_PACKED_FIELDS_22(fields); \
240 CHECK_PACKED_FIELD(fields, 22); \
243 #define CHECK_PACKED_FIELDS_24(fields) do { \ argument
244 CHECK_PACKED_FIELDS_23(fields); \
245 CHECK_PACKED_FIELD(fields, 23); \
248 #define CHECK_PACKED_FIELDS_25(fields) do { \ argument
249 CHECK_PACKED_FIELDS_24(fields); \
250 CHECK_PACKED_FIELD(fields, 24); \
253 #define CHECK_PACKED_FIELDS_26(fields) do { \ argument
254 CHECK_PACKED_FIELDS_25(fields); \
255 CHECK_PACKED_FIELD(fields, 25); \
258 #define CHECK_PACKED_FIELDS_27(fields) do { \ argument
259 CHECK_PACKED_FIELDS_26(fields); \
260 CHECK_PACKED_FIELD(fields, 26); \
263 #define CHECK_PACKED_FIELDS_28(fields) do { \ argument
264 CHECK_PACKED_FIELDS_27(fields); \
265 CHECK_PACKED_FIELD(fields, 27); \
268 #define CHECK_PACKED_FIELDS_29(fields) do { \ argument
269 CHECK_PACKED_FIELDS_28(fields); \
270 CHECK_PACKED_FIELD(fields, 28); \
273 #define CHECK_PACKED_FIELDS_30(fields) do { \ argument
274 CHECK_PACKED_FIELDS_29(fields); \
275 CHECK_PACKED_FIELD(fields, 29); \
278 #define CHECK_PACKED_FIELDS_31(fields) do { \ argument
279 CHECK_PACKED_FIELDS_30(fields); \
280 CHECK_PACKED_FIELD(fields, 30); \
283 #define CHECK_PACKED_FIELDS_32(fields) do { \ argument
284 CHECK_PACKED_FIELDS_31(fields); \
285 CHECK_PACKED_FIELD(fields, 31); \
288 #define CHECK_PACKED_FIELDS_33(fields) do { \ argument
289 CHECK_PACKED_FIELDS_32(fields); \
290 CHECK_PACKED_FIELD(fields, 32); \
293 #define CHECK_PACKED_FIELDS_34(fields) do { \ argument
294 CHECK_PACKED_FIELDS_33(fields); \
295 CHECK_PACKED_FIELD(fields, 33); \
298 #define CHECK_PACKED_FIELDS_35(fields) do { \ argument
299 CHECK_PACKED_FIELDS_34(fields); \
300 CHECK_PACKED_FIELD(fields, 34); \
303 #define CHECK_PACKED_FIELDS_36(fields) do { \ argument
304 CHECK_PACKED_FIELDS_35(fields); \
305 CHECK_PACKED_FIELD(fields, 35); \
308 #define CHECK_PACKED_FIELDS_37(fields) do { \ argument
309 CHECK_PACKED_FIELDS_36(fields); \
310 CHECK_PACKED_FIELD(fields, 36); \
313 #define CHECK_PACKED_FIELDS_38(fields) do { \ argument
314 CHECK_PACKED_FIELDS_37(fields); \
315 CHECK_PACKED_FIELD(fields, 37); \
318 #define CHECK_PACKED_FIELDS_39(fields) do { \ argument
319 CHECK_PACKED_FIELDS_38(fields); \
320 CHECK_PACKED_FIELD(fields, 38); \
323 #define CHECK_PACKED_FIELDS_40(fields) do { \ argument
324 CHECK_PACKED_FIELDS_39(fields); \
325 CHECK_PACKED_FIELD(fields, 39); \
328 #define CHECK_PACKED_FIELDS_41(fields) do { \ argument
329 CHECK_PACKED_FIELDS_40(fields); \
330 CHECK_PACKED_FIELD(fields, 40); \
333 #define CHECK_PACKED_FIELDS_42(fields) do { \ argument
334 CHECK_PACKED_FIELDS_41(fields); \
335 CHECK_PACKED_FIELD(fields, 41); \
338 #define CHECK_PACKED_FIELDS_43(fields) do { \ argument
339 CHECK_PACKED_FIELDS_42(fields); \
340 CHECK_PACKED_FIELD(fields, 42); \
343 #define CHECK_PACKED_FIELDS_44(fields) do { \ argument
344 CHECK_PACKED_FIELDS_43(fields); \
345 CHECK_PACKED_FIELD(fields, 43); \
348 #define CHECK_PACKED_FIELDS_45(fields) do { \ argument
349 CHECK_PACKED_FIELDS_44(fields); \
350 CHECK_PACKED_FIELD(fields, 44); \
353 #define CHECK_PACKED_FIELDS_46(fields) do { \ argument
354 CHECK_PACKED_FIELDS_45(fields); \
355 CHECK_PACKED_FIELD(fields, 45); \
358 #define CHECK_PACKED_FIELDS_47(fields) do { \ argument
359 CHECK_PACKED_FIELDS_46(fields); \
360 CHECK_PACKED_FIELD(fields, 46); \
363 #define CHECK_PACKED_FIELDS_48(fields) do { \ argument
364 CHECK_PACKED_FIELDS_47(fields); \
365 CHECK_PACKED_FIELD(fields, 47); \
368 #define CHECK_PACKED_FIELDS_49(fields) do { \ argument
369 CHECK_PACKED_FIELDS_48(fields); \
370 CHECK_PACKED_FIELD(fields, 48); \
373 #define CHECK_PACKED_FIELDS_50(fields) do { \ argument
374 CHECK_PACKED_FIELDS_49(fields); \
375 CHECK_PACKED_FIELD(fields, 49); \
378 #define CHECK_PACKED_FIELDS(fields) \ argument
379 __builtin_choose_expr(ARRAY_SIZE(fields) == 1, ({ CHECK_PACKED_FIELDS_1(fields); }), \
380 __builtin_choose_expr(ARRAY_SIZE(fields) == 2, ({ CHECK_PACKED_FIELDS_2(fields); }), \
381 __builtin_choose_expr(ARRAY_SIZE(fields) == 3, ({ CHECK_PACKED_FIELDS_3(fields); }), \
382 __builtin_choose_expr(ARRAY_SIZE(fields) == 4, ({ CHECK_PACKED_FIELDS_4(fields); }), \
383 __builtin_choose_expr(ARRAY_SIZE(fields) == 5, ({ CHECK_PACKED_FIELDS_5(fields); }), \
384 __builtin_choose_expr(ARRAY_SIZE(fields) == 6, ({ CHECK_PACKED_FIELDS_6(fields); }), \
385 __builtin_choose_expr(ARRAY_SIZE(fields) == 7, ({ CHECK_PACKED_FIELDS_7(fields); }), \
386 __builtin_choose_expr(ARRAY_SIZE(fields) == 8, ({ CHECK_PACKED_FIELDS_8(fields); }), \
387 __builtin_choose_expr(ARRAY_SIZE(fields) == 9, ({ CHECK_PACKED_FIELDS_9(fields); }), \
388 __builtin_choose_expr(ARRAY_SIZE(fields) == 10, ({ CHECK_PACKED_FIELDS_10(fields); }), \
389 __builtin_choose_expr(ARRAY_SIZE(fields) == 11, ({ CHECK_PACKED_FIELDS_11(fields); }), \
390 __builtin_choose_expr(ARRAY_SIZE(fields) == 12, ({ CHECK_PACKED_FIELDS_12(fields); }), \
391 __builtin_choose_expr(ARRAY_SIZE(fields) == 13, ({ CHECK_PACKED_FIELDS_13(fields); }), \
392 __builtin_choose_expr(ARRAY_SIZE(fields) == 14, ({ CHECK_PACKED_FIELDS_14(fields); }), \
393 __builtin_choose_expr(ARRAY_SIZE(fields) == 15, ({ CHECK_PACKED_FIELDS_15(fields); }), \
394 __builtin_choose_expr(ARRAY_SIZE(fields) == 16, ({ CHECK_PACKED_FIELDS_16(fields); }), \
395 __builtin_choose_expr(ARRAY_SIZE(fields) == 17, ({ CHECK_PACKED_FIELDS_17(fields); }), \
396 __builtin_choose_expr(ARRAY_SIZE(fields) == 18, ({ CHECK_PACKED_FIELDS_18(fields); }), \
397 __builtin_choose_expr(ARRAY_SIZE(fields) == 19, ({ CHECK_PACKED_FIELDS_19(fields); }), \
398 __builtin_choose_expr(ARRAY_SIZE(fields) == 20, ({ CHECK_PACKED_FIELDS_20(fields); }), \
399 __builtin_choose_expr(ARRAY_SIZE(fields) == 21, ({ CHECK_PACKED_FIELDS_21(fields); }), \
400 __builtin_choose_expr(ARRAY_SIZE(fields) == 22, ({ CHECK_PACKED_FIELDS_22(fields); }), \
401 __builtin_choose_expr(ARRAY_SIZE(fields) == 23, ({ CHECK_PACKED_FIELDS_23(fields); }), \
402 __builtin_choose_expr(ARRAY_SIZE(fields) == 24, ({ CHECK_PACKED_FIELDS_24(fields); }), \
403 __builtin_choose_expr(ARRAY_SIZE(fields) == 25, ({ CHECK_PACKED_FIELDS_25(fields); }), \
404 __builtin_choose_expr(ARRAY_SIZE(fields) == 26, ({ CHECK_PACKED_FIELDS_26(fields); }), \
405 __builtin_choose_expr(ARRAY_SIZE(fields) == 27, ({ CHECK_PACKED_FIELDS_27(fields); }), \
406 __builtin_choose_expr(ARRAY_SIZE(fields) == 28, ({ CHECK_PACKED_FIELDS_28(fields); }), \
407 __builtin_choose_expr(ARRAY_SIZE(fields) == 29, ({ CHECK_PACKED_FIELDS_29(fields); }), \
408 __builtin_choose_expr(ARRAY_SIZE(fields) == 30, ({ CHECK_PACKED_FIELDS_30(fields); }), \
409 __builtin_choose_expr(ARRAY_SIZE(fields) == 31, ({ CHECK_PACKED_FIELDS_31(fields); }), \
410 __builtin_choose_expr(ARRAY_SIZE(fields) == 32, ({ CHECK_PACKED_FIELDS_32(fields); }), \
411 __builtin_choose_expr(ARRAY_SIZE(fields) == 33, ({ CHECK_PACKED_FIELDS_33(fields); }), \
412 __builtin_choose_expr(ARRAY_SIZE(fields) == 34, ({ CHECK_PACKED_FIELDS_34(fields); }), \
413 __builtin_choose_expr(ARRAY_SIZE(fields) == 35, ({ CHECK_PACKED_FIELDS_35(fields); }), \
414 __builtin_choose_expr(ARRAY_SIZE(fields) == 36, ({ CHECK_PACKED_FIELDS_36(fields); }), \
415 __builtin_choose_expr(ARRAY_SIZE(fields) == 37, ({ CHECK_PACKED_FIELDS_37(fields); }), \
416 __builtin_choose_expr(ARRAY_SIZE(fields) == 38, ({ CHECK_PACKED_FIELDS_38(fields); }), \
417 __builtin_choose_expr(ARRAY_SIZE(fields) == 39, ({ CHECK_PACKED_FIELDS_39(fields); }), \
418 __builtin_choose_expr(ARRAY_SIZE(fields) == 40, ({ CHECK_PACKED_FIELDS_40(fields); }), \
419 __builtin_choose_expr(ARRAY_SIZE(fields) == 41, ({ CHECK_PACKED_FIELDS_41(fields); }), \
420 __builtin_choose_expr(ARRAY_SIZE(fields) == 42, ({ CHECK_PACKED_FIELDS_42(fields); }), \
421 __builtin_choose_expr(ARRAY_SIZE(fields) == 43, ({ CHECK_PACKED_FIELDS_43(fields); }), \
422 __builtin_choose_expr(ARRAY_SIZE(fields) == 44, ({ CHECK_PACKED_FIELDS_44(fields); }), \
423 __builtin_choose_expr(ARRAY_SIZE(fields) == 45, ({ CHECK_PACKED_FIELDS_45(fields); }), \
424 __builtin_choose_expr(ARRAY_SIZE(fields) == 46, ({ CHECK_PACKED_FIELDS_46(fields); }), \
425 __builtin_choose_expr(ARRAY_SIZE(fields) == 47, ({ CHECK_PACKED_FIELDS_47(fields); }), \
426 __builtin_choose_expr(ARRAY_SIZE(fields) == 48, ({ CHECK_PACKED_FIELDS_48(fields); }), \
427 __builtin_choose_expr(ARRAY_SIZE(fields) == 49, ({ CHECK_PACKED_FIELDS_49(fields); }), \
428 __builtin_choose_expr(ARRAY_SIZE(fields) == 50, ({ CHECK_PACKED_FIELDS_50(fields); }), \
434 #define pack_fields(pbuf, pbuflen, ustruct, fields, quirks) \ argument
436 CHECK_PACKED_FIELDS(fields); \
437 CHECK_PACKED_FIELDS_SIZE((fields), (pbuflen)); \
438 _Generic((fields), \
441 )((pbuf), (pbuflen), (ustruct), (fields), ARRAY_SIZE(fields), (quirks)); \
444 #define unpack_fields(pbuf, pbuflen, ustruct, fields, quirks) \ argument
446 CHECK_PACKED_FIELDS(fields); \
447 CHECK_PACKED_FIELDS_SIZE((fields), (pbuflen)); \
448 _Generic((fields), \
451 )((pbuf), (pbuflen), (ustruct), (fields), ARRAY_SIZE(fields), (quirks)); \