From ddce053f6c0312782611d8a2b8aa2263d0ec6a50 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 29 Nov 2021 02:18:58 +0100 Subject: [PATCH] LibIPC: Replace u32/u64 value coders with u/ul/ull value coders We can and should do more cleanups of this kind, but this is a quick fix to unbreak the 32-bit HackStudio build. --- Userland/Libraries/LibIPC/Decoder.cpp | 10 ++++++++-- Userland/Libraries/LibIPC/Decoder.h | 5 +++-- Userland/Libraries/LibIPC/Encoder.cpp | 28 ++++++++++++++++++++++++--- Userland/Libraries/LibIPC/Encoder.h | 8 ++++++-- 4 files changed, 42 insertions(+), 9 deletions(-) diff --git a/Userland/Libraries/LibIPC/Decoder.cpp b/Userland/Libraries/LibIPC/Decoder.cpp index 977695656b..edc0ea38f3 100644 --- a/Userland/Libraries/LibIPC/Decoder.cpp +++ b/Userland/Libraries/LibIPC/Decoder.cpp @@ -37,13 +37,19 @@ ErrorOr Decoder::decode(u16& value) return m_stream.try_handle_any_error(); } -ErrorOr Decoder::decode(u32& value) +ErrorOr Decoder::decode(unsigned& value) { m_stream >> value; return m_stream.try_handle_any_error(); } -ErrorOr Decoder::decode(u64& value) +ErrorOr Decoder::decode(unsigned long& value) +{ + m_stream >> value; + return m_stream.try_handle_any_error(); +} + +ErrorOr Decoder::decode(unsigned long long& value) { m_stream >> value; return m_stream.try_handle_any_error(); diff --git a/Userland/Libraries/LibIPC/Decoder.h b/Userland/Libraries/LibIPC/Decoder.h index fee5c02a7c..c36e4a2a52 100644 --- a/Userland/Libraries/LibIPC/Decoder.h +++ b/Userland/Libraries/LibIPC/Decoder.h @@ -34,8 +34,9 @@ public: ErrorOr decode(bool&); ErrorOr decode(u8&); ErrorOr decode(u16&); - ErrorOr decode(u32&); - ErrorOr decode(u64&); + ErrorOr decode(unsigned&); + ErrorOr decode(unsigned long&); + ErrorOr decode(unsigned long long&); ErrorOr decode(i8&); ErrorOr decode(i16&); ErrorOr decode(i32&); diff --git a/Userland/Libraries/LibIPC/Encoder.cpp b/Userland/Libraries/LibIPC/Encoder.cpp index 0fcb0d9516..0958898de3 100644 --- a/Userland/Libraries/LibIPC/Encoder.cpp +++ b/Userland/Libraries/LibIPC/Encoder.cpp @@ -36,17 +36,16 @@ Encoder& Encoder::operator<<(u16 value) return *this; } -Encoder& Encoder::operator<<(u32 value) +void Encoder::encode_u32(u32 value) { m_buffer.data.ensure_capacity(m_buffer.data.size() + 4); m_buffer.data.unchecked_append((u8)value); m_buffer.data.unchecked_append((u8)(value >> 8)); m_buffer.data.unchecked_append((u8)(value >> 16)); m_buffer.data.unchecked_append((u8)(value >> 24)); - return *this; } -Encoder& Encoder::operator<<(u64 value) +void Encoder::encode_u64(u64 value) { m_buffer.data.ensure_capacity(m_buffer.data.size() + 8); m_buffer.data.unchecked_append((u8)value); @@ -57,6 +56,29 @@ Encoder& Encoder::operator<<(u64 value) m_buffer.data.unchecked_append((u8)(value >> 40)); m_buffer.data.unchecked_append((u8)(value >> 48)); m_buffer.data.unchecked_append((u8)(value >> 56)); +} + +Encoder& Encoder::operator<<(unsigned value) +{ + encode_u32(value); + return *this; +} + +Encoder& Encoder::operator<<(unsigned long value) +{ + if constexpr (sizeof(value) == 4) + encode_u32(value); + else + encode_u64(value); + return *this; +} + +Encoder& Encoder::operator<<(unsigned long long value) +{ + if constexpr (sizeof(value) == 4) + encode_u32(value); + else + encode_u64(value); return *this; } diff --git a/Userland/Libraries/LibIPC/Encoder.h b/Userland/Libraries/LibIPC/Encoder.h index 5a10b55192..8d442d7ba4 100644 --- a/Userland/Libraries/LibIPC/Encoder.h +++ b/Userland/Libraries/LibIPC/Encoder.h @@ -30,8 +30,9 @@ public: Encoder& operator<<(bool); Encoder& operator<<(u8); Encoder& operator<<(u16); - Encoder& operator<<(u32); - Encoder& operator<<(u64); + Encoder& operator<<(unsigned); + Encoder& operator<<(unsigned long); + Encoder& operator<<(unsigned long long); Encoder& operator<<(i8); Encoder& operator<<(i16); Encoder& operator<<(i32); @@ -95,6 +96,9 @@ public: } private: + void encode_u32(u32); + void encode_u64(u64); + MessageBuffer& m_buffer; };