| 526 | inline void ImBitArrayClearBit(ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); arr[n >> 5] &= ~mask; } |
| 527 | inline void ImBitArraySetBit(ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); arr[n >> 5] |= mask; } |
| 528 | inline void ImBitArraySetBitRange(ImU32* arr, int n, int n2) // Works on range [n..n2) |
| 529 | { |
| 530 | n2--; |
| 531 | while (n <= n2) |
| 532 | { |
| 533 | int a_mod = (n & 31); |
| 534 | int b_mod = (n2 > (n | 31) ? 31 : (n2 & 31)) + 1; |
| 535 | ImU32 mask = (ImU32)(((ImU64)1 << b_mod) - 1) & ~(ImU32)(((ImU64)1 << a_mod) - 1); |
| 536 | arr[n >> 5] |= mask; |
| 537 | n = (n + 32) & ~31; |
| 538 | } |
| 539 | } |
| 540 | |
| 541 | // Helper: ImBitArray class (wrapper over ImBitArray functions) |
| 542 | // Store 1-bit per value. |