|
template<auto V, typename E = std::decay_t<decltype(V)>, std::enable_if_t< std::is_enum_v< E >, int > = 0> |
using | magic_enum::detail::enum_constant = std::integral_constant< E, V > |
|
template<typename E , typename D = std::decay_t<E>> |
using | magic_enum::detail::values_t = decltype((values_v< D >)) |
|
template<typename E , typename D = std::decay_t<E>> |
using | magic_enum::detail::names_t = decltype((names_v< D >)) |
|
template<typename E , typename D = std::decay_t<E>> |
using | magic_enum::detail::entries_t = decltype((entries_v< D >)) |
|
template<typename T , typename R , typename BinaryPredicate = std::equal_to<>, typename D = std::decay_t<T>> |
using | magic_enum::detail::enable_if_t = typename enable_if_enum< std::is_enum_v< D > &&std::is_invocable_r_v< bool, BinaryPredicate, char, char >, R >::type |
|
template<typename T , typename R , value_type VT, typename BinaryPredicate = std::equal_to<>, typename D = std::decay_t<T>> |
using | magic_enum::detail::enable_if_default_t = typename enable_if_enum< std::is_enum_v< D > &&VT==value_type::default_value &&std::is_invocable_r_v< bool, BinaryPredicate, char, char >, R >::type |
|
template<typename T , typename R , value_type VT, typename BinaryPredicate = std::equal_to<>, typename D = std::decay_t<T>> |
using | magic_enum::detail::enable_if_flags_t = typename enable_if_enum< std::is_enum_v< D > &&VT==value_type::flags_value &&std::is_invocable_r_v< bool, BinaryPredicate, char, char >, R >::type |
|
template<typename T , std::enable_if_t< std::is_enum_v< std::decay_t< T >>, int > = 0> |
using | magic_enum::detail::enum_concept = T |
|
template<typename T > |
using | magic_enum::Enum = detail::enum_concept< T > |
|
template<typename T > |
using | magic_enum::underlying_type_t = typename underlying_type< T >::type |
|
template<auto V> |
using | magic_enum::enum_constant = detail::enum_constant< V > |
|
|
template<typename E > |
constexpr customize_t | magic_enum::customize::enum_name (E) noexcept |
|
template<typename E > |
constexpr customize_t | magic_enum::customize::enum_type_name () noexcept |
|
constexpr string_view | magic_enum::detail::pretty_name (string_view name) noexcept |
|
constexpr std::size_t | magic_enum::detail::find (string_view str, char c) noexcept |
|
template<typename T , std::size_t N, std::size_t... I> |
constexpr std::array< std::remove_cv_t< T >, N > | magic_enum::detail::to_array (T(&a)[N], std::index_sequence< I... >) noexcept |
|
template<typename BinaryPredicate > |
constexpr bool | magic_enum::detail::is_default_predicate () noexcept |
|
template<typename BinaryPredicate > |
constexpr bool | magic_enum::detail::is_nothrow_invocable () |
|
template<typename BinaryPredicate > |
constexpr bool | magic_enum::detail::cmp_equal (string_view lhs, string_view rhs, [[maybe_unused]] BinaryPredicate &&p) noexcept(is_nothrow_invocable< BinaryPredicate >()) |
|
template<typename L , typename R > |
constexpr bool | magic_enum::detail::cmp_less (L lhs, R rhs) noexcept |
|
template<typename I > |
constexpr I | magic_enum::detail::log2 (I value) noexcept |
|
template<typename E > |
constexpr auto | magic_enum::detail::n () noexcept |
|
template<typename E > |
constexpr auto | magic_enum::detail::type_name () noexcept |
|
template<typename E , E V> |
constexpr auto | magic_enum::detail::n () noexcept |
|
template<typename E , E V> |
constexpr auto | magic_enum::detail::enum_name () noexcept |
|
template<typename E , auto V> |
constexpr bool | magic_enum::detail::is_valid () noexcept |
|
template<typename E , int O, bool IsFlags, typename U = std::underlying_type_t<E>> |
constexpr U | magic_enum::detail::ualue (std::size_t i) noexcept |
|
template<typename E , int O, bool IsFlags, typename U = std::underlying_type_t<E>> |
constexpr E | magic_enum::detail::value (std::size_t i) noexcept |
|
template<typename E , bool IsFlags, typename U = std::underlying_type_t<E>> |
constexpr int | magic_enum::detail::reflected_min () noexcept |
|
template<typename E , bool IsFlags, typename U = std::underlying_type_t<E>> |
constexpr int | magic_enum::detail::reflected_max () noexcept |
|
template<std::size_t N> |
constexpr std::size_t | magic_enum::detail::values_count (const bool(&valid)[N]) noexcept |
|
template<typename E , bool IsFlags, int Min, std::size_t... I> |
constexpr auto | magic_enum::detail::values (std::index_sequence< I... >) noexcept |
|
template<typename E , bool IsFlags, typename U = std::underlying_type_t<E>> |
constexpr auto | magic_enum::detail::values () noexcept |
|
template<typename E , typename U = std::underlying_type_t<E>> |
constexpr bool | magic_enum::detail::is_flags_enum () noexcept |
|
template<typename E , std::size_t... I> |
constexpr auto | magic_enum::detail::names (std::index_sequence< I... >) noexcept |
|
template<typename E , std::size_t... I> |
constexpr auto | magic_enum::detail::entries (std::index_sequence< I... >) noexcept |
|
template<typename E , typename U = std::underlying_type_t<E>> |
constexpr bool | magic_enum::detail::is_sparse () noexcept |
|
template<typename E , typename U = std::underlying_type_t<E>> |
constexpr U | magic_enum::detail::values_ors () noexcept |
|
template<typename E , typename F , std::size_t... I> |
constexpr auto | magic_enum::detail::for_each (F &&f, std::index_sequence< I... >) |
|
template<typename E , typename F , std::size_t... I> |
constexpr bool | magic_enum::detail::all_invocable (std::index_sequence< I... >) |
|
template<typename E > |
constexpr auto | magic_enum::enum_type_name () noexcept -> detail::enable_if_t< E, string_view > |
|
template<typename E > |
constexpr auto | magic_enum::enum_count () noexcept -> detail::enable_if_t< E, std::size_t > |
|
template<typename E > |
constexpr auto | magic_enum::enum_value (std::size_t index) noexcept -> detail::enable_if_t< E, std::decay_t< E >> |
|
template<typename E , std::size_t I> |
constexpr auto | magic_enum::enum_value () noexcept -> detail::enable_if_t< E, std::decay_t< E >> |
|
template<typename E > |
constexpr auto | magic_enum::enum_values () noexcept -> detail::enable_if_t< E, detail::values_t< E >> |
|
template<typename E > |
constexpr auto | magic_enum::enum_integer (E value) noexcept -> detail::enable_if_t< E, underlying_type_t< E >> |
|
template<typename E > |
constexpr auto | magic_enum::enum_underlying (E value) noexcept -> detail::enable_if_t< E, underlying_type_t< E >> |
|
template<typename E > |
constexpr auto | magic_enum::enum_index (E value) noexcept -> detail::enable_if_t< E, optional< std::size_t >> |
|
template<auto V> |
constexpr auto | magic_enum::enum_index () noexcept -> detail::enable_if_t< decltype(V), std::size_t > |
|
template<auto V> |
constexpr auto | magic_enum::enum_name () noexcept -> detail::enable_if_t< decltype(V), string_view > |
|
template<typename E , detail::value_type VT = detail::value_type::default_value> |
constexpr auto | magic_enum::enum_name (E value) noexcept -> detail::enable_if_default_t< E, string_view, VT > |
|
template<typename E , detail::value_type VT> |
auto | magic_enum::enum_name (E value) -> detail::enable_if_flags_t< E, string, VT > |
|
template<typename E > |
auto | magic_enum::enum_flags_name (E value) -> detail::enable_if_t< E, string > |
|
template<typename E > |
constexpr auto | magic_enum::enum_names () noexcept -> detail::enable_if_t< E, detail::names_t< E >> |
|
template<typename E > |
constexpr auto | magic_enum::enum_entries () noexcept -> detail::enable_if_t< E, detail::entries_t< E >> |
|
template<typename E , detail::value_type VT = detail::value_type::default_value> |
constexpr auto | magic_enum::enum_cast (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, optional< std::decay_t< E >>> |
|
template<typename E > |
constexpr auto | magic_enum::enum_flags_cast (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, optional< std::decay_t< E >>> |
|
template<typename E , detail::value_type VT = detail::value_type::default_value, typename BinaryPredicate = std::equal_to<>> |
constexpr auto | magic_enum::enum_cast (string_view value, [[maybe_unused]] BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, optional< std::decay_t< E >>, BinaryPredicate > |
|
template<typename E , typename BinaryPredicate = std::equal_to<>> |
constexpr auto | magic_enum::enum_flags_cast (string_view value, [[maybe_unused]] BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, optional< std::decay_t< E >>, BinaryPredicate > |
|
template<typename E , detail::value_type VT = detail::value_type::default_value> |
constexpr auto | magic_enum::enum_contains (E value) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename E > |
constexpr auto | magic_enum::enum_flags_contains (E value) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename E , detail::value_type VT = detail::value_type::default_value> |
constexpr auto | magic_enum::enum_contains (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename E > |
constexpr auto | magic_enum::enum_flags_contains (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, bool > |
|
template<typename E , detail::value_type VT = detail::value_type::default_value, typename BinaryPredicate = std::equal_to<>> |
constexpr auto | magic_enum::enum_contains (string_view value, BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, bool, BinaryPredicate > |
|
template<typename E , typename BinaryPredicate = std::equal_to<>> |
constexpr auto | magic_enum::enum_flags_contains (string_view value, BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, bool, BinaryPredicate > |
|
template<typename E , typename F , detail::enable_if_t< E, int > = 0> |
constexpr auto | magic_enum::enum_for_each (F &&f) |
|
template<typename Char , typename Traits , typename E , detail::enable_if_t< E, int > = 0> |
std::basic_ostream< Char, Traits > & | magic_enum::ostream_operators::operator<< (std::basic_ostream< Char, Traits > &os, E value) |
|
template<typename Char , typename Traits , typename E , detail::enable_if_t< E, int > = 0> |
std::basic_ostream< Char, Traits > & | magic_enum::ostream_operators::operator<< (std::basic_ostream< Char, Traits > &os, optional< E > value) |
|
template<typename Char , typename Traits , typename E , detail::enable_if_t< E, int > = 0> |
std::basic_istream< Char, Traits > & | magic_enum::istream_operators::operator>> (std::basic_istream< Char, Traits > &is, E &value) |
|
template<typename E , detail::enable_if_t< E, int > = 0> |
constexpr E | magic_enum::bitwise_operators::operator~ (E rhs) noexcept |
|
template<typename E , detail::enable_if_t< E, int > = 0> |
constexpr E | magic_enum::bitwise_operators::operator| (E lhs, E rhs) noexcept |
|
template<typename E , detail::enable_if_t< E, int > = 0> |
constexpr E | magic_enum::bitwise_operators::operator& (E lhs, E rhs) noexcept |
|
template<typename E , detail::enable_if_t< E, int > = 0> |
constexpr E | magic_enum::bitwise_operators::operator^ (E lhs, E rhs) noexcept |
|
template<typename E , detail::enable_if_t< E, int > = 0> |
constexpr E & | magic_enum::bitwise_operators::operator|= (E &lhs, E rhs) noexcept |
|
template<typename E , detail::enable_if_t< E, int > = 0> |
constexpr E & | magic_enum::bitwise_operators::operator&= (E &lhs, E rhs) noexcept |
|
template<typename E , detail::enable_if_t< E, int > = 0> |
constexpr E & | magic_enum::bitwise_operators::operator^= (E &lhs, E rhs) noexcept |
|