From 2daa356fbfa5e67b09c708b4d9d8cb084bbeabee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Sat, 11 Sep 2021 19:06:17 +0300 Subject: [PATCH] Move ZipStream into new header --- OpenRCT2.xcodeproj/project.pbxproj | 4 ++ src/openrct2/core/ZipStream.hpp | 86 ++++++++++++++++++++++++++++++ src/openrct2/libopenrct2.vcxproj | 3 +- src/openrct2/object/Object.cpp | 70 +----------------------- 4 files changed, 93 insertions(+), 70 deletions(-) create mode 100644 src/openrct2/core/ZipStream.hpp diff --git a/OpenRCT2.xcodeproj/project.pbxproj b/OpenRCT2.xcodeproj/project.pbxproj index f0fdda19f7..1addaf0b3a 100644 --- a/OpenRCT2.xcodeproj/project.pbxproj +++ b/OpenRCT2.xcodeproj/project.pbxproj @@ -801,6 +801,7 @@ 258C212125F84FA2B4C3BCAE /* RideUseSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58DEACC694664E7C8DACB93D /* RideUseSystem.cpp */; }; E6C71B6165224F65AA87E65B /* RideUseSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DA720D496604387806AC168 /* RideUseSystem.h */; }; C8D612EB56BD4214BEC0F7FF /* GroupVector.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F4D523B8782E4C458AF1490D /* GroupVector.hpp */; }; + B2F44E535BD14A03BE8B9D14 /* ZipStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F28A181D311D4E078FDB090C /* ZipStream.hpp */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1906,6 +1907,7 @@ 58DEACC694664E7C8DACB93D /* RideUseSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RideUseSystem.cpp; path = src/openrct2/peep/RideUseSystem.cpp; sourceTree = SOURCE_ROOT; }; 2DA720D496604387806AC168 /* RideUseSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RideUseSystem.h; path = src/openrct2/peep/RideUseSystem.h; sourceTree = SOURCE_ROOT; }; F4D523B8782E4C458AF1490D /* GroupVector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = GroupVector.hpp; path = src/openrct2/core/GroupVector.hpp; sourceTree = SOURCE_ROOT; }; + F28A181D311D4E078FDB090C /* ZipStream.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ZipStream.hpp; path = src/openrct2/core/ZipStream.hpp; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -2576,6 +2578,7 @@ F76C839A1EC4E7CC00FA49E2 /* Zip.h */, BA2317BF6FB54E328DEB7055 /* EnumMap.hpp */, F4D523B8782E4C458AF1490D /* GroupVector.hpp */, + F28A181D311D4E078FDB090C /* ZipStream.hpp */, ); path = core; sourceTree = ""; @@ -3659,6 +3662,7 @@ DEC539DE402F4B8993E4C357 /* ScTileElement.hpp in Headers */, E6C71B6165224F65AA87E65B /* RideUseSystem.h in Headers */, C8D612EB56BD4214BEC0F7FF /* GroupVector.hpp in Headers */, + B2F44E535BD14A03BE8B9D14 /* ZipStream.hpp in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/src/openrct2/core/ZipStream.hpp b/src/openrct2/core/ZipStream.hpp new file mode 100644 index 0000000000..0a2ede8bad --- /dev/null +++ b/src/openrct2/core/ZipStream.hpp @@ -0,0 +1,86 @@ +/***************************************************************************** + * Copyright (c) 2014-2021 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ +#pragma once + +#include "IStream.hpp" +#include "Zip.h" + +#include + +namespace OpenRCT2 +{ + /** + * Couples a zip archive and a zip item stream to ensure the lifetime of the zip archive is maintained + * for the lifetime of the stream. + */ + class ZipStreamWrapper final : public IStream + { + private: + std::unique_ptr _zipArchive; + std::unique_ptr _base; + + public: + ZipStreamWrapper(std::unique_ptr zipArchive, std::unique_ptr base) + : _zipArchive(std::move(zipArchive)) + , _base(std::move(base)) + { + } + + bool CanRead() const override + { + return _base->CanRead(); + } + + bool CanWrite() const override + { + return _base->CanWrite(); + } + + uint64_t GetLength() const override + { + return _base->GetLength(); + } + + uint64_t GetPosition() const override + { + return _base->GetPosition(); + } + + void SetPosition(uint64_t position) override + { + _base->SetPosition(position); + } + + void Seek(int64_t offset, int32_t origin) override + { + _base->Seek(offset, origin); + } + + void Read(void* buffer, uint64_t length) override + { + _base->Read(buffer, length); + } + + void Write(const void* buffer, uint64_t length) override + { + _base->Write(buffer, length); + } + + uint64_t TryRead(void* buffer, uint64_t length) override + { + return _base->TryRead(buffer, length); + } + + const void* GetData() const override + { + return _base->GetData(); + } + }; + +} // namespace OpenRCT2 diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index f2f780a5fa..70da83f6af 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -185,6 +185,7 @@ + @@ -923,4 +924,4 @@ - + \ No newline at end of file diff --git a/src/openrct2/object/Object.cpp b/src/openrct2/object/Object.cpp index 6de569acdf..7c7fd8a417 100644 --- a/src/openrct2/object/Object.cpp +++ b/src/openrct2/object/Object.cpp @@ -14,7 +14,7 @@ #include "../core/FileStream.h" #include "../core/Memory.hpp" #include "../core/String.hpp" -#include "../core/Zip.h" +#include "../core/ZipStream.hpp" #include "../localisation/Language.h" #include "../localisation/LocalisationService.h" #include "../localisation/StringIds.h" @@ -171,74 +171,6 @@ std::optional rct_object_entry::GetSceneryType() const } } -/** - * Couples a zip archive and a zip item stream to ensure the lifetime of the zip archive is maintained - * for the lifetime of the stream. - */ -class ZipStreamWrapper final : public IStream -{ -private: - std::unique_ptr _zipArchive; - std::unique_ptr _base; - -public: - ZipStreamWrapper(std::unique_ptr zipArchive, std::unique_ptr base) - : _zipArchive(std::move(zipArchive)) - , _base(std::move(base)) - { - } - - bool CanRead() const override - { - return _base->CanRead(); - } - - bool CanWrite() const override - { - return _base->CanWrite(); - } - - uint64_t GetLength() const override - { - return _base->GetLength(); - } - - uint64_t GetPosition() const override - { - return _base->GetPosition(); - } - - void SetPosition(uint64_t position) override - { - _base->SetPosition(position); - } - - void Seek(int64_t offset, int32_t origin) override - { - _base->Seek(offset, origin); - } - - void Read(void* buffer, uint64_t length) override - { - _base->Read(buffer, length); - } - - void Write(const void* buffer, uint64_t length) override - { - _base->Write(buffer, length); - } - - uint64_t TryRead(void* buffer, uint64_t length) override - { - return _base->TryRead(buffer, length); - } - - const void* GetData() const override - { - return _base->GetData(); - } -}; - bool ObjectAsset::IsAvailable() const { if (_zipPath.empty())