1 #ifndef ZSERIO_BIT_STREAM_READER_H_INC
2 #define ZSERIO_BIT_STREAM_READER_H_INC
103 template <
typename ALLOC>
240 template <
typename ALLOC = std::allocator<u
int8_t>>
243 const size_t len =
static_cast<size_t>(
readVarSize());
245 if ((beginBitPosition & 0x07U) != 0)
250 for (
size_t i = 0; i < len; ++i)
252 value.push_back(readByte());
272 template <
typename ALLOC = std::allocator<
char>>
275 const size_t len =
static_cast<size_t>(
readVarSize());
277 if ((beginBitPosition & 0x07U) != 0)
282 for (
size_t i = 0; i < len; ++i)
284 value.push_back(
static_cast<char>(readByte()));
311 template <
typename ALLOC = std::allocator<u
int8_t>>
314 const size_t bitSize =
static_cast<size_t>(
readVarSize());
315 const size_t numBytesToRead = bitSize / 8;
316 const uint8_t numRestBits =
static_cast<uint8_t
>(bitSize - numBytesToRead * 8);
321 if ((beginBitPosition & 0x07U) != 0)
326 *it =
static_cast<uint8_t
>(
readBits(8));
334 std::copy(sourceIt, sourceIt + numBytesToRead, buffer.
begin());
339 *itEnd =
static_cast<uint8_t
>(
readBits(numRestBits) << (8U - numRestBits));
367 void alignTo(
size_t alignment);
382 ReaderContext m_context;
Span< const uint8_t > getData() const
void setBitPosition(BitPosType position)
void alignTo(size_t alignment)
uint64_t readBits64(uint8_t numBits=64)
BitStreamReader(const uint8_t *buffer, size_t bufferByteSize)
uint32_t readBits(uint8_t numBits=32)
BitStreamReader(const BasicBitBuffer< ALLOC > &bitBuffer)
BasicBitBuffer< RebindAlloc< ALLOC, uint8_t > > readBitBuffer(const ALLOC &allocator=ALLOC())
size_t getBufferBitSize() const
string< ALLOC > readString(const ALLOC &alloc=ALLOC())
vector< uint8_t, ALLOC > readBytes(const ALLOC &alloc=ALLOC())
int32_t readSignedBits(uint8_t numBits=32)
int64_t readSignedBits64(uint8_t numBits=64)
~BitStreamReader()=default
BitPosType getBitPosition() const
constexpr iterator begin() const noexcept
uint8_t numBits(uint64_t numValues)
std::basic_string< char, std::char_traits< char >, RebindAlloc< ALLOC, char > > string
std::vector< T, RebindAlloc< ALLOC, T > > vector
ReaderContext(Span< const uint8_t > readBuffer, size_t readBufferBitSize)
Span< const uint8_t > buffer
ReaderContext & operator=(const ReaderContext &&)=delete
const BitPosType bufferBitSize
ReaderContext(const ReaderContext &&)=delete
ReaderContext & operator=(const ReaderContext &)=delete
ReaderContext(const ReaderContext &)=delete