Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <rttr/registration>
- #include <iostream>
- enum class TestEnum { First = 1, Second = 2 };
- RTTR_REGISTRATION
- {
- using namespace rttr;
- registration::enumeration<TestEnum>("TestEnum")
- (
- value("First", TestEnum::First),
- value("Second", TestEnum::Second)
- );
- }
- int main(int /*argc*/, char** /*argv*/)
- {
- //print booleans as text
- std::cerr << std::boolalpha;
- //check if we can get the type
- rttr::type type = rttr::type::get<TestEnum>();
- std::cerr << "type is valid: " << type.is_valid() << "\n";
- std::cerr << "type is enum: " << type.is_enumeration() << "\n";
- std::cerr << "\n";
- //check if we can get the enumeration
- rttr::enumeration enumeration = type.get_enumeration();
- std::cerr << "enum is valid: " << enumeration.is_valid() << "\n";
- std::cerr << "enum name: " << enumeration.get_name() << "\n";
- std::cerr << "\n";
- //print enumeration names
- std::cerr << "enum names:\n";
- for (const auto& name : enumeration.get_names())
- std::cerr << name << "\n";
- std::cerr << "\n";
- //get an enumeration value as a variant
- rttr::variant value = enumeration.name_to_value("Second");
- std::cerr << "value is valid: " << value.is_valid() << "\n";
- std::cerr << "value type: " << value.get_type().get_name() << "\n";
- std::cerr << "value as int: " << value.to_int() << "\n";
- std::cerr << "\n";
- //convert the variant (TODO this does not work)
- bool convertedOk;
- TestEnum converted = value.convert<TestEnum>(&convertedOk);
- std::cerr << "converted ok: " << convertedOk << "\n";
- std::cerr << "converted is first: " << (converted == TestEnum::First) << "\n";
- std::cerr << "converted is second: " << (converted == TestEnum::Second) << "\n";
- std::cerr << "converted as int: " << static_cast<int>(converted) << "\n";
- std::cerr << "\n";
- //extract the value from the variant (TODO however, this works)
- TestEnum extracted = value.get_value<TestEnum>();
- std::cerr << "extracted is first: " << (extracted == TestEnum::First) << "\n";
- std::cerr << "extracted is second: " << (extracted == TestEnum::Second) << "\n";
- std::cerr << "extracted as int: " << static_cast<int>(extracted) << "\n";
- std::cerr << "\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement