parsi/internal/bitset.hpp
-
namespace parsi
-
namespace internal
-
template<std::size_t N>
class Bitset - #include <bitset.hpp>
Bitset provides a fast Bitset container similar to std::bitset, but constexpr friendly.
Public Functions
-
inline constexpr Bitset() noexcept
-
inline constexpr auto as_byte_span() const noexcept -> std::span<const primary_type, k_array_size>
-
inline constexpr auto test(const std::size_t index) const noexcept -> bool
test whether the bit at given index is set or not.
-
inline constexpr void set(const std::size_t index, const bool value) noexcept
set the bit value at given index.
-
template<std::size_t M>
inline constexpr auto joined(const Bitset<M> &other) const noexcept -> Bitset<std::max(N, M)>
-
inline constexpr void negate() noexcept
bit flips all the set bits to false and all the not set bits to true.
Private Types
-
using primary_type = std::size_t
Private Members
-
std::array<primary_type, k_array_size> _bytes = {0}
Private Static Attributes
-
static constexpr std::size_t k_cell_bitcount = sizeof(primary_type) * 8
-
static constexpr std::size_t k_array_size = N / k_cell_bitcount + (N % k_cell_bitcount != 0)
Friends
- template<std::size_t M> inline friend constexpr friend bool operator== (const Bitset &lhs, const Bitset< M > &rhs) noexcept
- template<std::size_t M> inline friend constexpr friend bool operator!= (const Bitset &lhs, const Bitset< M > &rhs) noexcept
-
inline constexpr Bitset() noexcept
-
template<std::size_t N>
-
namespace internal