Remove size redundancy in enum_desc function declaration
The need to have the array size in the return type was redundant with the actual list of elements.
This commit is contained in:
parent
407c84666c
commit
1b1239b25a
|
@ -21,12 +21,12 @@ enum class EolFormat
|
|||
Crlf
|
||||
};
|
||||
|
||||
constexpr Array<EnumDesc<EolFormat>, 2> enum_desc(Meta::Type<EolFormat>)
|
||||
constexpr auto enum_desc(Meta::Type<EolFormat>)
|
||||
{
|
||||
return { {
|
||||
return make_array<EnumDesc<EolFormat>>({
|
||||
{ EolFormat::Lf, "lf" },
|
||||
{ EolFormat::Crlf, "crlf" },
|
||||
} };
|
||||
});
|
||||
}
|
||||
|
||||
enum class ByteOrderMark
|
||||
|
@ -35,12 +35,12 @@ enum class ByteOrderMark
|
|||
Utf8
|
||||
};
|
||||
|
||||
constexpr Array<EnumDesc<ByteOrderMark>, 2> enum_desc(Meta::Type<ByteOrderMark>)
|
||||
constexpr auto enum_desc(Meta::Type<ByteOrderMark>)
|
||||
{
|
||||
return { {
|
||||
return make_array<EnumDesc<ByteOrderMark>>({
|
||||
{ ByteOrderMark::None, "none" },
|
||||
{ ByteOrderMark::Utf8, "utf8" },
|
||||
} };
|
||||
});
|
||||
}
|
||||
|
||||
class Buffer;
|
||||
|
|
|
@ -131,15 +131,15 @@ enum class Autoreload
|
|||
Ask
|
||||
};
|
||||
|
||||
constexpr Array<EnumDesc<Autoreload>, 5> enum_desc(Meta::Type<Autoreload>)
|
||||
constexpr auto enum_desc(Meta::Type<Autoreload>)
|
||||
{
|
||||
return { {
|
||||
return make_array<EnumDesc<Autoreload>>({
|
||||
{ Autoreload::Yes, "yes" },
|
||||
{ Autoreload::No, "no" },
|
||||
{ Autoreload::Ask, "ask" },
|
||||
{ Autoreload::Yes, "true" },
|
||||
{ Autoreload::No, "false" }
|
||||
} };
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -136,13 +136,13 @@ enum class AutoInfo
|
|||
|
||||
constexpr bool with_bit_ops(Meta::Type<AutoInfo>) { return true; }
|
||||
|
||||
constexpr Array<EnumDesc<AutoInfo>, 3> enum_desc(Meta::Type<AutoInfo>)
|
||||
constexpr auto enum_desc(Meta::Type<AutoInfo>)
|
||||
{
|
||||
return { {
|
||||
return make_array<EnumDesc<AutoInfo>>({
|
||||
{ AutoInfo::Command, "command"},
|
||||
{ AutoInfo::OnKey, "onkey"},
|
||||
{ AutoInfo::Normal, "normal" }
|
||||
} };
|
||||
});
|
||||
}
|
||||
|
||||
bool show_auto_info_ifn(StringView title, StringView info, AutoInfo mask, const Context& context);
|
||||
|
|
16
src/meta.hh
16
src/meta.hh
|
@ -1,6 +1,8 @@
|
|||
#ifndef meta_hh_INCLUDED
|
||||
#define meta_hh_INCLUDED
|
||||
|
||||
#include <utility>
|
||||
|
||||
namespace Kakoune
|
||||
{
|
||||
inline namespace Meta
|
||||
|
@ -22,6 +24,20 @@ struct Array
|
|||
T m_data[N];
|
||||
};
|
||||
|
||||
template<typename T, size_t N, size_t... Indices>
|
||||
constexpr Array<T, N> make_array(T (&&data)[N], std::index_sequence<Indices...>)
|
||||
{
|
||||
static_assert(sizeof...(Indices) == N, "size mismatch");
|
||||
return {{data[Indices]...}};
|
||||
}
|
||||
|
||||
template<typename T, size_t N>
|
||||
constexpr Array<T, N> make_array(T (&&data)[N])
|
||||
{
|
||||
return make_array(std::forward<decltype(data)>(data),
|
||||
std::make_index_sequence<N>());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif // meta_hh_INCLUDED
|
||||
|
|
Loading…
Reference in New Issue
Block a user