mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-09-10 12:45:09 -04:00
495a2b17db
prefer switch over map, avoids static initializer & reduces code size by over a megabyte
27 lines
1.0 KiB
C++
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"
|