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