diff -r 29a3e669d648 -r fc257920ac00 array.h --- a/array.h Wed Dec 19 22:01:42 2012 +0200 +++ b/array.h Wed Jan 02 23:57:46 2013 +0200 @@ -46,6 +46,13 @@ #define ITERATE_SUBSCRIPTS(link) \ for (link = data; link; link = link->next) +#define foreach_counter(NAME) \ + (int)(reinterpret_cast (foreach_counter##NAME) / sizeof (foreach_counter##NAME)) +#define foreach(T,NAME,ARRAY) \ + if (ARRAY.size() > 0) for (T NAME = ARRAY[0], *foreach_counter##NAME = 0; \ + foreach_counter(NAME) < (int)(ARRAY.size()); \ + NAME = ARRAY[reinterpret_cast (++foreach_counter##NAME) / sizeof (foreach_counter##NAME)]) + // Single element of an array template class arrayElement { public: @@ -180,4 +187,4 @@ } arrayElement* data; -}; \ No newline at end of file +};