21 ranges.prefix.size());
22 first_int |= first_int_mask;
33 last_int |= last_int_mask;
46 ranges.prefix.size());
47 first_int &= ~first_int_mask;
52 constexpr BitInt fill_value = 0;
58 last_int &= ~last_int_mask;
88 stream <<
"(Size: " << span.
size() <<
", ";
89 for (
const BitRef bit : span) {
constexpr int64_t one_after_last() const
constexpr bool is_empty() const
constexpr int64_t start() const
void copy_from(const BitSpan other)
void copy_from(const BitSpan other)
static constexpr BitInt BitIndexMask
static constexpr int64_t BitsPerInt
BitInt * int_containing_bit(BitInt *data, const int64_t bit_index)
std::ostream & operator<<(std::ostream &stream, const BitRef &bit)
void copy_from_or(FirstBitSpanT &first_arg, const BitSpanT &...args)
BitInt mask_first_n_bits(const int64_t n)
BitInt mask_range_bits(const int64_t start, const int64_t size)
AlignedIndexRanges split_index_range_by_alignment(const IndexRange range, const int64_t alignment)
void initialized_fill_n(T *dst, int64_t n, const T &value)