| 631 | inline void ImBitArrayClearBit(ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); arr[n >> 5] &= ~mask; } |
| 632 | inline void ImBitArraySetBit(ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); arr[n >> 5] |= mask; } |
| 633 | inline void ImBitArraySetBitRange(ImU32* arr, int n, int n2) // Works on range [n..n2) |
| 634 | { |
| 635 | n2--; |
| 636 | while (n <= n2) |
| 637 | { |
| 638 | int a_mod = (n & 31); |
| 639 | int b_mod = (n2 > (n | 31) ? 31 : (n2 & 31)) + 1; |
| 640 | ImU32 mask = (ImU32)(((ImU64)1 << b_mod) - 1) & ~(ImU32)(((ImU64)1 << a_mod) - 1); |
| 641 | arr[n >> 5] |= mask; |
| 642 | n = (n + 32) & ~31; |
| 643 | } |
| 644 | } |
| 645 | |
| 646 | typedef ImU32* ImBitArrayPtr; // Name for use in structs |
| 647 |
no outgoing calls
no test coverage detected