1 #ifndef ZSERIO_BIT_STREAM_WRITER_H_INC 2 #define ZSERIO_BIT_STREAM_WRITER_H_INC 70 template <
typename ALLOC>
236 template <
typename ALLOC>
239 const size_t bitSize = bitBuffer.
getBitSize();
243 size_t numBytesToWrite = bitSize / 8;
244 const uint8_t numRestBits =
static_cast<uint8_t
>(bitSize - numBytesToWrite * 8);
247 if ((beginBitPosition & 0x07U) != 0)
251 writeUnsignedBits(*it, 8);
259 std::copy(buffer.
begin(), buffer.
begin() + numBytesToWrite,
260 m_buffer.data() + beginBitPosition / 8);
265 writeUnsignedBits(*itEnd >> (8U - numRestBits), numRestBits);
287 void alignTo(
size_t alignment);
318 void writeUnsignedBits(uint32_t data, uint8_t
numBits);
319 void writeUnsignedBits64(uint64_t data, uint8_t numBits);
320 void writeSignedVarNum(int64_t value,
size_t maxVarBytes,
size_t numVarBytes);
321 void writeUnsignedVarNum(uint64_t value,
size_t maxVarBytes,
size_t numVarBytes);
322 void writeVarNum(uint64_t value,
bool hasSign,
bool isNegative,
size_t maxVarBytes,
size_t numVarBytes);
324 void checkCapacity(
size_t bitSize)
const;
325 void throwInsufficientCapacityException()
const;
329 size_t m_bufferBitSize;
334 #endif // ifndef ZSERIO_BIT_STREAM_WRITER_H_INC void writeVarInt64(int64_t data)
void alignTo(size_t alignment)
void writeVarUInt16(uint16_t data)
void writeBytes(Span< const uint8_t > data)
void writeFloat16(float data)
void writeVarUInt64(uint64_t data)
void writeVarInt16(int16_t data)
BitStreamWriter(BasicBitBuffer< ALLOC > &bitBuffer)
uint8_t numBits(uint64_t numValues)
const uint8_t * getWriteBuffer() const
BitStreamWriter(uint8_t *buffer, size_t bufferBitSize, BitsTag)
void writeFloat32(float data)
void writeBitBuffer(const BasicBitBuffer< ALLOC > &bitBuffer)
void writeVarInt(int64_t data)
void writeVarInt32(int32_t data)
void writeVarUInt32(uint32_t data)
void writeString(StringView data)
void writeVarSize(uint32_t data)
void writeSignedBits(int32_t data, uint8_t numBits=32)
uint32_t convertSizeToUInt32(size_t value)
bool hasWriteBuffer() const
Span< const uint8_t > getBuffer() const
void writeFloat64(double data)
void setBitPosition(BitPosType position)
BitPosType getBitPosition() const
void writeBits(uint32_t data, uint8_t numBits=32)
void writeVarUInt(uint64_t data)
~BitStreamWriter()=default
size_t getBitSize() const
constexpr iterator begin() const noexcept
void writeBool(bool data)
CppRuntimeException & operator=(const CppRuntimeException &other)=default
Span< const uint8_t > getData() const
void writeSignedBits64(int64_t data, uint8_t numBits=64)
CppRuntimeException(const char *message="")
size_t getBufferBitSize() const
void writeBits64(uint64_t data, uint8_t numBits=64)