Skip to content

Commit

Permalink
BufferStream: Add signed int overloads for read/write
Browse files Browse the repository at this point in the history
This will be required in AudioServer
  • Loading branch information
rburchell authored and awesomekling committed Jul 16, 2019
1 parent 1f77fbb commit 2c929c3
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions AK/BufferStream.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,21 @@ class BufferStream {
ASSERT(!m_read_failure);
}

BufferStream& operator<<(i8 value)
{
m_buffer[m_offset++] = value;
return *this;
}
BufferStream& operator>>(i8& value)
{
if (m_offset + sizeof(value) >= unsigned(m_buffer.size())) {
m_read_failure = true;
return *this;
}
value = m_buffer[m_offset++];
return *this;
}

BufferStream& operator<<(u8 value)
{
m_buffer[m_offset++] = value;
Expand Down Expand Up @@ -67,6 +82,26 @@ class BufferStream {
return *this;
}

BufferStream& operator<<(i16 value)
{
m_buffer[m_offset++] = value;
m_buffer[m_offset++] = (u8)(value >> 8);
return *this;
}
BufferStream& operator>>(i16& value)
{
if (m_offset + sizeof(value) >= unsigned(m_buffer.size())) {
m_read_failure = true;
return *this;
}
value = 0;
u8 b0 = m_buffer[m_offset++];
u8 b1 = m_buffer[m_offset++];
value |= (u8(b1) << 8);
value |= (u8(b0));
return *this;
}

BufferStream& operator<<(u32 value)
{
m_buffer[m_offset++] = value;
Expand All @@ -93,6 +128,32 @@ class BufferStream {
value |= (u8(b0));
return *this;
}
BufferStream& operator<<(i32 value)
{
m_buffer[m_offset++] = value;
m_buffer[m_offset++] = (u8)(value >> 8);
m_buffer[m_offset++] = (u8)(value >> 16);
m_buffer[m_offset++] = (u8)(value >> 24);
return *this;
}
BufferStream& operator>>(i32& value)
{
if (m_offset + sizeof(value) >= unsigned(m_buffer.size())) {
m_read_failure = true;
return *this;
}
u8 b0 = m_buffer[m_offset++];
u8 b1 = m_buffer[m_offset++];
u8 b2 = m_buffer[m_offset++];
u8 b3 = m_buffer[m_offset++];

value = 0;
value |= (u8(b3) << 24);
value |= (u8(b2) << 16);
value |= (u8(b1) << 8);
value |= (u8(b0));
return *this;
}

BufferStream& operator<<(const StringView& value)
{
Expand Down

0 comments on commit 2c929c3

Please sign in to comment.