From: TimePath Date: Sat, 7 Nov 2015 10:12:51 +0000 (+1100) Subject: FOREACH_WORD X-Git-Tag: xonotic-v0.8.2~1691 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=6069d0278bcdf0552989bb0c1ad9d3b73f2669d4;p=xonotic%2Fxonotic-data.pk3dir.git FOREACH_WORD --- diff --git a/qcsrc/lib/iter.qh b/qcsrc/lib/iter.qh index b0a602c96..f3214a248 100644 --- a/qcsrc/lib/iter.qh +++ b/qcsrc/lib/iter.qh @@ -5,21 +5,34 @@ do \ { \ for (int i = start; i < end; ++i) \ - { \ - const noref entity it = arr[i]; \ - if (cond) { body } \ - } \ + { \ + const noref entity it = arr[i]; \ + if (cond) { body } \ + } \ } \ while (0) #define FOREACH_LIST(list, next, cond, body) \ do \ - { \ - noref int i = 0; \ + { \ + int i = 0; \ for (entity it = list##_first; it; (it = it.next, ++i)) \ - { \ - if (cond) { body } \ - } \ + { \ + 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)