15 constexpr EnumStringMap(
const std::array<std::pair<Enum, const char*>, N>& init) : stringList_() {
16 for (std::size_t i = 0; i < N; ++i) {
17 const auto& p = init[i];
18 const auto index =
static_cast<std::underlying_type_t<Enum>
>(p.first);
19 stringList_[index] = p.second;
21 static_assert(std::is_enum_v<Enum>,
"EnumStringMap requires an enum type");
22 static_assert(N > 0,
"EnumStringMap requires at least one enum value");
23 static_assert(N == std::size(init),
24 "EnumStringMap requires an enum type with the same number of values as the initializer list");
27 constexpr const char* operator()(Enum a) {
return stringList_[
static_cast<std::underlying_type_t<Enum>
>(a)]; }
31 for (
int i = 0; i < N; i++) {
32 if (!strcmp(str, stringList_[i])) {
33 return static_cast<Enum
>(i);
38 D_PRINTLN(popup,
"no match for:%s", str);
40 return static_cast<Enum
>(N - 1);
44 const char* stringList_[N];
constexpr Enum operator()(const char *str)
Convert string to enum, returning enum variant N on failure.
Definition enum_to_string_map.hpp:30