Value: typedef ValueType value_type; \
ETL_CONSTEXPR TypeName() : value(static_cast<enum_type>(value_type())) {} \
ETL_CONSTEXPR TypeName(enum_type value_) : value(value_) {} \
ETL_CONSTEXPR explicit TypeName(value_type value_) : value(static_cast<enum_type>(value_)) {} \
ETL_CONSTEXPR operator value_type() const {return static_cast<value_type>(value);} \
ETL_CONSTEXPR value_type get_value() const {return static_cast<value_type>(value);} \
ETL_CONSTEXPR enum_type get_enum() const {return value;} \
ETL_CONSTEXPR14 const char* c_str() const \
{ \
switch (value) \
{
struct CompassDirection
{
enum enum_type
{
North = 0,
South = 180,
East = 90,
West = 270
};
ETL_ENUM_TYPE(North, "North")
ETL_ENUM_TYPE(South, "South")
ETL_ENUM_TYPE(East, "East")
ETL_ENUM_TYPE(West, "West")
ETL_END_ENUM_TYPE
};
#define ETL_DECLARE_ENUM_TYPE(TypeName, ValueType)
Definition enum_type.h:85
Using the enumeration.
CompassDirection direction;
direction = CompassDirection::North;
int value = direction;
direction = CompassDirection(value);
direction = CompassDirection(3);
direction = value;
std::cout << "Direction = " << direction.c_str();
If a conversion to a string is not required then the 'ETL_ENUM_TYPE' declaration may be omitted. In that case the c_str() function will return a "?". This will also be the case for any enumeration value that does not have an ETL_ENUM_TYPE entry.