29 #ifndef AURORA_FOREACH_HPP
30 #define AURORA_FOREACH_HPP
36 #define AURORA_ID(identifier) AURORA_PP_CAT(auroraDetail_, identifier)
37 #define AURORA_LINE_ID(identifier) AURORA_PP_CAT(AURORA_ID(identifier), __LINE__)
53 #define AURORA_FOREACH(declaration, container) \
54 if (bool AURORA_LINE_ID(broken) = false) {} else \
55 for (auto AURORA_LINE_ID(itr) = (container).begin(); AURORA_LINE_ID(itr) != (container).end() && !AURORA_LINE_ID(broken); ++AURORA_LINE_ID(itr)) \
56 if (bool AURORA_LINE_ID(passed) = false) {} else \
57 if (AURORA_LINE_ID(broken) = true, false) {} else \
58 for (declaration = *AURORA_LINE_ID(itr); !AURORA_LINE_ID(passed); AURORA_LINE_ID(passed) = true, AURORA_LINE_ID(broken) = false)
62 #endif // AURORA_FOREACH_HPP
Utilities for preprocessor metaprogramming.