mirror of
https://github.com/Neargye/magic_enum
synced 2026-06-08 12:00:02 +00:00
194e82ed10ed40803a45f9feaa118ca78e44d642
Magic Enum C++
__ __ _ ______ _____
| \/ | (_) | ____| / ____|_ _
| \ / | __ _ __ _ _ ___ | |__ _ __ _ _ _ __ ___ | | _| |_ _| |_
| |\/| |/ _` |/ _` | |/ __| | __| | '_ \| | | | '_ ` _ \ | | |_ _|_ _|
| | | | (_| | (_| | | (__ | |____| | | | |_| | | | | | | | |____|_| |_|
|_| |_|\__,_|\__, |_|\___| |______|_| |_|\__,_|_| |_| |_| \_____|
__/ |
|___/
What is Magic Enum?
Header-only C++17 library provides Enum-to-String and String-to-Enum functions.
magic_enum::enum_to_stringused to obtain string enum name from enum variable.magic_enum::enum_from_stringused to obtain enum variable from enum string name.
Features
- C++17
- Header-only
- Dependency-free
- Compile-time
- Enum to string
- String to enum
Examples
-
Enum variable to string enum name
auto color = Color::RED; auto color_name = magic_enum::enum_to_string(color); if (color_name.has_value()) { // color_name.value() -> "RED" } -
Static storage enum variable to string enum name
constexpr auto color = Color::BLUE; constexpr auto color_name = magic_enum::enum_to_string<color>(); if (color_name.has_value()) { // color_name.value() -> "BLUE" } -
String enum name to enum variable
constexpr auto color = magic_enum::enum_from_string<Color>("GREEN"); if (color.has_value()) { // color.value() -> Color::GREEN }
Remarks
- Enum variable must be in range (-MAGIC_ENUM_RANGE, MAGIC_ENUM_RANGE). By default MAGIC_ENUM_RANGE = 128. If you need a larger range, redefine the macro MAGIC_ENUM_RANGE.
#define MAGIC_ENUM_RANGE 1028 // Redefine MAGIC_ENUM_RANGE for larger range. #include <magic_enum.hpp>
Integration
You have to add required file magic_enum.hpp.
Compiler compatibility
- Clang/LLVM >= 5
- Visual C++ >= 15.3 / Visual Studio >= 2017
- Xcode >= 10.2
- GCC >= 9
Licensed under the MIT License
Languages
C++
91.2%
CMake
7.3%
Dockerfile
0.6%
Meson
0.4%
Starlark
0.3%
Other
0.2%