## AuroraForEach Implements a `AU_FOR_EACH_n` X-style macro that accepts a macro parameter where 'N' is the input parameters of the macro ## Example ```C #define HELLO_WORLD(that, n) that n #define COUNT_TO_9 AU_FOR_EACH_THAT(HELLO_WORLD, int, 1, 2, 3, 4, 5, 6, 7, 8, 9) const char *kCountTo9 = AU_STRINGIFY(COUNT_TO_9); // generic what macro assert(strcmp(kCountTo9, "int 1 int 2 int 3 int 4 int 5 int 6 int 7 int 8 int 9") == 0); ``` ```C #define HELLO_WORLD(n) n #define COUNT_TO_9 AU_FOR_EACH(HELLO_WORLD, 1, 2, 3, 4, 5, 6, 7, 8, 9) const char *kCountTo9 = AU_STRINGIFY(COUNT_TO_9); // generic what macro assert(strcmp(kCountTo9, "1 2 3 4 5 6 7 8 9") == 0); ``` ```C #define HELLO_WORLD(n) , n #define HELLO_WORLD_FIRST(n) 0, n #define COUNT_TO_9 AU_FOR_EACH_FIRST(HELLO_WORLD_FIRST, HELLO_WORLD, 1, 2, 3, 4, 5, 6, 7, 8, 9) const char *kCountTo9 = AU_STRINGIFY(COUNT_TO_9); // generic what macro assert(strcmp(kCountTo9, "0, 1, 2, 3, 4, 5, 6, 7, 8, 9") == 0); ``` *Note, simple tests akin to the above examples may fail due to whitespace padding.* ## Users * [Aurora Interfaces](https://git.reece.sx/AuroraSupport/AuroraInterfaces) (Advanced use case) * [Aurora Enumerations](https://git.reece.sx/AuroraSupport/AuroraEnum) ## License Public Domain or Unlicense ## Credit Based on * https://stackoverflow.com/questions/11761703/overloading-macro-on-number-of-arguments * https://stackoverflow.com/questions/1872220/is-it-possible-to-iterate-over-arguments-in-variadic-macros