From b1ffa740432f9322bf937101bbc3d0fe78876b62 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 14 Sep 2016 19:15:27 -0400 Subject: [PATCH 1/5] NANDContentLoader: Make CNANDContentData's Get function return by non-const value const specifiers like this are practically pointless and can inhibit move construction. --- Source/Core/DiscIO/NANDContentLoader.cpp | 2 +- Source/Core/DiscIO/NANDContentLoader.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Core/DiscIO/NANDContentLoader.cpp b/Source/Core/DiscIO/NANDContentLoader.cpp index 98978d98b0..6d4ec186c1 100644 --- a/Source/Core/DiscIO/NANDContentLoader.cpp +++ b/Source/Core/DiscIO/NANDContentLoader.cpp @@ -107,7 +107,7 @@ void CNANDContentDataFile::Open() { EnsureOpen(); } -const std::vector CNANDContentDataFile::Get() +std::vector CNANDContentDataFile::Get() { std::vector result; EnsureOpen(); diff --git a/Source/Core/DiscIO/NANDContentLoader.h b/Source/Core/DiscIO/NANDContentLoader.h index 71afc4ce39..2961012070 100644 --- a/Source/Core/DiscIO/NANDContentLoader.h +++ b/Source/Core/DiscIO/NANDContentLoader.h @@ -27,7 +27,7 @@ class CNANDContentData public: virtual ~CNANDContentData() = 0; virtual void Open(){}; - virtual const std::vector Get() = 0; + virtual std::vector Get() = 0; virtual bool GetRange(u32 start, u32 size, u8* buffer) = 0; virtual void Close(){}; }; @@ -38,7 +38,7 @@ public: CNANDContentDataFile(const std::string& filename) : m_filename(filename){}; void Open() override; - const std::vector Get() override; + std::vector Get() override; bool GetRange(u32 start, u32 size, u8* buffer) override; void Close() override; @@ -53,7 +53,7 @@ class CNANDContentDataBuffer final : public CNANDContentData public: CNANDContentDataBuffer(const std::vector& buffer) : m_buffer(buffer){}; - const std::vector Get() override { return m_buffer; }; + std::vector Get() override { return m_buffer; }; bool GetRange(u32 start, u32 size, u8* buffer) override; private: From 89c65be703c9ea5fc136b34f8d37286605dbc6d6 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 14 Sep 2016 19:41:38 -0400 Subject: [PATCH 2/5] NANDContentLoader: Delay vector construction until needed in Get() No need to construct the vector right off the bat. --- Source/Core/DiscIO/NANDContentLoader.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Core/DiscIO/NANDContentLoader.cpp b/Source/Core/DiscIO/NANDContentLoader.cpp index 6d4ec186c1..3f2c746bd6 100644 --- a/Source/Core/DiscIO/NANDContentLoader.cpp +++ b/Source/Core/DiscIO/NANDContentLoader.cpp @@ -109,16 +109,16 @@ void CNANDContentDataFile::Open() } std::vector CNANDContentDataFile::Get() { - std::vector result; EnsureOpen(); + if (!m_file->IsGood()) - return result; + return {}; u64 size = m_file->GetSize(); if (size == 0) - return result; + return {}; - result.resize(size); + std::vector result(size); m_file->ReadBytes(result.data(), result.size()); return result; From 3196bf53924f9945942bd8b66ed25c7a8b0a4f98 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 14 Sep 2016 19:44:41 -0400 Subject: [PATCH 3/5] NANDContentLoader: Specify constructors as explicit where applicable Prevents implicit conversion. --- Source/Core/DiscIO/NANDContentLoader.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Core/DiscIO/NANDContentLoader.h b/Source/Core/DiscIO/NANDContentLoader.h index 2961012070..7014580c7d 100644 --- a/Source/Core/DiscIO/NANDContentLoader.h +++ b/Source/Core/DiscIO/NANDContentLoader.h @@ -35,7 +35,7 @@ public: class CNANDContentDataFile final : public CNANDContentData { public: - CNANDContentDataFile(const std::string& filename) : m_filename(filename){}; + explicit CNANDContentDataFile(const std::string& filename) : m_filename(filename){}; void Open() override; std::vector Get() override; @@ -51,7 +51,7 @@ private: class CNANDContentDataBuffer final : public CNANDContentData { public: - CNANDContentDataBuffer(const std::vector& buffer) : m_buffer(buffer){}; + explicit CNANDContentDataBuffer(const std::vector& buffer) : m_buffer(buffer){}; std::vector Get() override { return m_buffer; }; bool GetRange(u32 start, u32 size, u8* buffer) override; @@ -76,7 +76,7 @@ struct SNANDContent class CNANDContentLoader final { public: - CNANDContentLoader(const std::string& content_name); + explicit CNANDContentLoader(const std::string& content_name); virtual ~CNANDContentLoader(); bool IsValid() const { return m_Valid; } From b43a26b90c5cf15c06ecc9a8d4c276308ee1eddf Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 14 Sep 2016 19:45:49 -0400 Subject: [PATCH 4/5] NANDContentLoader: Remove virtual specifier from CNANDContentLoader destructor This class is marked final, so there's no need to declare it as virtual. --- Source/Core/DiscIO/NANDContentLoader.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Core/DiscIO/NANDContentLoader.h b/Source/Core/DiscIO/NANDContentLoader.h index 7014580c7d..f30b8842f7 100644 --- a/Source/Core/DiscIO/NANDContentLoader.h +++ b/Source/Core/DiscIO/NANDContentLoader.h @@ -77,7 +77,7 @@ class CNANDContentLoader final { public: explicit CNANDContentLoader(const std::string& content_name); - virtual ~CNANDContentLoader(); + ~CNANDContentLoader(); bool IsValid() const { return m_Valid; } void RemoveTitle() const; From 5aeedcd27c5561508026846a2a746926cd03d20b Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 14 Sep 2016 19:50:43 -0400 Subject: [PATCH 5/5] NANDContentLoader: Remove unnecessary trailing semicolons --- Source/Core/DiscIO/NANDContentLoader.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Source/Core/DiscIO/NANDContentLoader.h b/Source/Core/DiscIO/NANDContentLoader.h index f30b8842f7..6c9df0d545 100644 --- a/Source/Core/DiscIO/NANDContentLoader.h +++ b/Source/Core/DiscIO/NANDContentLoader.h @@ -26,17 +26,16 @@ class CNANDContentData { public: virtual ~CNANDContentData() = 0; - virtual void Open(){}; + virtual void Open() {} virtual std::vector Get() = 0; virtual bool GetRange(u32 start, u32 size, u8* buffer) = 0; - virtual void Close(){}; + virtual void Close() {} }; class CNANDContentDataFile final : public CNANDContentData { public: - explicit CNANDContentDataFile(const std::string& filename) : m_filename(filename){}; - + explicit CNANDContentDataFile(const std::string& filename) : m_filename(filename) {} void Open() override; std::vector Get() override; bool GetRange(u32 start, u32 size, u8* buffer) override; @@ -51,9 +50,8 @@ private: class CNANDContentDataBuffer final : public CNANDContentData { public: - explicit CNANDContentDataBuffer(const std::vector& buffer) : m_buffer(buffer){}; - - std::vector Get() override { return m_buffer; }; + explicit CNANDContentDataBuffer(const std::vector& buffer) : m_buffer(buffer) {} + std::vector Get() override { return m_buffer; } bool GetRange(u32 start, u32 size, u8* buffer) override; private: