mirror of
https://github.com/zeldaret/ss
synced 2026-05-24 15:20:58 -04:00
dc221b4795
* 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
68 lines
1.2 KiB
C++
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
|