From fd956f6c697582449aa06597d5c863f00c6061f0 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 18 Mar 2018 16:18:38 -0400 Subject: [PATCH 1/5] DataReader: Make size() and Peek() const member functions These don't modify class state, so they can be const qualified. --- Source/Core/VideoCommon/DataReader.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Core/VideoCommon/DataReader.h b/Source/Core/VideoCommon/DataReader.h index 51430d508d..788346d514 100644 --- a/Source/Core/VideoCommon/DataReader.h +++ b/Source/Core/VideoCommon/DataReader.h @@ -22,9 +22,9 @@ public: return src; } - __forceinline size_t size() { return end - buffer; } + __forceinline size_t size() const { return end - buffer; } template - __forceinline T Peek(int offset = 0) + __forceinline T Peek(int offset = 0) const { T data; std::memcpy(&data, &buffer[offset], sizeof(T)); From 4c2ec391996e5b6fcf62fbd9b8a13aa3c1acdfaa Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 18 Mar 2018 16:34:48 -0400 Subject: [PATCH 2/5] DataReader: In-class initialize member variables where applicable Allows the default constructor to be defaulted and ensures the default values are associated with the member variables directly. Also corrects a prefixed underscore in the two parameter constructor. --- Source/Core/VideoCommon/DataReader.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Core/VideoCommon/DataReader.h b/Source/Core/VideoCommon/DataReader.h index 788346d514..5b53a03bed 100644 --- a/Source/Core/VideoCommon/DataReader.h +++ b/Source/Core/VideoCommon/DataReader.h @@ -13,8 +13,8 @@ class DataReader { public: - __forceinline DataReader() : buffer(nullptr), end(nullptr) {} - __forceinline DataReader(u8* src, u8* _end) : buffer(src), end(_end) {} + __forceinline DataReader() = default; + __forceinline DataReader(u8* src, u8* end_) : buffer(src), end(end_) {} __forceinline u8* GetPointer() { return buffer; } __forceinline u8* operator=(u8* src) { @@ -60,6 +60,6 @@ public: } private: - u8* __restrict buffer; - u8* end; + u8* __restrict buffer = nullptr; + u8* end = nullptr; }; From ffade65c55ed848854901305de1e3160bce35398 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 18 Mar 2018 16:37:07 -0400 Subject: [PATCH 3/5] DataReader: Remove __forceinline from trivial functions --- Source/Core/VideoCommon/DataReader.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/Core/VideoCommon/DataReader.h b/Source/Core/VideoCommon/DataReader.h index 5b53a03bed..709f5f6012 100644 --- a/Source/Core/VideoCommon/DataReader.h +++ b/Source/Core/VideoCommon/DataReader.h @@ -13,16 +13,16 @@ class DataReader { public: - __forceinline DataReader() = default; - __forceinline DataReader(u8* src, u8* end_) : buffer(src), end(end_) {} - __forceinline u8* GetPointer() { return buffer; } - __forceinline u8* operator=(u8* src) + DataReader() = default; + DataReader(u8* src, u8* end_) : buffer(src), end(end_) {} + u8* GetPointer() { return buffer; } + u8* operator=(u8* src) { buffer = src; return src; } - __forceinline size_t size() const { return end - buffer; } + size_t size() const { return end - buffer; } template __forceinline T Peek(int offset = 0) const { @@ -54,7 +54,7 @@ public: } template - __forceinline void Skip(size_t data = 1) + void Skip(size_t data = 1) { buffer += sizeof(T) * data; } From ce29c1c42fc4b444264ce8de8fa54d1154b2a7d9 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 18 Mar 2018 16:38:05 -0400 Subject: [PATCH 4/5] DataReader: Correct return type of operator= It's questionable to not return a reference to the instance being assigned to. It's also quite misleading in terms of expected behavior relative to everything else. This fixes it to make it consistent with other classes. --- Source/Core/VideoCommon/DataReader.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Core/VideoCommon/DataReader.h b/Source/Core/VideoCommon/DataReader.h index 709f5f6012..7813e22e60 100644 --- a/Source/Core/VideoCommon/DataReader.h +++ b/Source/Core/VideoCommon/DataReader.h @@ -16,10 +16,10 @@ public: DataReader() = default; DataReader(u8* src, u8* end_) : buffer(src), end(end_) {} u8* GetPointer() { return buffer; } - u8* operator=(u8* src) + DataReader& operator=(u8* src) { buffer = src; - return src; + return *this; } size_t size() const { return end - buffer; } From b21a00d290c0f3f6ef5c008102b83df80a4076e0 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 18 Mar 2018 16:43:27 -0400 Subject: [PATCH 5/5] DataReader: Provide a const qualified variant of GetPointer() This wouldn't be much of a data reader if it can't access the read-only data pointer in read-only contexts. Especially if it can get a writable equivalent in contexts that aren't read-only. --- Source/Core/VideoCommon/DataReader.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/Core/VideoCommon/DataReader.h b/Source/Core/VideoCommon/DataReader.h index 7813e22e60..fef031206f 100644 --- a/Source/Core/VideoCommon/DataReader.h +++ b/Source/Core/VideoCommon/DataReader.h @@ -16,6 +16,7 @@ public: DataReader() = default; DataReader(u8* src, u8* end_) : buffer(src), end(end_) {} u8* GetPointer() { return buffer; } + const u8* GetPointer() const { return buffer; } DataReader& operator=(u8* src) { buffer = src;