Skip to content

ludus::foundation::core::StaticBitSet

Ludus Wiki · API overview · Browse API

Class

Fixed-size set of BitCount bits, indexed 0 to BitCount - 1, packed into uint64 words.
Default construction resets every bit. Index arguments are caller preconditions, asserted in checked builds. Bit i lives in word i / 64 at bit position i % 64; that layout is visible through GetWords() but is not a wire format.

Note

A value type with no allocation. Synchronize concurrent mutation externally.

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

#include <ludus/foundation/containers/static_bit_set.hpp>
template <usize BitCount>
class ludus::foundation::core::StaticBitSet

Static fields

BITS_PER_WORD

static constexpr usize ludus::foundation::core::StaticBitSet< BitCount >::BITS_PER_WORD = 64
Bits stored per word.

Related types: usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

WORD_COUNT

static constexpr usize ludus::foundation::core::StaticBitSet< BitCount >::WORD_COUNT = (BitCount + BITS_PER_WORD - 1) / BITS_PER_WORD
Number of words holding the bits; 0 when BitCount is 0.

Related types: usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

Methods

StaticBitSet

constexpr ludus::foundation::core::StaticBitSet< BitCount >::StaticBitSet() noexcept=default
Every bit reset.

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

IsSet

LUDUS_INLINE constexpr bool ludus::foundation::core::StaticBitSet< BitCount >::IsSet(usize index) const noexcept
True when bit index is set.

Precondition

index < GetSize().

Related types: usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

Set

LUDUS_INLINE constexpr void ludus::foundation::core::StaticBitSet< BitCount >::Set(usize index) noexcept
Set bit index.

Precondition

index < GetSize().

Related types: usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

Reset

LUDUS_INLINE constexpr void ludus::foundation::core::StaticBitSet< BitCount >::Reset(usize index) noexcept
Reset bit index.

Precondition

index < GetSize().

Related types: usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

Assign

LUDUS_INLINE constexpr void ludus::foundation::core::StaticBitSet< BitCount >::Assign(usize index, bool isSet) noexcept
Set bit index when isSet is true, otherwise reset it.

Precondition

index < GetSize().

Related types: usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

Flip

LUDUS_INLINE constexpr void ludus::foundation::core::StaticBitSet< BitCount >::Flip(usize index) noexcept
Invert bit index.

Precondition

index < GetSize().

Related types: usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

SetAll

constexpr void ludus::foundation::core::StaticBitSet< BitCount >::SetAll() noexcept
Set every bit; tail bits past BitCount stay zero.

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

ResetAll

constexpr void ludus::foundation::core::StaticBitSet< BitCount >::ResetAll() noexcept
Reset every bit.

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

FlipAll

constexpr void ludus::foundation::core::StaticBitSet< BitCount >::FlipAll() noexcept
Invert every bit; tail bits past BitCount stay zero.

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

CountSet

constexpr usize ludus::foundation::core::StaticBitSet< BitCount >::CountSet() const noexcept
Number of set bits.

Related types: usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

IsAnySet

constexpr bool ludus::foundation::core::StaticBitSet< BitCount >::IsAnySet() const noexcept
True when at least one bit is set.

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

IsNoneSet

constexpr bool ludus::foundation::core::StaticBitSet< BitCount >::IsNoneSet() const noexcept
True when no bit is set. Always true when BitCount is 0.

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

AreAllSet

constexpr bool ludus::foundation::core::StaticBitSet< BitCount >::AreAllSet() const noexcept
True when every bit is set. Always true when BitCount is 0.

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

FindNextSet

constexpr usize ludus::foundation::core::StaticBitSet< BitCount >::FindNextSet(usize first) const noexcept
Index of the first set bit at or after first, or GetSize() when there is none.
Visits whole words, so iterating every set bit with repeated calls costs O(GetSize() / 64 + set bits). first may equal or exceed GetSize(), which returns GetSize().

Related types: usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

GetWords

constexpr std::span< const uint64 > ludus::foundation::core::StaticBitSet< BitCount >::GetWords() const noexcept
Read-only words, least significant bit of word 0 first. Tail bits past BitCount are zero.

Related types: uint64

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

operator&=

constexpr StaticBitSet & ludus::foundation::core::StaticBitSet< BitCount >::operator&=(const StaticBitSet &other) noexcept
Keep only bits also set in other.

Related types: StaticBitSet

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

operator|=

constexpr StaticBitSet & ludus::foundation::core::StaticBitSet< BitCount >::operator|=(const StaticBitSet &other) noexcept
Add every bit set in other.

Related types: StaticBitSet

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

operator^=

constexpr StaticBitSet & ludus::foundation::core::StaticBitSet< BitCount >::operator^=(const StaticBitSet &other) noexcept
Invert every bit that is set in other.

Related types: StaticBitSet

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

operator\<\<=

constexpr StaticBitSet & ludus::foundation::core::StaticBitSet< BitCount >::operator<<=(usize count) noexcept
Move every bit count positions toward higher indices; bits shifted past the end are discarded.
Vacated low bits are reset. A count of GetSize() or more resets every bit.

Related types: StaticBitSet · usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

operator>>=

constexpr StaticBitSet & ludus::foundation::core::StaticBitSet< BitCount >::operator>>=(usize count) noexcept
Move every bit count positions toward lower indices; bits shifted below 0 are discarded.
Vacated high bits are reset. A count of GetSize() or more resets every bit.

Related types: StaticBitSet · usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

Static methods

GetSize

static LUDUS_INLINE constexpr usize ludus::foundation::core::StaticBitSet< BitCount >::GetSize() noexcept
Number of bits; always BitCount.

Related types: usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

Members

operator&

constexpr StaticBitSet operator&(StaticBitSet left, const StaticBitSet &right) noexcept
Bits set in both operands.

Related types: StaticBitSet

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

operator|

constexpr StaticBitSet operator|(StaticBitSet left, const StaticBitSet &right) noexcept
Bits set in either operand.

Related types: StaticBitSet

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

operator^

constexpr StaticBitSet operator^(StaticBitSet left, const StaticBitSet &right) noexcept
Bits set in exactly one operand.

Related types: StaticBitSet

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

operator~

constexpr StaticBitSet operator~(StaticBitSet value) noexcept
Complement within GetSize() bits.

Related types: StaticBitSet

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

operator\<\<

constexpr StaticBitSet operator<<(StaticBitSet value, usize count) noexcept
Copy shifted toward higher indices; see operator<<=.

Related types: StaticBitSet · usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

operator>>

constexpr StaticBitSet operator>>(StaticBitSet value, usize count) noexcept
Copy shifted toward lower indices; see operator>>=.

Related types: StaticBitSet · usize

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp

operator==

constexpr bool operator==(const StaticBitSet &left, const StaticBitSet &right) noexcept
True when the same bits are set.

Related types: StaticBitSet

Declared in modules/foundation/containers/include/ludus/foundation/containers/static_bit_set.hpp