mirror of
https://github.com/Neargye/magic_enum.git
synced 2026-01-10 23:44:29 +00:00
2.9 KiB
2.9 KiB
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