From 5b177db5515fba44f9f38824d3e4e5b6ce17b63a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Mon, 19 Aug 2024 23:50:21 +0300 Subject: [PATCH] Remove the decode functions from SawyerChunkReader.h, re-order in cpp --- src/openrct2/rct12/SawyerChunkReader.cpp | 68 ++++++++++++------------ src/openrct2/rct12/SawyerChunkReader.h | 7 --- 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/src/openrct2/rct12/SawyerChunkReader.cpp b/src/openrct2/rct12/SawyerChunkReader.cpp index d654ea5777..9946b23765 100644 --- a/src/openrct2/rct12/SawyerChunkReader.cpp +++ b/src/openrct2/rct12/SawyerChunkReader.cpp @@ -33,6 +33,8 @@ constexpr const char* EXCEPTION_MSG_DESTINATION_TOO_SMALL = "Chunk data larger t constexpr const char* EXCEPTION_MSG_INVALID_CHUNK_ENCODING = "Invalid chunk encoding."; constexpr const char* EXCEPTION_MSG_ZERO_SIZED_CHUNK = "Encountered zero-sized chunk."; +static std::vector DecodeChunk(const void* src, const SawyerCodingChunkHeader& header); + SawyerChunkReader::SawyerChunkReader(OpenRCT2::IStream* stream) : _stream(stream) { @@ -151,37 +153,7 @@ void SawyerChunkReader::ReadChunk(void* dst, size_t length) } } -std::vector SawyerChunkReader::DecodeChunk(const void* src, const SawyerCodingChunkHeader& header) -{ - std::vector buf; - switch (header.encoding) - { - case CHUNK_ENCODING_NONE: - buf.resize(header.length); - std::memcpy(buf.data(), src, header.length); - break; - case CHUNK_ENCODING_RLE: - buf = DecodeChunkRLE(src, header.length); - break; - case CHUNK_ENCODING_RLECOMPRESSED: - buf = DecodeChunkRLERepeat(src, header.length); - break; - case CHUNK_ENCODING_ROTATE: - buf = DecodeChunkRotate(src, header.length); - break; - default: - throw SawyerChunkException(EXCEPTION_MSG_INVALID_CHUNK_ENCODING); - } - return buf; -} - -std::vector SawyerChunkReader::DecodeChunkRLERepeat(const void* src, size_t srcLength) -{ - auto tempBuf = DecodeChunkRLE(src, srcLength); - return DecodeChunkRepeat(tempBuf.data(), tempBuf.size()); -} - -std::vector SawyerChunkReader::DecodeChunkRLE(const void* src, size_t srcLength) +static std::vector DecodeChunkRLE(const void* src, size_t srcLength) { std::vector buf; buf.reserve(srcLength); @@ -233,7 +205,7 @@ std::vector SawyerChunkReader::DecodeChunkRLE(const void* src, size_t s return buf; } -std::vector SawyerChunkReader::DecodeChunkRepeat(const void* src, size_t srcLength) +static std::vector DecodeChunkRepeat(const void* src, size_t srcLength) { std::vector buf; buf.reserve(srcLength); @@ -271,7 +243,13 @@ std::vector SawyerChunkReader::DecodeChunkRepeat(const void* src, size_ return buf; } -std::vector SawyerChunkReader::DecodeChunkRotate(const void* src, size_t srcLength) +static std::vector DecodeChunkRLERepeat(const void* src, size_t srcLength) +{ + auto tempBuf = DecodeChunkRLE(src, srcLength); + return DecodeChunkRepeat(tempBuf.data(), tempBuf.size()); +} + +static std::vector DecodeChunkRotate(const void* src, size_t srcLength) { std::vector buf; buf.reserve(srcLength); @@ -287,3 +265,27 @@ std::vector SawyerChunkReader::DecodeChunkRotate(const void* src, size_ return buf; } + +static std::vector DecodeChunk(const void* src, const SawyerCodingChunkHeader& header) +{ + std::vector buf; + switch (header.encoding) + { + case CHUNK_ENCODING_NONE: + buf.resize(header.length); + std::memcpy(buf.data(), src, header.length); + break; + case CHUNK_ENCODING_RLE: + buf = DecodeChunkRLE(src, header.length); + break; + case CHUNK_ENCODING_RLECOMPRESSED: + buf = DecodeChunkRLERepeat(src, header.length); + break; + case CHUNK_ENCODING_ROTATE: + buf = DecodeChunkRotate(src, header.length); + break; + default: + throw SawyerChunkException(EXCEPTION_MSG_INVALID_CHUNK_ENCODING); + } + return buf; +} diff --git a/src/openrct2/rct12/SawyerChunkReader.h b/src/openrct2/rct12/SawyerChunkReader.h index cb878e5b3c..d17470ae0e 100644 --- a/src/openrct2/rct12/SawyerChunkReader.h +++ b/src/openrct2/rct12/SawyerChunkReader.h @@ -85,11 +85,4 @@ public: ReadChunk(&result, sizeof(result)); return result; } - -private: - static std::vector DecodeChunk(const void* src, const SawyerCodingChunkHeader& header); - static std::vector DecodeChunkRLERepeat(const void* src, size_t srcLength); - static std::vector DecodeChunkRLE(const void* src, size_t srcLength); - static std::vector DecodeChunkRepeat(const void* src, size_t srcLength); - static std::vector DecodeChunkRotate(const void* src, size_t srcLength); };