From e2209106fbbaec7cb072a101a3bee2f140ed4ce1 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 9 Jun 2020 05:09:31 -0400 Subject: [PATCH 1/4] CResourceIterator: Remove unnecessary inline specifiers --- src/Core/GameProject/CResourceIterator.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Core/GameProject/CResourceIterator.h b/src/Core/GameProject/CResourceIterator.h index 6951da25..160ea0f3 100644 --- a/src/Core/GameProject/CResourceIterator.h +++ b/src/Core/GameProject/CResourceIterator.h @@ -36,33 +36,33 @@ public: return mpCurEntry; } - inline bool DoneIterating() const + bool DoneIterating() const { return mpCurEntry == nullptr; } - inline operator bool() const + explicit operator bool() const { return !DoneIterating(); } - inline CResourceEntry* operator*() const + CResourceEntry* operator*() const { return mpCurEntry; } - inline CResourceEntry* operator->() const + CResourceEntry* operator->() const { return mpCurEntry; } - inline CResourceIterator& operator++() + CResourceIterator& operator++() { Next(); return *this; } - inline CResourceIterator operator++(int) + CResourceIterator operator++(int) { CResourceIterator Copy = *this; Next(); From 65cc3a0d8963c1a86c353cd7b12dabdef4034672 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 9 Jun 2020 05:10:07 -0400 Subject: [PATCH 2/4] CResourceIterator: Use prefix form for iterators Same behavior, minus any created temporaries. --- src/Core/GameProject/CResourceIterator.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/GameProject/CResourceIterator.h b/src/Core/GameProject/CResourceIterator.h index 160ea0f3..39726263 100644 --- a/src/Core/GameProject/CResourceIterator.h +++ b/src/Core/GameProject/CResourceIterator.h @@ -27,7 +27,7 @@ public: if (mIter != mpkStore->mResourceEntries.end()) { mpCurEntry = mIter->second; - mIter++; + ++mIter; } else mpCurEntry = nullptr; } From 621367e12023fdca3c144effa646555778412f86 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 9 Jun 2020 05:11:06 -0400 Subject: [PATCH 3/4] CResourceIterator: Make use of override where applicable Same behavior, but enforces the interface. --- src/Core/GameProject/CResourceIterator.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/GameProject/CResourceIterator.h b/src/Core/GameProject/CResourceIterator.h index 39726263..ca38dd53 100644 --- a/src/Core/GameProject/CResourceIterator.h +++ b/src/Core/GameProject/CResourceIterator.h @@ -81,7 +81,7 @@ public: Next(); } - virtual CResourceEntry* Next() + CResourceEntry* Next() override { do { CResourceIterator::Next(); From 0eef99f72ec7c3c9c611d4f57d16fcd6d247ac87 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 9 Jun 2020 05:14:12 -0400 Subject: [PATCH 4/4] CResourceIterator: Provide a virtual destructor Prevents any potential undefined behavior from occurring from deleting a derived type from a base class pointer. --- src/Core/GameProject/CResourceIterator.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Core/GameProject/CResourceIterator.h b/src/Core/GameProject/CResourceIterator.h index ca38dd53..bd831ae9 100644 --- a/src/Core/GameProject/CResourceIterator.h +++ b/src/Core/GameProject/CResourceIterator.h @@ -20,6 +20,8 @@ public: Next(); } + virtual ~CResourceIterator() = default; + virtual CResourceEntry* Next() { do