blob: 3ea42beecbe30f19f92c86173691cad96511b924 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#ifndef EGG_BIT_FLAG_H
#define EGG_BIT_FLAG_H
// Pulled from ogws
#include "common.h"
namespace EGG {
template <typename T>
class TBitFlag {
public:
T value;
void makeAllZero() {
value = T();
}
TBitFlag() {}
TBitFlag(T value) : value(value) {}
T makeMask(u8 bit) const {
return 1 << bit;
}
bool on(T mask) const {
return (value & mask);
}
bool off(T mask) const {
return !(value & mask);
}
void set(T mask) {
value |= mask;
}
void reset(T mask) {
value &= ~mask;
}
bool onBit(u8 bit) const {
return on(makeMask(bit));
}
bool offBit(u8 bit) const {
return off(makeMask(bit));
}
void setBit(u8 bit) {
set(makeMask(bit));
}
void resetBit(u8 bit) {
reset(makeMask(bit));
}
void toggleBit(u8 bit) {
if (!onBit(bit)) {
setBit(bit);
} else {
resetBit(bit);
}
}
void changeBit(u8 bit, bool b) {
if (b) {
setBit(bit);
} else {
resetBit(bit);
}
}
T getDirect() const {
return value;
}
};
} // namespace EGG
#endif
|