30 static_assert(std::is_integral<Word>::value && std::is_unsigned<Word>::value,
"Only unsigned integer value types are supported");
54 using Word =
typename std::remove_reference<decltype(*std::declval<ContainerIterator>())>::type;
106 using Word =
typename std::remove_reference<decltype(std::declval<Container>()[0])>::type;
Creates a BitView that owns its data.
Definition BitView.hpp:147
C mDataContainer
Definition BitView.hpp:149
constexpr BitContainer(const BitContainer &other) noexcept(noexcept(C(std::declval< const C & >())))
Definition BitView.hpp:153
BitContainer(Args &&... args)
Definition BitView.hpp:158
constexpr BitContainer() noexcept(noexcept(C()))
Definition BitView.hpp:152
constexpr BitContainer(BitContainer &&other) noexcept(noexcept(C(std::declval< C && >())))
Definition BitView.hpp:155
Definition BitView.hpp:52
constexpr BitReference< Word > operator*() const noexcept
Definition BitView.hpp:96
BitReference< Word > value_type
Definition BitView.hpp:61
std::random_access_iterator_tag iterator_category
Definition BitView.hpp:60
BitIterator & operator--(int) noexcept
Definition BitView.hpp:78
BitIterator operator++() noexcept
Definition BitView.hpp:73
BitIterator operator-(const int n) const noexcept
Definition BitView.hpp:90
constexpr bool operator!=(const BitIterator &other) const
Definition BitView.hpp:93
size_t difference_type
Definition BitView.hpp:62
BitIterator & operator++(int) noexcept
Definition BitView.hpp:67
BitIterator operator+(const int n) const noexcept
Definition BitView.hpp:89
size_t operator-(const BitIterator &other) const noexcept
Definition BitView.hpp:91
BitIterator operator--() noexcept
Definition BitView.hpp:84
constexpr BitIterator(ContainerIterator i, const size_t o) noexcept
Definition BitView.hpp:65
ContainerIterator mIterator
Definition BitView.hpp:56
typename std::remove_reference< decltype(*std::declval< ContainerIterator >())>::type Word
Definition BitView.hpp:54
size_t mIndex
Definition BitView.hpp:57
static constexpr auto WORD_SIZE
Definition BitView.hpp:55
constexpr bool operator==(const BitIterator &other) const
Definition BitView.hpp:94
A reference for a single bit.
Definition BitView.hpp:23
constexpr BitReference(const BitReference &) noexcept=default
constexpr BitReference(Word &v, const size_t o) noexcept
Definition BitView.hpp:29
constexpr BitReference(BitReference &&) noexcept=default
Word & value
Definition BitView.hpp:26
BitReference & operator=(const BitReference &v) noexcept
Definition BitView.hpp:42
size_t offset
Definition BitView.hpp:25
Definition BitView.hpp:101
size_t size() const noexcept(noexcept(mContainer.size()))
Returns the number of bits that fit in the container.
Definition BitView.hpp:112
constexpr auto begin() noexcept(noexcept(mContainer.begin()))
Definition BitView.hpp:133
constexpr BitReference< Word > operator[](size_t i) noexcept(noexcept(mContainer[0]))
Returns a BitReference to the bit at position i.
Definition BitView.hpp:122
constexpr auto begin() const noexcept(noexcept(mContainer.begin()))
Definition BitView.hpp:136
constexpr BitView(Container &container) noexcept
Definition BitView.hpp:109
static constexpr auto WORD_SIZE
Definition BitView.hpp:107
typename std::remove_reference< decltype(std::declval< Container >()[0])>::type Word
Definition BitView.hpp:106
void resize(size_t N, const bool v=false) noexcept(noexcept(mContainer.resize(0, 0)))
Resizes the container to hold at least N bits.
Definition BitView.hpp:116
Container & data() noexcept
Get the underlying data container.
Definition BitView.hpp:140
constexpr auto end() const noexcept(noexcept(mContainer.begin()))
Definition BitView.hpp:137
constexpr BitReference< const Word > operator[](size_t i) const noexcept(noexcept(mContainer[0]))
Returns a BitReference to the bit at position i.
Definition BitView.hpp:128
const Container & data() const noexcept
Get the underlying data container.
Definition BitView.hpp:143
Container & mContainer
Definition BitView.hpp:103
constexpr auto end() noexcept(noexcept(mContainer.begin()))
Definition BitView.hpp:134
Definition Application.hpp:19
void swap(BitReference< Word > &a, BitReference< Word > &b)
Swaps only the referenced bit.
Definition BitView.hpp:46
void copy(const A &a, B &b, T &&t=T())
Copies values from one container to another.
Definition Iterator.hpp:564
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Definition BitView.hpp:20
static constexpr size_t value
Definition BitView.hpp:20