xref: /llvm-project/lldb/test/API/commands/expression/bitfield_enums/main.cpp (revision dde3f17026be48c05a5d3876f12db72fdd6422ed)
1*dde3f170SDavid Spickett enum class SignedEnum : int { min = -2, max = 1 };
2*dde3f170SDavid Spickett enum class UnsignedEnum : unsigned { min = 0, max = 3 };
3*dde3f170SDavid Spickett 
4*dde3f170SDavid Spickett struct BitfieldStruct {
5*dde3f170SDavid Spickett   SignedEnum signed_min : 2;
6*dde3f170SDavid Spickett   SignedEnum signed_other : 2;
7*dde3f170SDavid Spickett   SignedEnum signed_max : 2;
8*dde3f170SDavid Spickett   UnsignedEnum unsigned_min : 2;
9*dde3f170SDavid Spickett   UnsignedEnum unsigned_other : 2;
10*dde3f170SDavid Spickett   UnsignedEnum unsigned_max : 2;
11*dde3f170SDavid Spickett };
12*dde3f170SDavid Spickett 
main()13*dde3f170SDavid Spickett int main() {
14*dde3f170SDavid Spickett   BitfieldStruct bfs;
15*dde3f170SDavid Spickett   bfs.signed_min = SignedEnum::min;
16*dde3f170SDavid Spickett   bfs.signed_other = static_cast<SignedEnum>(-1);
17*dde3f170SDavid Spickett   bfs.signed_max = SignedEnum::max;
18*dde3f170SDavid Spickett 
19*dde3f170SDavid Spickett   bfs.unsigned_min = UnsignedEnum::min;
20*dde3f170SDavid Spickett   bfs.unsigned_other = static_cast<UnsignedEnum>(1);
21*dde3f170SDavid Spickett   bfs.unsigned_max = UnsignedEnum::max;
22*dde3f170SDavid Spickett 
23*dde3f170SDavid Spickett   return 0; // break here
24*dde3f170SDavid Spickett }
25