|
|
@ -466,8 +466,9 @@ struct IMGUI_API ImRect
|
|
|
|
inline bool ImBitArrayTestBit(const ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); return (arr[n >> 5] & mask) != 0; }
|
|
|
|
inline bool ImBitArrayTestBit(const ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); return (arr[n >> 5] & mask) != 0; }
|
|
|
|
inline void ImBitArrayClearBit(ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); arr[n >> 5] &= ~mask; }
|
|
|
|
inline void ImBitArrayClearBit(ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); arr[n >> 5] &= ~mask; }
|
|
|
|
inline void ImBitArraySetBit(ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); arr[n >> 5] |= mask; }
|
|
|
|
inline void ImBitArraySetBit(ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); arr[n >> 5] |= mask; }
|
|
|
|
inline void ImBitArraySetBitRange(ImU32* arr, int n, int n2)
|
|
|
|
inline void ImBitArraySetBitRange(ImU32* arr, int n, int n2) // Works on range [n..n2)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
n2--;
|
|
|
|
while (n <= n2)
|
|
|
|
while (n <= n2)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int a_mod = (n & 31);
|
|
|
|
int a_mod = (n & 31);
|
|
|
@ -485,11 +486,12 @@ struct IMGUI_API ImBitArray
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ImU32 Storage[(BITCOUNT + 31) >> 5];
|
|
|
|
ImU32 Storage[(BITCOUNT + 31) >> 5];
|
|
|
|
ImBitArray() { }
|
|
|
|
ImBitArray() { }
|
|
|
|
void ClearBits() { memset(Storage, 0, sizeof(Storage)); }
|
|
|
|
void ClearAllBits() { memset(Storage, 0, sizeof(Storage)); }
|
|
|
|
|
|
|
|
void SetAllBits() { memset(Storage, 255, sizeof(Storage)); }
|
|
|
|
bool TestBit(int n) const { IM_ASSERT(n < BITCOUNT); return ImBitArrayTestBit(Storage, n); }
|
|
|
|
bool TestBit(int n) const { IM_ASSERT(n < BITCOUNT); return ImBitArrayTestBit(Storage, n); }
|
|
|
|
void SetBit(int n) { IM_ASSERT(n < BITCOUNT); ImBitArraySetBit(Storage, n); }
|
|
|
|
void SetBit(int n) { IM_ASSERT(n < BITCOUNT); ImBitArraySetBit(Storage, n); }
|
|
|
|
void ClearBit(int n) { IM_ASSERT(n < BITCOUNT); ImBitArrayClearBit(Storage, n); }
|
|
|
|
void ClearBit(int n) { IM_ASSERT(n < BITCOUNT); ImBitArrayClearBit(Storage, n); }
|
|
|
|
void SetBitRange(int n1, int n2) { ImBitArraySetBitRange(Storage, n1, n2); }
|
|
|
|
void SetBitRange(int n, int n2) { ImBitArraySetBitRange(Storage, n, n2); } // Works on range [n..n2)
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Helper: ImBitVector
|
|
|
|
// Helper: ImBitVector
|
|
|
|