forked from Alepha/Alepha
Access the enumerates as constexpr string array
This commit is contained in:
24
Enum.h
24
Enum.h
@ -120,7 +120,31 @@ namespace Alepha::Hydrogen ::detail:: Enum_m
|
|||||||
|
|
||||||
StrictInteger value= static_cast< StrictInteger >( 0 );
|
StrictInteger value= static_cast< StrictInteger >( 0 );
|
||||||
|
|
||||||
|
struct StringArray
|
||||||
|
{
|
||||||
|
static constexpr std::size_t size() noexcept { return sizeof...( values ); }
|
||||||
|
|
||||||
|
static constexpr const ConstexprString array[ StringArray::size() ]= { ( values.cs_string() )... };
|
||||||
|
|
||||||
|
constexpr const ConstexprString &
|
||||||
|
operator[] ( const std::size_t sz ) const
|
||||||
|
{
|
||||||
|
return array[ sz ];
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr const ConstexprString *begin() const { return array; }
|
||||||
|
constexpr const ConstexprString *end() const { return &array[ size() ]; }
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static constexpr StringArray keys() { return {}; }
|
||||||
|
|
||||||
|
constexpr const ConstexprString &
|
||||||
|
key() const
|
||||||
|
{
|
||||||
|
return keys()[ static_cast< std::size_t >( value ) ];
|
||||||
|
}
|
||||||
|
|
||||||
static constexpr std::string name() { return buildAllNames( { ( values.cs_string() )... } ); }
|
static constexpr std::string name() { return buildAllNames( { ( values.cs_string() )... } ); }
|
||||||
|
|
||||||
static constexpr bool accepts( const std::string &s ) { return ( ... || ( values.cs_string().c_str() == s ) ); }
|
static constexpr bool accepts( const std::string &s ) { return ( ... || ( values.cs_string().c_str() == s ) ); }
|
||||||
|
Reference in New Issue
Block a user