Files
Shipwright/soh/soh/Enhancements/randomizer/randomizerEnumStrings.cpp
T
Philip Dubé 495a2b17db revise randomizerEnumStrings, include fmt compatibility (#7148)
prefer switch over map, avoids static initializer & reduces code size by over a megabyte
2026-09-05 19:59:44 +00:00

27 lines
1.0 KiB
C++

#include "randomizerEnumStrings.h"
static std::string NameOrValue(std::string_view name, std::string_view enumName, long long value) {
if (!name.empty()) {
return std::string(name);
}
return std::string(enumName) + '(' + std::to_string(value) + ')';
}
#define RANDO_ENUM_BEGIN(EnumName) \
std::string_view EnumToString(EnumName value) { \
switch (value) {
#define RANDO_ENUM_ITEM(name, ...) \
case name: \
return #name;
#define RANDO_ENUM_END(EnumName) \
} \
return {}; \
} \
std::string format_as(EnumName value) { \
return NameOrValue(EnumToString(value), #EnumName, (long long)value); \
}
#include "randomizerEnumList.h"