1 #ifndef ZSERIO_BIT_STREAM_READER_H_INC
2 #define ZSERIO_BIT_STREAM_READER_H_INC
43 operator size_t()
const
112 const uint8_t* buffer,
size_t bufferByteSize,
ArrayPreallocation maxArrayPrealloc = {});
130 Span<const uint8_t> buffer,
size_t bufferBitSize, ArrayPreallocation maxArrayPrealloc = {});
140 const uint8_t* buffer,
size_t bufferBitSize, BitsTag, ArrayPreallocation maxArrayPrealloc = {});
148 template <
typename ALLOC>
285 template <
typename ALLOC = std::allocator<u
int8_t>>
288 const size_t len =
static_cast<size_t>(
readVarSize());
294 if ((beginBitPosition & 0x07U) != 0)
299 for (
size_t i = 0; i < len; ++i)
301 value.push_back(readByte());
321 template <
typename ALLOC = std::allocator<
char>>
324 const size_t len =
static_cast<size_t>(
readVarSize());
330 if ((beginBitPosition & 0x07U) != 0)
335 for (
size_t i = 0; i < len; ++i)
337 using char_traits = std::char_traits<char>;
338 const char readCharacter =
339 char_traits::to_char_type(
static_cast<char_traits::int_type
>(readByte()));
340 value.push_back(readCharacter);
367 template <
typename ALLOC = std::allocator<u
int8_t>>
370 const size_t bitSize =
static_cast<size_t>(
readVarSize());
377 const size_t numBytesToRead = bitSize / 8;
378 const uint8_t numRestBits =
static_cast<uint8_t
>(bitSize - numBytesToRead * 8);
382 if ((beginBitPosition & 0x07U) != 0)
387 *it =
static_cast<uint8_t
>(
readBits(8));
395 (void)std::copy(sourceIt, sourceIt + numBytesToRead, buffer.
begin());
400 *itEnd =
static_cast<uint8_t
>(
readBits(numRestBits) << (8U - numRestBits));
428 void alignTo(
size_t alignment);
453 ReaderContext m_context;
static constexpr size_t MAX_INITIAL_ARRAY_ALLOCATION
ArrayPreallocation(size_t alloc)
Span< const uint8_t > getData() const
size_t getBitSize() const
void setBitPosition(BitPosType position)
void alignTo(size_t alignment)
uint64_t readBits64(uint8_t numBits=64)
size_t getMaxArrayPreallocation() const
uint32_t readBits(uint8_t numBits=32)
BasicBitBuffer< RebindAlloc< ALLOC, uint8_t > > readBitBuffer(const ALLOC &allocator=ALLOC())
BitStreamReader(const BasicBitBuffer< ALLOC > &bitBuffer, ArrayPreallocation maxArrayPrealloc={})
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(const uint8_t *buffer, size_t bufferByteSize, ArrayPreallocation maxArrayPrealloc={})
~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, size_t maxArrayPrealloc)
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
const size_t maxArrayPreallocation