MCPcopy Create free account
hub / github.com/Aegel5/SimpleSwitcher / ImBitArraySetBitRange

Function ImBitArraySetBitRange

imgui_tiny_app/imgui/imgui_internal.h:637–648  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

635inline void ImBitArrayClearBit(ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); arr[n >> 5] &= ~mask; }
636inline void ImBitArraySetBit(ImU32* arr, int n) { ImU32 mask = (ImU32)1 << (n & 31); arr[n >> 5] |= mask; }
637inline 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
650typedef ImU32* ImBitArrayPtr; // Name for use in structs
651

Callers 2

SetBitRangeMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected