From 74b06bdb50c92b14ad866499c9a3f1eec1e4bdab Mon Sep 17 00:00:00 2001 From: Adubbz Date: Wed, 26 Feb 2020 02:21:21 +1100 Subject: [PATCH] Addressed remaining comments --- .../ncm/source/impl/lr_registered_data.hpp | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/stratosphere/ncm/source/impl/lr_registered_data.hpp b/stratosphere/ncm/source/impl/lr_registered_data.hpp index 1f539821b..75f4b4e98 100644 --- a/stratosphere/ncm/source/impl/lr_registered_data.hpp +++ b/stratosphere/ncm/source/impl/lr_registered_data.hpp @@ -34,6 +34,24 @@ namespace ams::lr::impl { private: Entry entries[NumEntries]; size_t capacity; + private: + inline bool IsExcluded(const ncm::ProgramId id, const ncm::ProgramId* excluding_ids, size_t num_ids) const { + for (size_t i = 0; i < num_ids; i++) { + if (id == excluding_ids[i]) { + return true; + } + } + + return false; + } + + inline void RegisterImpl(size_t i, const Key &key, const Value &value, const ncm::ProgramId owner_id) { + Entry& entry = this->entries[i]; + entry.key = key; + entry.value = value; + entry.owner_id = owner_id; + entry.is_valid = true; + } public: RegisteredData(size_t capacity = NumEntries) : capacity(capacity) { this->Clear(); @@ -44,18 +62,16 @@ namespace ams::lr::impl { for (size_t i = 0; i < this->GetCapacity(); i++) { Entry& entry = this->entries[i]; if (entry.is_valid && entry.key == key) { - entry.value = value; + this->RegisterImpl(i, key, value, owner_id); return true; } } + /* We didn't find an existing entry, so try to create a new one. */ for (size_t i = 0; i < this->GetCapacity(); i++) { Entry& entry = this->entries[i]; if (!entry.is_valid) { - entry.key = key; - entry.value = value; - entry.owner_id = owner_id; - entry.is_valid = true; + this->RegisterImpl(i, key, value, owner_id); return true; } } @@ -102,18 +118,8 @@ namespace ams::lr::impl { void ClearExcluding(const ncm::ProgramId* ids, size_t num_ids) { for (size_t i = 0; i < this->GetCapacity(); i++) { Entry& entry = this->entries[i]; - bool found = false; - for (size_t j = 0; j < num_ids; j++) { - ncm::ProgramId id = ids[j]; - - if (entry.owner_id == id) { - found = true; - break; - } - } - - if (!found) { + if (!this->IsExcluded(entry.owner_id, ids, num_ids)) { entry.is_valid = false; } }