X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2Fiter.qh;h=f3214a24865afe3af5ca5c3554777be9dacb122b;hb=317ec3eb27ada1c4668876e9499136125acb7984;hp=53b3d662992f23668fc77be6e45a4cb91a0422d2;hpb=3ae1efa7401791e42e3171f4db2cc2d38adde088;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/iter.qh b/qcsrc/lib/iter.qh index 53b3d6629..f3214a248 100644 --- a/qcsrc/lib/iter.qh +++ b/qcsrc/lib/iter.qh @@ -1,19 +1,40 @@ #ifndef ITER_H #define ITER_H -#define FOREACH_ARRAY(arr, start, end, cond, body) do { \ - for (int i = start; i < end; ++i) { \ - const noref entity it = arr[i]; \ - if (cond) { body } \ - } \ -} while(0) +#define FOREACH_ARRAY(arr, start, end, cond, body) \ + do \ + { \ + for (int i = start; i < end; ++i) \ + { \ + const noref entity it = arr[i]; \ + if (cond) { body } \ + } \ + } \ + while (0) -#define FOREACH_LIST(list, next, cond, body) do { \ - noref int i = 0; \ - for (entity it = list##_first; it; (it = it.next, ++i)) { \ - if (cond) { body } \ - } \ -} while(0) +#define FOREACH_LIST(list, next, cond, body) \ + do \ + { \ + int i = 0; \ + for (entity it = list##_first; it; (it = it.next, ++i)) \ + { \ + if (cond) { body } \ + } \ + } \ + while (0) + +#define FOREACH_WORD(words, cond, body) \ + do \ + { \ + string _words = words; \ + int i = 0; \ + for (string _it; (_it = car(_words)); (_words = cdr(_words), ++i)) \ + { \ + const noref string it = _it; \ + if (cond) { body } \ + } \ + } \ + while (0) #define FOREACH(list, cond, body) FOREACH_LIST(list, enemy, cond, body)