27 inline constexpr std::size_t
GetBlockIndex(std::size_t bit) {
return bit / 32u; }
42 constexpr UpdateMask(std::array<uint32, BlockCount>
const& init)
47 if ((
_blocks[block] = init[block]) != 0)
107 if constexpr (Bits % 32)
109 constexpr uint32 unused = 32 - (Bits % 32);
110 _blocks.back() &= (0xFFFFFFFF >> unused);
constexpr UpdateMask< Bits > operator|(UpdateMask< Bits > const &left, UpdateMask< Bits > const &right)
constexpr UpdateMask< Bits > operator&(UpdateMask< Bits > const &left, UpdateMask< Bits > const &right)
constexpr UpdateMask & operator|=(UpdateMask const &right)
static constexpr uint32 BlockCount
std::array< uint32, BlockCount > _blocks
static constexpr uint32 BlocksMaskCount
std::array< uint32, BlocksMaskCount > _blocksMask
constexpr UpdateMask & operator&=(UpdateMask const &right)
constexpr uint32 GetBlock(uint32 index) const
constexpr void Reset(uint32 index)
constexpr void ResetAll()
constexpr void Set(uint32 index)
constexpr bool operator[](uint32 index) const
constexpr UpdateMask(std::array< uint32, BlockCount > const &init)
constexpr uint32 GetBlocksMask(uint32 index) const
constexpr bool IsAnySet() const
constexpr std::size_t GetBlockIndex(std::size_t bit)
constexpr uint32 GetBlockFlag(std::size_t bit)