mirror of
https://github.com/Neargye/magic_enum.git
synced 2026-01-10 23:44:29 +00:00
clean-up
This commit is contained in:
parent
6654d24a82
commit
806f2530ef
3 changed files with 27 additions and 25 deletions
|
|
@ -50,7 +50,7 @@
|
|||
Banana = 3,
|
||||
COUNT = 4
|
||||
};
|
||||
// magic_enum::enum_cast<ShapeKind>("Box") -> std::nullopt
|
||||
// magic_enum::enum_cast<ShapeKind>("Box") -> nullopt
|
||||
// magic_enum::enum_name(ShapeKind::Box) -> "ConvexBegin"
|
||||
```
|
||||
|
||||
|
|
@ -76,7 +76,7 @@
|
|||
// magic_enum::enum_name(ShapeKind::Box) -> "Box"
|
||||
|
||||
// Non-reflected aliases.
|
||||
// magic_enum::enum_cast<ShapeKind>("ConvexBegin") -> std::nullopt
|
||||
// magic_enum::enum_cast<ShapeKind>("ConvexBegin") -> nullopt
|
||||
// magic_enum::enum_name(ShapeKind::ConvexBegin) -> "Box"
|
||||
```
|
||||
|
||||
|
|
@ -87,9 +87,9 @@
|
|||
one = 1,
|
||||
ONE = 1
|
||||
};
|
||||
// magic_enum::enum_cast<Number>("one") -> std::nullopt
|
||||
// magic_enum::enum_cast<Number>("one") -> nullopt
|
||||
// magic_enum::enum_name(Number::one) -> ""
|
||||
// magic_enum::enum_cast<Number>("ONE") -> std::nullopt
|
||||
// magic_enum::enum_cast<Number>("ONE") -> nullopt
|
||||
// magic_enum::enum_name(Number::ONE) -> ""
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
* [`enum_type_name` returns type name of enum.](#enum_type_name)
|
||||
* [`is_unscoped_enum` checks whether type is an Unscoped enumeration.](#is_unscoped_enum)
|
||||
* [`is_scoped_enum` checks whether type is an Scoped enumeration.](#is_scoped_enum)
|
||||
* [`underlying_type` improved UB-free "SFINAE-friendly" std::underlying_type.](#underlying_type)
|
||||
* [`underlying_type` improved UB-free "SFINAE-friendly" underlying_type.](#underlying_type)
|
||||
* [`ostream_operators` ostream operators for enums.](#ostream_operators)
|
||||
* [`bitwise_operators` bitwise operators for enums.](#bitwise_operators)
|
||||
|
||||
|
|
@ -41,9 +41,9 @@ constexpr optional<E> enum_cast(string_view value, BinaryPredicate p) noexcept(i
|
|||
|
||||
* Obtains enum value from string or integer.
|
||||
|
||||
* Returns `std::optional<E>`, using `has_value()` to check contains enum value and `value()` to get the enum value.
|
||||
* Returns `optional<E>`, using `has_value()` to check contains enum value and `value()` to get the enum value.
|
||||
|
||||
* If argument does not enum value, returns empty `std::optional`.
|
||||
* If argument does not enum value, returns empty `optional`.
|
||||
|
||||
* Examples
|
||||
|
||||
|
|
@ -93,7 +93,7 @@ template <typename E>
|
|||
constexpr array<E, N> enum_values() noexcept;
|
||||
```
|
||||
|
||||
* Returns `std::array<E, N>` with all enum values where `N = number of enum values`, sorted by enum value.
|
||||
* Returns `array<E, N>` with all enum values where `N = number of enum values`, sorted by enum value.
|
||||
|
||||
* Examples
|
||||
|
||||
|
|
@ -146,7 +146,7 @@ template <auto V>
|
|||
constexpr string_view enum_name() noexcept;
|
||||
```
|
||||
|
||||
* Returns name from enum value as `std::string_view` with null-terminated string.
|
||||
* Returns name from enum value as `string_view` with null-terminated string.
|
||||
* If enum value does not have name or [out of range](limitations.md), `enum_name(value)` returns empty string.
|
||||
* If enum value does not have name, `enum_name<value>()` occurs the compilation error `"Enum value does not have a name."`.
|
||||
|
||||
|
|
@ -177,7 +177,7 @@ template <typename E>
|
|||
constexpr array<string_view, N> enum_names() noexcept;
|
||||
```
|
||||
|
||||
* Returns `std::array<std::string_view, N>` with all names where `N = number of enum values`, sorted by enum value.
|
||||
* Returns `array<string_view, N>` with all names where `N = number of enum values`, sorted by enum value.
|
||||
|
||||
* Examples
|
||||
|
||||
|
|
@ -194,7 +194,7 @@ template <typename E>
|
|||
constexpr array<pair<E, string_view>, N> enum_entries() noexcept;
|
||||
```
|
||||
|
||||
* Returns `std::array<std::pair<E, std::string_view>, N>` with all pairs (value, name) where `N = number of enum values`, sorted by enum value.
|
||||
* Returns `array<pair<E, string_view>, N>` with all pairs (value, name) where `N = number of enum values`, sorted by enum value.
|
||||
|
||||
* Examples
|
||||
|
||||
|
|
@ -214,7 +214,7 @@ constexpr optional<size_t> enum_index() noexcept;
|
|||
|
||||
* Obtains index in enum values from enum value.
|
||||
|
||||
* Returns `std::optional<std::size_t>` with index.
|
||||
* Returns `optional<size_t>` with index.
|
||||
|
||||
* Examples
|
||||
|
||||
|
|
@ -261,7 +261,7 @@ template <typename E>
|
|||
constexpr string_view enum_type_name() noexcept;
|
||||
```
|
||||
|
||||
* Returns type name of enum as `std::string_view` null-terminated string.
|
||||
* Returns type name of enum as `string_view` null-terminated string.
|
||||
|
||||
* Examples
|
||||
|
||||
|
|
@ -331,7 +331,7 @@ template <typename T>
|
|||
using underlying_type_t = typename underlying_type<T>::type;
|
||||
```
|
||||
|
||||
* Improved UB-free "SFINAE-friendly" [std::underlying_type](https://en.cppreference.com/w/cpp/types/underlying_type).
|
||||
* Improved UB-free "SFINAE-friendly" [underlying_type](https://en.cppreference.com/w/cpp/types/underlying_type).
|
||||
|
||||
* If T is a complete enumeration type, provides a member typedef type that names the underlying type of T.</br>
|
||||
Otherwise, if T is not an enumeration type, there is no member type.</br>
|
||||
|
|
|
|||
|
|
@ -154,13 +154,20 @@ struct supported
|
|||
: std::false_type {};
|
||||
#endif
|
||||
|
||||
struct char_equal_to {
|
||||
constexpr bool operator()(char lhs, char rhs) const noexcept {
|
||||
return lhs == rhs;
|
||||
}
|
||||
};
|
||||
|
||||
template <std::size_t N>
|
||||
struct static_string {
|
||||
class static_string {
|
||||
public:
|
||||
constexpr explicit static_string(string_view str) noexcept : static_string{str, std::make_index_sequence<N>{}} {
|
||||
assert(str.size() == N);
|
||||
}
|
||||
|
||||
constexpr const char* data() const noexcept { return chars.data(); }
|
||||
constexpr const char* data() const noexcept { return chars_.data(); }
|
||||
|
||||
constexpr std::size_t size() const noexcept { return N; }
|
||||
|
||||
|
|
@ -168,13 +175,14 @@ struct static_string {
|
|||
|
||||
private:
|
||||
template <std::size_t... I>
|
||||
constexpr static_string(string_view str, std::index_sequence<I...>) noexcept : chars{{str[I]..., '\0'}} {}
|
||||
constexpr static_string(string_view str, std::index_sequence<I...>) noexcept : chars_{{str[I]..., '\0'}} {}
|
||||
|
||||
const std::array<char, N + 1> chars;
|
||||
const std::array<char, N + 1> chars_;
|
||||
};
|
||||
|
||||
template <>
|
||||
struct static_string<0> {
|
||||
class static_string<0> {
|
||||
public:
|
||||
constexpr explicit static_string(string_view) noexcept {}
|
||||
|
||||
constexpr const char* data() const noexcept { return nullptr; }
|
||||
|
|
@ -184,12 +192,6 @@ struct static_string<0> {
|
|||
constexpr operator string_view() const noexcept { return {}; }
|
||||
};
|
||||
|
||||
struct char_equal_to {
|
||||
constexpr bool operator()(char lhs, char rhs) const noexcept {
|
||||
return lhs == rhs;
|
||||
}
|
||||
};
|
||||
|
||||
constexpr string_view pretty_name(string_view name) noexcept {
|
||||
for (std::size_t i = name.size(); i > 0; --i) {
|
||||
if (!((name[i - 1] >= '0' && name[i - 1] <= '9') ||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue