Просмотр исходного кода

file_sys: Cut down on includes and copies

Zach Hilman 8 лет назад
Родитель
Сommit
a7e8d10969

+ 11 - 11
src/core/crypto/key_manager.cpp

@@ -199,7 +199,7 @@ Key256 KeyManager::GetKey(S256KeyType id, u64 field1, u64 field2) const {
 
 template <size_t Size>
 void KeyManager::WriteKeyToFile(bool title_key, std::string_view keyname,
-                                std::array<u8, Size> key) {
+                                const std::array<u8, Size>& key) {
     const std::string yuzu_keys_dir = FileUtil::GetUserPath(FileUtil::UserPath::KeysDir);
     std::string filename = "title.keys_autogenerated";
     if (!title_key)
@@ -209,11 +209,10 @@ void KeyManager::WriteKeyToFile(bool title_key, std::string_view keyname,
     if (!file.is_open())
         return;
     if (add_info_text) {
-        file << "# This file is autogenerated by Yuzu" << std::endl
-             << "# It serves to store keys that were automatically generated from the normal keys"
-             << std::endl
-             << "# If you are experiencing issues involving keys, it may help to delete this file"
-             << std::endl;
+        file
+            << "# This file is autogenerated by Yuzu\n"
+            << "# It serves to store keys that were automatically generated from the normal keys\n"
+            << "# If you are experiencing issues involving keys, it may help to delete this file\n";
     }
 
     file << std::endl
@@ -263,11 +262,12 @@ bool KeyManager::KeyFileExists(bool title) {
 }
 
 void KeyManager::DeriveSDSeedLazy() {
-    if (!HasKey(S128KeyType::SDSeed)) {
-        const auto res = DeriveSDSeed();
-        if (res != boost::none)
-            SetKey(S128KeyType::SDSeed, res.get());
-    }
+    if (HasKey(S128KeyType::SDSeed))
+        return;
+
+    const auto res = DeriveSDSeed();
+    if (res != boost::none)
+        SetKey(S128KeyType::SDSeed, res.get());
 }
 
 const boost::container::flat_map<std::string, KeyIndex<S128KeyType>> KeyManager::s128_file_id = {

+ 2 - 4
src/core/crypto/key_manager.h

@@ -74,9 +74,7 @@ struct KeyIndex {
 // boost flat_map requires operator< for O(log(n)) lookups.
 template <typename KeyType>
 bool operator<(const KeyIndex<KeyType>& lhs, const KeyIndex<KeyType>& rhs) {
-    return (static_cast<size_t>(lhs.type) < static_cast<size_t>(rhs.type)) ||
-           (lhs.type == rhs.type && lhs.field1 < rhs.field1) ||
-           (lhs.type == rhs.type && lhs.field1 == rhs.field1 && lhs.field2 < rhs.field2);
+    return std::tie(lhs.type, lhs.field1, lhs.field2) < std::tie(rhs.type, rhs.field1, rhs.field2);
 }
 
 class KeyManager {
@@ -107,7 +105,7 @@ private:
     void AttemptLoadKeyFile(const std::string& dir1, const std::string& dir2,
                             const std::string& filename, bool title);
     template <size_t Size>
-    void WriteKeyToFile(bool title_key, std::string_view keyname, std::array<u8, Size> key);
+    void WriteKeyToFile(bool title_key, std::string_view keyname, const std::array<u8, Size>& key);
 
     static const boost::container::flat_map<std::string, KeyIndex<S128KeyType>> s128_file_id;
     static const boost::container::flat_map<std::string, KeyIndex<S256KeyType>> s256_file_id;

+ 2 - 0
src/core/file_sys/registered_cache.cpp

@@ -254,6 +254,8 @@ RegisteredCache::RegisteredCache(VirtualDir dir_, RegisteredCacheParsingFunction
     Refresh();
 }
 
+RegisteredCache::~RegisteredCache() = default;
+
 bool RegisteredCache::HasEntry(u64 title_id, ContentRecordType type) const {
     return GetEntryRaw(title_id, type) != nullptr;
 }

+ 1 - 0
src/core/file_sys/registered_cache.h

@@ -63,6 +63,7 @@ public:
     explicit RegisteredCache(VirtualDir dir,
                              RegisteredCacheParsingFunction parsing_function =
                                  [](const VirtualFile& file, const NcaID& id) { return file; });
+    ~RegisteredCache();
 
     void Refresh();
 

+ 3 - 0
src/core/file_sys/sdmc_factory.h

@@ -4,11 +4,14 @@
 
 #pragma once
 
+#include <memory>
 #include "core/file_sys/vfs.h"
 #include "core/hle/result.h"
 
 namespace FileSys {
 
+class RegisteredCache;
+
 /// File system interface to the SDCard archive
 class SDMCFactory {
 public:

+ 2 - 0
src/core/loader/nax.cpp

@@ -6,8 +6,10 @@
 #include "core/core.h"
 #include "core/file_sys/content_archive.h"
 #include "core/file_sys/romfs.h"
+#include "core/file_sys/xts_archive.h"
 #include "core/hle/kernel/process.h"
 #include "core/loader/nax.h"
+#include "core/loader/nca.h"
 
 namespace Loader {
 

+ 9 - 4
src/core/loader/nax.h

@@ -6,18 +6,23 @@
 
 #include <memory>
 #include "common/common_types.h"
-#include "core/file_sys/card_image.h"
-#include "core/file_sys/xts_archive.h"
 #include "core/loader/loader.h"
-#include "core/loader/nca.h"
+
+namespace FileSys {
+
+class NAX;
+
+} // namespace FileSys
 
 namespace Loader {
 
+class AppLoader_NCA;
+
 /// Loads a NAX file
 class AppLoader_NAX final : public AppLoader {
 public:
     explicit AppLoader_NAX(FileSys::VirtualFile file);
-    ~AppLoader_NAX();
+    ~AppLoader_NAX() override;
 
     /**
      * Returns the type of the file