mirror of
https://github.com/Neargye/magic_enum.git
synced 2026-01-09 23:34:23 +00:00
update doc
This commit is contained in:
parent
a576c077be
commit
06a8669d49
3 changed files with 97 additions and 25 deletions
|
|
@ -15,7 +15,7 @@
|
|||
* [`ostream_operators` ostream operators for enums.](#ostream_operators)
|
||||
* [`bitwise_operators` bitwise operators for enums.](#bitwise_operators)
|
||||
|
||||
# Synopsis
|
||||
## Synopsis
|
||||
|
||||
* Before use, read the [limitations](limitations.md) of functionality.
|
||||
|
||||
|
|
@ -23,6 +23,7 @@
|
|||
If magic_enum used on unsupported compiler, occurs the compilation error. To suppress error define macro `MAGIC_ENUM_NO_CHECK_SUPPORT`.
|
||||
|
||||
## `enum_cast`
|
||||
|
||||
```cpp
|
||||
template <typename E>
|
||||
constexpr optional<E> enum_cast(string_view value) noexcept;
|
||||
|
|
@ -38,7 +39,9 @@ constexpr optional<E> enum_cast(underlying_type_t<E> value) noexcept;
|
|||
* If argument does not enum value, returns empty `std::optional`.
|
||||
|
||||
* Examples
|
||||
* String to enum value.
|
||||
|
||||
* String to enum value.
|
||||
|
||||
```cpp
|
||||
std::string color_name{"GREEN"};
|
||||
auto color = magic_enum::enum_cast<Color>(color_name);
|
||||
|
|
@ -46,7 +49,9 @@ constexpr optional<E> enum_cast(underlying_type_t<E> value) noexcept;
|
|||
// color.value() -> Color::GREEN
|
||||
}
|
||||
```
|
||||
* Integer to enum value.
|
||||
|
||||
* Integer to enum value.
|
||||
|
||||
```cpp
|
||||
int color_integer = 2;
|
||||
auto color = magic_enum::enum_cast<Color>(color_integer);
|
||||
|
|
@ -56,6 +61,7 @@ constexpr optional<E> enum_cast(underlying_type_t<E> value) noexcept;
|
|||
```
|
||||
|
||||
## `enum_value`
|
||||
|
||||
```cpp
|
||||
template <typename E>
|
||||
constexpr E enum_value(size_t index) noexcept;
|
||||
|
|
@ -66,6 +72,7 @@ constexpr E enum_value(size_t index) noexcept;
|
|||
* No bounds checking is performed: the behavior is undefined if `index >= number of enum values`.
|
||||
|
||||
* Examples
|
||||
|
||||
```cpp
|
||||
int i = 1;
|
||||
Color color = magic_enum::enum_value<Color>(i);
|
||||
|
|
@ -73,6 +80,7 @@ constexpr E enum_value(size_t index) noexcept;
|
|||
````
|
||||
|
||||
## `enum_values`
|
||||
|
||||
```cpp
|
||||
template <typename E>
|
||||
constexpr array<E, N> enum_values() noexcept;
|
||||
|
|
@ -81,6 +89,7 @@ constexpr array<E, N> enum_values() noexcept;
|
|||
* Returns `std::array<E, N>` with all enum value where `N = number of enum values`, sorted by enum value.
|
||||
|
||||
* Examples
|
||||
|
||||
```cpp
|
||||
constexpr auto colors = magic_enum::enum_values<Color>();
|
||||
// colors -> {Color::RED, Color::BLUE, Color::GREEN}
|
||||
|
|
@ -88,6 +97,7 @@ constexpr array<E, N> enum_values() noexcept;
|
|||
```
|
||||
|
||||
## `enum_count`
|
||||
|
||||
```cpp
|
||||
template <typename E>
|
||||
constexpr size_t enum_count() noexcept;
|
||||
|
|
@ -96,12 +106,14 @@ constexpr size_t enum_count() noexcept;
|
|||
* Returns number of enum values.
|
||||
|
||||
* Examples
|
||||
|
||||
```cpp
|
||||
constexpr std::size_t color_count = magic_enum::enum_count<Color>();
|
||||
// color_count -> 3
|
||||
```
|
||||
|
||||
## `enum_integer`
|
||||
|
||||
```cpp
|
||||
template <typename E>
|
||||
constexpr underlying_type_t<E> enum_integer(E value) noexcept;
|
||||
|
|
@ -110,6 +122,7 @@ constexpr underlying_type_t<E> enum_integer(E value) noexcept;
|
|||
* Returns integer value from enum value.
|
||||
|
||||
* Examples
|
||||
|
||||
```cpp
|
||||
Color color = Color::RED;
|
||||
auto color_integer = magic_enum::enum_integer(color);
|
||||
|
|
@ -117,6 +130,7 @@ constexpr underlying_type_t<E> enum_integer(E value) noexcept;
|
|||
```
|
||||
|
||||
## `enum_name`
|
||||
|
||||
```cpp
|
||||
template <typename E>
|
||||
constexpr string_view enum_name(E value) noexcept;
|
||||
|
|
@ -128,14 +142,18 @@ constexpr string_view enum_name() noexcept;
|
|||
* Returns `std::string_view`. If enum value does not have name, returns empty string.
|
||||
|
||||
* Examples
|
||||
* Enum value to string.
|
||||
|
||||
* Enum value to string.
|
||||
|
||||
```cpp
|
||||
Color color = Color::RED;
|
||||
auto color_name = magic_enum::enum_name(color);
|
||||
// color_name -> "RED"
|
||||
```
|
||||
* Static storage enum variable to string.
|
||||
|
||||
* Static storage enum variable to string.
|
||||
This version is much lighter on the compile times and is not restricted to the enum_range [limitation](doc/limitations.md).
|
||||
|
||||
```cpp
|
||||
constexpr Color color = Color::BLUE;
|
||||
constexpr auto color_name = magic_enum::enum_name<color>();
|
||||
|
|
@ -144,8 +162,8 @@ constexpr string_view enum_name() noexcept;
|
|||
|
||||
* `magic_enum::enum_name<value>()` is much lighter on the compile times and is not restricted to the enum_range [limitation](limitation.md).
|
||||
|
||||
|
||||
## `enum_names`
|
||||
|
||||
```cpp
|
||||
template <typename E>
|
||||
constexpr array<string_view, N> enum_names() noexcept;
|
||||
|
|
@ -154,6 +172,7 @@ constexpr array<string_view, N> enum_names() noexcept;
|
|||
* Returns `std::array<std::string_view, N>` with all string enum name where `N = number of enum values`, sorted by enum value.
|
||||
|
||||
* Examples
|
||||
|
||||
```cpp
|
||||
constexpr auto color_names = magic_enum::enum_names<Color>();
|
||||
// color_names -> {"RED", "BLUE", "GREEN"}
|
||||
|
|
@ -161,6 +180,7 @@ constexpr array<string_view, N> enum_names() noexcept;
|
|||
```
|
||||
|
||||
## `enum_entries`
|
||||
|
||||
```cpp
|
||||
template <typename E>
|
||||
constexpr array<pair<E, string_view>, N> enum_entries() noexcept;
|
||||
|
|
@ -169,6 +189,7 @@ constexpr array<pair<E, string_view>, N> enum_entries() noexcept;
|
|||
* Returns `std::array<std::pair<E, std::string_view>, N>` with all `std::pair` (value enum, string enum name) where `N = number of enum values`, sorted by enum value.
|
||||
|
||||
* Examples
|
||||
|
||||
```cpp
|
||||
constexpr auto color_entries = magic_enum::enum_entries<Color>();
|
||||
// color_entries -> {{Color::RED, "RED"}, {Color::BLUE, "BLUE"}, {Color::GREEN, "GREEN"}}
|
||||
|
|
@ -177,6 +198,7 @@ constexpr array<pair<E, string_view>, N> enum_entries() noexcept;
|
|||
```
|
||||
|
||||
## `is_unscoped_enum`
|
||||
|
||||
```cpp
|
||||
template <typename T>
|
||||
struct is_unscoped_enum;
|
||||
|
|
@ -190,6 +212,7 @@ inline constexpr bool is_unscoped_enum_v = is_unscoped_enum<T>::value;
|
|||
* Provides the member constant value which is equal to true, if T is an [Unscoped enumeration](https://en.cppreference.com/w/cpp/language/enum#Unscoped_enumeration) type. Otherwise, value is equal to false.
|
||||
|
||||
* Examples
|
||||
|
||||
```cpp
|
||||
magic_enum::is_unscoped_enum<color>::value -> true
|
||||
magic_enum::is_unscoped_enum<Direction>::value -> false
|
||||
|
|
@ -199,6 +222,7 @@ inline constexpr bool is_unscoped_enum_v = is_unscoped_enum<T>::value;
|
|||
```
|
||||
|
||||
## `is_scoped_enum`
|
||||
|
||||
```cpp
|
||||
template <typename T>
|
||||
struct is_scoped_enum;
|
||||
|
|
@ -212,6 +236,7 @@ inline constexpr bool is_scoped_enum_v = is_scoped_enum<T>::value;
|
|||
* Provides the member constant value which is equal to true, if T is an [Scoped enumeration](https://en.cppreference.com/w/cpp/language/enum#Scoped_enumerations) type. Otherwise, value is equal to false.
|
||||
|
||||
* Examples
|
||||
|
||||
```cpp
|
||||
magic_enum::is_scoped_enum<color>::value -> false
|
||||
magic_enum::is_scoped_enum<Direction>::value -> true
|
||||
|
|
@ -235,6 +260,7 @@ using underlying_type_t = typename underlying_type<T>::type;
|
|||
* If T is a complete enumeration type, provides a member typedef type that names the underlying type of T. Otherwise, if T is not an enumeration type, there is no member type. Otherwise (T is an incomplete enumeration type), the program is ill-formed.
|
||||
|
||||
* Examples
|
||||
|
||||
```cpp
|
||||
magic_enum::underlying_type<color>::type -> int
|
||||
|
||||
|
|
@ -243,6 +269,7 @@ using underlying_type_t = typename underlying_type<T>::type;
|
|||
```
|
||||
|
||||
## `ostream_operators`
|
||||
|
||||
```cpp
|
||||
template <typename Char, typename Traits, typename E>
|
||||
basic_ostream<Char, Traits>& operator<<(basic_ostream<Char, Traits>& os, E value);
|
||||
|
|
@ -251,9 +278,11 @@ template <typename Char, typename Traits, typename E>
|
|||
basic_ostream<Char, Traits>& operator<<(basic_ostream<Char, Traits>& os, optional<E> value);
|
||||
|
||||
```
|
||||
|
||||
* Out-of-the-box ostream operators for all enums.
|
||||
|
||||
* Examples
|
||||
|
||||
```cpp
|
||||
using namespace magic_enum::ostream_operators; // out-of-the-box ostream operators for enums.
|
||||
Color color = Color::BLUE;
|
||||
|
|
@ -261,6 +290,7 @@ basic_ostream<Char, Traits>& operator<<(basic_ostream<Char, Traits>& os, optiona
|
|||
```
|
||||
|
||||
## `bitwise_operators`
|
||||
|
||||
```cpp
|
||||
template <typename E>
|
||||
constexpr E operator~(E rhs) noexcept;
|
||||
|
|
@ -287,6 +317,7 @@ constexpr E& operator^=(E& lhs, E rhs) noexcept;
|
|||
* Out-of-the-box bitwise operators for all enums.
|
||||
|
||||
* Examples
|
||||
|
||||
```cpp
|
||||
enum class Flags { A = 1 << 0, B = 1 << 1, C = 1 << 2, D = 1 << 3 };
|
||||
using namespace magic_enum::bitwise_operators; // out-of-the-box bitwise operators for enums.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue