From 59c2f1c6463d55df066465526c5d29eb11cff38b Mon Sep 17 00:00:00 2001 From: Reece Date: Fri, 29 Oct 2021 00:34:25 +0100 Subject: [PATCH] Added additional constants and utilities [+] AUE_ITERATE [+] kEnumCount [+] kEnumMaxLegal [+] kEnumMinLegal --- Include/AuroraEnum.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Include/AuroraEnum.hpp b/Include/AuroraEnum.hpp index f0a3b84..7365522 100644 --- a/Include/AuroraEnum.hpp +++ b/Include/AuroraEnum.hpp @@ -84,4 +84,9 @@ using AuConsumer = std::function; static inline name name ## FromString (const AuString &codename) { AU_FOR_EACH_THAT(AUE_EMIT_CHECK, name, AUE_STRIP_BRACKETS(vals)) return name::kEnumCount; } \ static inline name name ## FromHashString(const AuString &codename) { auto itr = k ## name ## FromString.find(codename); if (itr == k ## name ## FromString.end()) return name::kEnumCount; return itr->second; } \ static inline const AuString & name ## ToString(name val) { static const AuString invalid = "kEnumCount"; if (static_cast(val) >= static_cast(name::kEnumCount)) return invalid; return k ## name ## ToString[static_cast(val)]; } \ - static inline void name ## ForEach(const AuConsumer &consumer) { AU_FOR_EACH_THAT(AUE_EMIT_CALL, name, AUE_STRIP_BRACKETS(vals)) } \ No newline at end of file + static inline void name ## ForEach(const AuConsumer &consumer) { AU_FOR_EACH_THAT(AUE_EMIT_CALL, name, AUE_STRIP_BRACKETS(vals)) } \ + static const AuUInt k ## name ## Count = static_cast(name::kEnumCount); \ + static const name k ## name ## MaxLegal = static_cast(k ## name ## Count - 1); \ + static const name k ## name ## MinLegal = static_cast(0); + +#define AUE_ITERATE(name, index) name index = static_cast(0); static_cast(index) < static_cast(name::kEnumCount); index = static_cast(static_cast(index) + 1) \ No newline at end of file