Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. #include <rttr/registration>
  2. #include <iostream>
  3.  
  4. enum class TestEnum { First = 1, Second = 2 };
  5.  
  6. RTTR_REGISTRATION
  7. {
  8. using namespace rttr;
  9. registration::enumeration<TestEnum>("TestEnum")
  10. (
  11. value("First", TestEnum::First),
  12. value("Second", TestEnum::Second)
  13. );
  14. }
  15.  
  16. int main(int /*argc*/, char** /*argv*/)
  17. {
  18. //print booleans as text
  19. std::cerr << std::boolalpha;
  20.  
  21. //check if we can get the type
  22. rttr::type type = rttr::type::get<TestEnum>();
  23. std::cerr << "type is valid: " << type.is_valid() << "\n";
  24. std::cerr << "type is enum: " << type.is_enumeration() << "\n";
  25. std::cerr << "\n";
  26.  
  27. //check if we can get the enumeration
  28. rttr::enumeration enumeration = type.get_enumeration();
  29. std::cerr << "enum is valid: " << enumeration.is_valid() << "\n";
  30. std::cerr << "enum name: " << enumeration.get_name() << "\n";
  31. std::cerr << "\n";
  32.  
  33. //print enumeration names
  34. std::cerr << "enum names:\n";
  35. for (const auto& name : enumeration.get_names())
  36. std::cerr << name << "\n";
  37. std::cerr << "\n";
  38.  
  39. //get an enumeration value as a variant
  40. rttr::variant value = enumeration.name_to_value("Second");
  41. std::cerr << "value is valid: " << value.is_valid() << "\n";
  42. std::cerr << "value type: " << value.get_type().get_name() << "\n";
  43. std::cerr << "value as int: " << value.to_int() << "\n";
  44. std::cerr << "\n";
  45.  
  46. //convert the variant (TODO this does not work)
  47. bool convertedOk;
  48. TestEnum converted = value.convert<TestEnum>(&convertedOk);
  49. std::cerr << "converted ok: " << convertedOk << "\n";
  50. std::cerr << "converted is first: " << (converted == TestEnum::First) << "\n";
  51. std::cerr << "converted is second: " << (converted == TestEnum::Second) << "\n";
  52. std::cerr << "converted as int: " << static_cast<int>(converted) << "\n";
  53. std::cerr << "\n";
  54.  
  55. //extract the value from the variant (TODO however, this works)
  56. TestEnum extracted = value.get_value<TestEnum>();
  57. std::cerr << "extracted is first: " << (extracted == TestEnum::First) << "\n";
  58. std::cerr << "extracted is second: " << (extracted == TestEnum::Second) << "\n";
  59. std::cerr << "extracted as int: " << static_cast<int>(extracted) << "\n";
  60. std::cerr << "\n";
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement