Enums
RTTR allows also to register enumerated constants (enums). Therefore use the function registration::enumeration().
It has following synopsis:
template<typename Enum_Type>
registration rttr::registration::enumeration( string_view name );
static bind< detail::enum_, detail::invalid_type, Enum_Type > enumeration(string_view name)
Register a global enumeration of type Enum_Type.
name
the declared name of this enum
#include <rttr/registration>
using namespace rttr;
enum class E_Alignment
{
AlignLeft = 0x0001,
AlignRight = 0x0002,
AlignHCenter = 0x0004,
AlignJustify = 0x0008
};
{
registration::enumeration<E_Alignment>("E_Alignment")
(
value("AlignLeft", E_Alignment::AlignLeft),
value("AlignRight", E_Alignment::AlignRight),
value("AlignHCenter", E_Alignment::AlignHCenter),
value("AlignJustify", E_Alignment::AlignJustify)
);
}
The array_range class provides a view into an underlying data structure with lower and upper limits.
Definition array_range.h:64
Definition access_levels.h:34
#define RTTR_REGISTRATION
Use this macro to automatically register your reflection information to RTTR before main is called.
Definition registration.h:745
In order to add the individual enumerators you have to use the ()
operator of the returned bind object. Then you call for every enumerator you want to add, the function value().
It has following synopsis:
template<typename Enum_Type>
The name is a string_view
and the value is the enum value.
The class enumeration contains several meta information about an enum with conversion functions between the value representation and its literal representation.
How to use the enumeration class shows following example:
using namespace rttr;
type enum_type = type::get_by_name("E_Alignment");
if (enum_type && enum_type.is_enumeration())
{
std::string name = enum_align.value_to_name(E_Alignment::AlignHCenter);
std::cout << name; // prints "AlignHCenter"
}
The enumeration class provides several meta information about an enum.
Definition enumeration.h:113
bool is_enumeration() const noexcept
Returns true whether the given type represents an enumeration.
enumeration get_enumeration() const noexcept
Returns the enumerator if this type is an enum type; otherwise the returned value is not valid.
The variant class allows to store data of any type and convert between these types transparently.
Definition variant.h:199
Generated on Fri Jan 26 2024 00:00:00 for rttr - 0.9.7 by doxygen.