summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/array.c60
1 files changed, 30 insertions, 30 deletions
diff --git a/src/array.c b/src/array.c
index 8c7f8d3..bde54a8 100644
--- a/src/array.c
+++ b/src/array.c
@@ -77,41 +77,41 @@
} while (0)
#ifdef AL_HAVE_GNU_EXTENSIONS
-#define al_array_contains(array, needle) \
- ({ \
- bool contains = false; \
- for (u32 i = 0; i < (array).count; i++) { \
- if (al_array_at(array, i) == needle) { \
- contains = true; \
- break; \
- } \
- } \
- contains; \
+#define al_array_contains(array, needle) \
+ ({ \
+ bool was_contained = false; \
+ for (u32 ic = 0; ic < (array).count; ic++) { \
+ if (al_array_at(array, ic) == needle) { \
+ was_contained = true; \
+ break; \
+ } \
+ } \
+ was_contained; \
})
-#define al_array_remove(array, elem) \
+#define al_array_remove(array, elem) \
+ ({ \
+ bool did_remove = false; \
+ for (u32 ir = 0; ir < (array).count; ir++) { \
+ if (al_array_at(array, ir) == elem) { \
+ al_array_remove_at(array, ir); \
+ did_remove = true; \
+ break; \
+ } \
+ } \
+ did_remove; \
+ })
+
+#define al_array_remove_all(array, elem) \
({ \
- bool removed = false; \
- for (u32 i = 0; i < (array).count; i++) { \
- if (al_array_at(array, i) == elem) { \
- al_array_remove_at(array, i); \
- removed = true; \
- break; \
+ bool did_remove = false; \
+ for (u32 ir = (array).count; ir-- > 0;) { \
+ if (al_array_at(array, ir) == elem) { \
+ al_array_remove_at(array, ir); \
+ did_remove = true; \
} \
} \
- removed; \
- })
-
-#define al_array_remove_all(array, elem) \
- ({ \
- bool removed = false; \
- for (u32 i = (array).count; i-- > 0;) { \
- if (al_array_at(array, i) == elem) { \
- al_array_remove_at(array, i); \
- removed = true; \
- } \
- } \
- removed; \
+ did_remove; \
})
#endif