Skip to content

Commit

Permalink
LibIPC: Add support for 64-bit size_t in IEncoder
Browse files Browse the repository at this point in the history
  • Loading branch information
jcs authored and awesomekling committed Feb 5, 2020
1 parent f6a8b1b commit b5fc1fc
Showing 1 changed file with 43 additions and 2 deletions.
45 changes: 43 additions & 2 deletions Libraries/LibIPC/IEncoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,20 @@ class IEncoder {
return *this;
}

IEncoder& operator<<(u64 value)
{
m_buffer.ensure_capacity(m_buffer.size() + 8);
m_buffer.unchecked_append((u8)value);
m_buffer.unchecked_append((u8)(value >> 8));
m_buffer.unchecked_append((u8)(value >> 16));
m_buffer.unchecked_append((u8)(value >> 24));
m_buffer.unchecked_append((u8)(value >> 32));
m_buffer.unchecked_append((u8)(value >> 40));
m_buffer.unchecked_append((u8)(value >> 48));
m_buffer.unchecked_append((u8)(value >> 56));
return *this;
}

IEncoder& operator<<(i8 value)
{
m_buffer.append((u8)value);
Expand All @@ -88,10 +102,37 @@ class IEncoder {
return *this;
}

#ifdef __serenity__
IEncoder& operator<<(i64 value)
{
m_buffer.ensure_capacity(m_buffer.size() + 8);
m_buffer.unchecked_append((u8)value);
m_buffer.unchecked_append((u8)(value >> 8));
m_buffer.unchecked_append((u8)(value >> 16));
m_buffer.unchecked_append((u8)(value >> 24));
m_buffer.unchecked_append((u8)(value >> 32));
m_buffer.unchecked_append((u8)(value >> 40));
m_buffer.unchecked_append((u8)(value >> 48));
m_buffer.unchecked_append((u8)(value >> 56));
return *this;
}

IEncoder& operator<<(size_t value)
{
return *this << (u32)value;
if constexpr(sizeof(size_t) == 4)
return *this << (u32)value;
else if constexpr(sizeof(size_t) == 8)
return *this << (u64)value;
ASSERT_NOT_REACHED();
}

#ifndef __i386__
IEncoder& operator<<(ssize_t value)
{
if constexpr(sizeof(ssize_t) == 4)
return *this << (i32)value;
else if constexpr(sizeof(ssize_t) == 8)
return *this << (i64)value;
ASSERT_NOT_REACHED();
}
#endif

Expand Down

0 comments on commit b5fc1fc

Please sign in to comment.