From 39ae73b356a253036283b114855f8c5ddbb20f49 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 16 Oct 2018 09:05:47 -0400 Subject: file_sys/registered_cache: Use unique_ptr and regular pointers instead of shared_ptrs where applicable The data retrieved in these cases are ultimately chiefly owned by either the RegisteredCache instance itself, or the filesystem factories. Both these should live throughout the use of their contained data. If they don't, it should be considered an interface/design issue, and using shared_ptr instances here would mask that, as the data would always be prolonged after the main owner's lifetime ended. This makes the lifetime of the data explicit and makes it harder to accidentally create cyclic references. It also makes the interface slightly more flexible than the previous API, as a shared_ptr can be created from a unique_ptr, but not the other way around, so this allows for that use-case if it ever becomes necessary in some form. --- src/core/file_sys/registered_cache.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/core/file_sys/registered_cache.h') diff --git a/src/core/file_sys/registered_cache.h b/src/core/file_sys/registered_cache.h index c0cd59fc5..5ddacba47 100644 --- a/src/core/file_sys/registered_cache.h +++ b/src/core/file_sys/registered_cache.h @@ -88,8 +88,8 @@ public: VirtualFile GetEntryRaw(u64 title_id, ContentRecordType type) const; VirtualFile GetEntryRaw(RegisteredCacheEntry entry) const; - std::shared_ptr GetEntry(u64 title_id, ContentRecordType type) const; - std::shared_ptr GetEntry(RegisteredCacheEntry entry) const; + std::unique_ptr GetEntry(u64 title_id, ContentRecordType type) const; + std::unique_ptr GetEntry(RegisteredCacheEntry entry) const; std::vector ListEntries() const; // If a parameter is not boost::none, it will be filtered for from all entries. @@ -142,7 +142,7 @@ private: // Combines multiple RegisteredCaches (i.e. SysNAND, UserNAND, SDMC) into one interface. class RegisteredCacheUnion { public: - explicit RegisteredCacheUnion(std::vector> caches); + explicit RegisteredCacheUnion(std::vector caches); void Refresh(); @@ -157,8 +157,8 @@ public: VirtualFile GetEntryRaw(u64 title_id, ContentRecordType type) const; VirtualFile GetEntryRaw(RegisteredCacheEntry entry) const; - std::shared_ptr GetEntry(u64 title_id, ContentRecordType type) const; - std::shared_ptr GetEntry(RegisteredCacheEntry entry) const; + std::unique_ptr GetEntry(u64 title_id, ContentRecordType type) const; + std::unique_ptr GetEntry(RegisteredCacheEntry entry) const; std::vector ListEntries() const; // If a parameter is not boost::none, it will be filtered for from all entries. @@ -168,7 +168,7 @@ public: boost::optional title_id = boost::none) const; private: - std::vector> caches; + std::vector caches; }; } // namespace FileSys -- cgit v1.2.3