1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00
luanti/src/util/enum_string.h

28 lines
636 B
C
Raw Normal View History

// Luanti
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (C) 2025 cx384
#pragma once
#include <string_view>
2025-02-19 18:45:45 +01:00
#include <type_traits>
struct EnumString
{
int num;
const char *str;
};
bool string_to_enum(const EnumString *spec, int &result, std::string_view str);
2025-02-19 18:45:45 +01:00
template <typename T, std::enable_if_t<std::is_enum_v<T>, bool> = true>
bool string_to_enum(const EnumString *spec, T &result, std::string_view str)
{
int result_int = result;
bool ret = string_to_enum(spec, result_int, str);
result = static_cast<T>(result_int);
return ret;
}
[[nodiscard]] const char *enum_to_string(const EnumString *spec, int num);