3 #include "fly/types/bit_stream/detail/concepts.hpp"
4 #include "fly/types/bit_stream/types.hpp"
9 namespace fly::detail {
48 BitStream(std::streambuf *stream_buffer, byte_type starting_position) noexcept;
60 template <detail::BitStreamInteger DataType>
61 DataType
bit_mask(
const DataType bits);
63 std::streambuf *m_stream_buffer;
65 buffer_type m_buffer {0};
66 byte_type m_position {0};
70 template <detail::BitStreamInteger DataType>
73 static constexpr
auto s_filled = std::numeric_limits<DataType>::max();
74 static constexpr
auto s_digits = std::numeric_limits<DataType>::digits;
76 return (bits == 0) ? 0 : s_filled >> (s_digits - bits);
Definition: bit_stream.hpp:34
DataType bit_mask(const DataType bits)
Definition: bit_stream.hpp:71
BitStream(std::streambuf *stream_buffer, byte_type starting_position) noexcept
Definition: bit_stream.cpp:6