|
|
template<std::ranges::contiguous_range RANGE_TYPE> |
| | ghassanpl::bit_view (RANGE_TYPE &T) -> bit_view< std::ranges::range_value_t< std::decay_t< decltype(T)> > > |
|
template<std::ranges::contiguous_range RANGE_TYPE> |
| | ghassanpl::bit_view (RANGE_TYPE const &T) -> bit_view< std::ranges::range_value_t< std::decay_t< decltype(T)> > const > |
| template<std::ranges::contiguous_range RANGE_TYPE> |
| auto | ghassanpl::make_bit_reference (RANGE_TYPE &&range, size_t bit_num) |
| template<size_t BIT_NUM, std::ranges::contiguous_range RANGE_TYPE> |
| auto | ghassanpl::make_bit_reference (RANGE_TYPE &&range) |
| template<bit_integral VALUE_TYPE> |
| auto | ghassanpl::make_bit_reference (VALUE_TYPE &value, size_t bit_num) |
| template<size_t BIT_NUM, bit_integral VALUE_TYPE> |
| auto | ghassanpl::make_bit_reference (VALUE_TYPE &value) |
| template<size_t BEGIN, size_t END, bit_integral T> |
| constexpr T | ghassanpl::extract_bits (T value) |
| | Returns just the bits between BEGIN and END in value.
|
| template<size_t... RANGES, bit_integral T> |
| constexpr auto | ghassanpl::split_bit_ranges (T value) |
| template<size_t N, bit_integral T> |
| constexpr bool | ghassanpl::bit_at (T bits) |
| template<bit_integral... BIT_TYPES> |
| constexpr auto | ghassanpl::cat_bits (BIT_TYPES... bits) |
| | Creates a new integral value by concatenating the given bit values.
|
| template<size_t... BIT_COUNT, bit_integral... BIT_TYPES> |
| constexpr auto | ghassanpl::cat_bits_n (BIT_TYPES... values) |
| | Creates a new integral value by concatenating the given bit values, each truncated to the given bit count.
|
| template<size_t N, bit_integral T> |
| constexpr T | ghassanpl::n_most_significant (T value) |
| template<size_t N, bit_integral T> |
| constexpr T | ghassanpl::n_least_significant (T value) |
| template<bit_integral T> |
| constexpr auto | ghassanpl::most_significant_half (T v) noexcept |
| | Returns an integer with the N/2 most significant bits of the given N-bit integer.
|
| template<bit_integral T> |
| constexpr auto | ghassanpl::least_significant_half (T v) noexcept |
| | Returns an integer with the N/2 least significant bits of the given N-bit integer.
|
| template<bit_integral T> |
| constexpr auto | ghassanpl::split_bits (T v) noexcept |
| | Returns a pair of integers with the N/2 most significant and least significant bits of the given N-bit integer.
|
| template<std::unsigned_integral T> |
| constexpr T | ghassanpl::bit_reverse (T x) noexcept |
| | Reverses the bits of x so that the least significant bit becomes the most significant.
|
| template<std::unsigned_integral T> |
| constexpr T | ghassanpl::bit_repeat (T x, int length) noexcept(false) |
| | Repeats a pattern stored in the least significant length bits of x, as many times as fits into x.
|
| template<std::unsigned_integral T> |
| constexpr T | ghassanpl::bit_compress (T x, T m) noexcept |
| | For each one-bit in m, the corresponding bit in x is taken and packed contiguously into the result, starting with the least significant result bit.
|
| template<std::unsigned_integral T> |
| constexpr T | ghassanpl::bit_expand (T x, T m) noexcept |
| | For each one-bit in m, a bit from x, starting with the least significant bit is taken and shifted into the corresponding position of the m bit.
|
|
| template<bit_integral B> |
| constexpr B | ghassanpl::to_big_endian (B val) noexcept |
| | Returns val in its big-endian representation.
|
| template<bit_integral B> |
| constexpr B | ghassanpl::to_little_endian (B val) noexcept |
| | Returns val in its little-endian representation.
|
| template<bit_integral B> |
| constexpr B | ghassanpl::from_big_endian (B val) noexcept |
| | Returns val (in big-endian representation) converted into native representation.
|
| template<bit_integral B> |
| constexpr B | ghassanpl::from_little_endian (B val) noexcept |
| | Returns val (in little-endian representation) converted into native representation.
|
| template<std::endian ENDIANNESS, bit_integral B> |
| constexpr B | ghassanpl::to_endian (B val) noexcept |
| | Returns val in its ENDIANNESS representation.
|
| template<bit_integral B> |
| constexpr B | ghassanpl::to_endian (B val, std::endian endianness) noexcept |
| | Returns val in its endianness representation.
|
| template<std::endian ENDIANNESS, bit_integral B> |
| constexpr B | ghassanpl::from_endian (B val) noexcept |
| | Returns val (in ENDIANNESS representation) converted into native representation.
|
| template<bit_integral B> |
| constexpr B | ghassanpl::from_endian (B val, std::endian endianness) noexcept |
| | Returns val (in endianness representation) converted into native representation.
|
Utilities to manipulate bits in integral values.
Types and functions for retrieving and manipulating bits in integral values