From 042215f856d6335ec21d84deaba25c002057a817 Mon Sep 17 00:00:00 2001 From: Consolatis <35009135+Consolatis@users.noreply.github.com> Date: Tue, 21 Nov 2023 03:07:10 +0100 Subject: [PATCH] common/array.h: add wl_array_for_each_reverse macro --- include/common/array.h | 11 +++++++++++ scripts/checkpatch.pl | 1 + 2 files changed, 12 insertions(+) diff --git a/include/common/array.h b/include/common/array.h index 4f6e6237..f6c51fc9 100644 --- a/include/common/array.h +++ b/include/common/array.h @@ -30,4 +30,15 @@ wl_array_len(struct wl_array *array) return array->size / sizeof(const char *); } +/** + * Iterates in reverse over an array. + * @pos: pointer that each array element will be assigned to + * @array: wl_array to iterate over + */ +#define wl_array_for_each_reverse(pos, array) \ + for (pos = !(array)->data ? NULL \ + : (void *)((const char *)(array)->data + (array)->size - sizeof(pos)); \ + pos && (const char *)pos >= (const char *)(array)->data; \ + (pos)--) + #endif /* LABWC_ARRAY_H */ diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 53d6d268..14fdb88e 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -5531,6 +5531,7 @@ sub process { # if ($starts_with_if_while_etc && !length($s) && $filename ne "include/view.h" + && $filename ne "include/common/array.h" && $filename ne "include/ssd-internal.h") { CHK("BRACES", "[labwc-custom] open brace { expected after if/while/for/switch - even with single statement blocks"); } -- 2.52.0