Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- enum Flags
- {
- f1 = 1, // 0b00000001
- f2 = 2, // 0b00000010
- f3 = 4, // 0b00000100
- f4 = 8, // 0b00001000
- f5 = 16, // 0b00010000
- f6 = 32, // 0b00100000
- f7 = 64, // 0b01000000
- f8 = 128 // 0b10000000
- };
- struct BitFlag
- {
- uint8_t flag;
- bool get(uint8_t flagP)
- {
- return (flag & flagP);
- };
- void set(uint8_t flagP, bool val)
- {
- val ? flag |= flagP : flag &= ~(flagP);
- }
- uint8_t numToFlag(uint8_t num)
- {
- return 1 << num;
- }
- void print()
- {
- for (int i{ 0 }; i < 8; ++i)
- {
- std::cout << "Flag" << i + 1 << " : " << get(numToFlag(i)) << '\n';
- }
- }
- };
- struct Features
- {
- bool f1;
- bool f2;
- bool f3;
- bool f4;
- bool f5;
- bool f6;
- bool f7;
- bool f8;
- };
- int main()
- {
- BitFlag myFlag;
- myFlag.flag = 0;
- //myFlag.flag = 0b10110101;
- //std::cout << "f6 is: " << myFlag.get(Flags::f6) << '\n'; //1
- //std::cout << "f2 is: " << myFlag.get(Flags::f2) << '\n'; //0
- //std::cout << "f3 is: " << myFlag.get(Flags::f3) << '\n'; //1
- //std::cout << '\n';
- myFlag.print();
- std::cout << '\n';
- myFlag.set(Flags::f3, true);
- myFlag.set(Flags::f3, false);
- myFlag.set(Flags::f7, false);
- myFlag.set(Flags::f1, true);
- myFlag.set(Flags::f5, true);
- myFlag.set(Flags::f3 | Flags::f2 | Flags::f6, true);
- myFlag.print();
- std::cout << '\n';
- myFlag.set(Flags::f7 | Flags::f2 | Flags::f1, false);
- myFlag.print();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement