1
0
forked from Alepha/Alepha

Access the enumerates as constexpr string array

This commit is contained in:
2024-07-13 16:37:25 -04:00
parent ad053e9175
commit 3c814a53c3

24
Enum.h
View File

@ -120,7 +120,31 @@ namespace Alepha::Hydrogen ::detail:: Enum_m
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:
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 bool accepts( const std::string &s ) { return ( ... || ( values.cs_string().c_str() == s ) ); }