MCPcopy Create free account
hub / github.com/Neargye/magic_enum / main

Function main

example/enum_flag_example.cpp:36–108  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34};
35
36int main() {
37 // Enum-flags variable to string name.
38 AnimalFlags f1 = AnimalFlags::Endangered;
39 auto f1_name = magic_enum::enum_name(f1);
40 std::cout << f1_name << std::endl; // Endangered
41
42 // String enum-flags name sequence.
43 constexpr auto names = magic_enum::enum_names<AnimalFlags>();
44 std::cout << "AnimalFlags names:";
45 for (const auto& n : names) {
46 std::cout << " " << n;
47 }
48 std::cout << std::endl;
49 // AnimalFlags names: HasClaws CanFly EatsFish Endangered
50
51 // String name to enum-flags value.
52 auto f2 = magic_enum::enum_flags_cast<AnimalFlags>("EatsFish|CanFly");
53 if (f2.has_value()) {
54 std::cout << "EatsFish|CanFly = " << magic_enum::enum_integer(f2.value()) << std::endl; // CanFly|EatsFish = 1074790400
55 }
56
57 // String name to enum-flags value with custom separator.
58 auto f2_custom = magic_enum::enum_flags_cast<AnimalFlags>("EatsFish,CanFly", ',');
59 if (f2_custom.has_value()) {
60 // Custom separator for enum-flags name.
61 std::cout << magic_enum::enum_flags_name(f2_custom.value(), ',') << " = " << magic_enum::enum_integer(f2_custom.value()) << std::endl; // CanFly,EatsFish = 1074790400
62 }
63
64 // Integer value to enum-flags value.
65 auto f3 = magic_enum::enum_cast<AnimalFlags>(1073742848);
66 if (f3.has_value()) {
67 std::cout << magic_enum::enum_flags_name(f3.value()) << " = " << magic_enum::enum_integer(f3.value()) << std::endl; // HasClaws|EatsFish = 1073742848
68 }
69
70 // Enum-flags value to integer value.
71 auto f4_integer = magic_enum::enum_integer(AnimalFlags::HasClaws);
72 std::cout << "HasClaws = " << f4_integer << std::endl; // HasClaws = 1024
73
74 using magic_enum::iostream_operators::operator<<; // out-of-the-box ostream operator for enum-flags.
75 // Ostream operator for enum-flags.
76 std::cout << f1 << " " << f2 << " " << f3 << std::endl; // Endangered CanFly|EatsFish HasClaws|EatsFish
77
78 // Number of enum-flags values.
79 std::cout << "AnimalFlags enum size: " << magic_enum::enum_count<AnimalFlags>() << std::endl; // AnimalFlags enum size: 4
80
81 // Indexed access to enum-flags value.
82 std::cout << "AnimalFlags[0] = " << magic_enum::enum_value<AnimalFlags>(0) << std::endl; // AnimalFlags[0] = HasClaws
83
84 // Enum-flags value sequence.
85 constexpr auto values = magic_enum::enum_values<AnimalFlags>();
86 std::cout << "AnimalFlags values:";
87 for (const auto f : values) {
88 std::cout << " " << f; // Ostream operator for enum-flags.
89 }
90 std::cout << std::endl;
91 // AnimalFlags values: HasClaws CanFly EatsFish Endangered
92
93 using namespace magic_enum::bitwise_operators; // out-of-the-box bitwise operators for all enums.

Callers

nothing calls this directly

Calls 5

enum_nameFunction · 0.85
enum_integerFunction · 0.85
enum_flags_nameFunction · 0.85
has_valueMethod · 0.80
valueMethod · 0.45

Tested by

no test coverage detected