Files
ss/include/egg/prim/eggBitFlag.h
T
Elijah Thomas dc221b4795 Misc Egg (#37)
* EGG: Archive, DvdFile, DvdRipper

* start eggStream

* FrmHeap and AssertHeap OK

* progress on EggController

* port in WPAD stuff

* update WPAD/WUD/KPAD/SC symbols

* eggController OK

* bytematch more CoreController virtual funcs

* eggDecomp/eggStreamDecomp Ok

* eggDvdRipper OK

* EGG gfx splits

* Finished Splitting EGG

* create egg Files

* eggDecomp.h -> eggStreamDecomp.h

* Revert some format changes
2024-10-01 20:24:25 -04:00

68 lines
1.2 KiB
C++

#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