diff options
author | Lioncash <mathew1800@gmail.com> | 2018-09-25 23:26:09 +0200 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2018-09-25 23:40:53 +0200 |
commit | 14e2df56101f7c7ab87939ea7a708ab4e6fb70c6 (patch) | |
tree | 767c4a2d64f4f0392646720eeb5ad98e9898469b /src/core/file_sys/vfs_concat.h | |
parent | Merge pull request #1365 from DarkLordZach/lfs (diff) | |
download | yuzu-14e2df56101f7c7ab87939ea7a708ab4e6fb70c6.tar yuzu-14e2df56101f7c7ab87939ea7a708ab4e6fb70c6.tar.gz yuzu-14e2df56101f7c7ab87939ea7a708ab4e6fb70c6.tar.bz2 yuzu-14e2df56101f7c7ab87939ea7a708ab4e6fb70c6.tar.lz yuzu-14e2df56101f7c7ab87939ea7a708ab4e6fb70c6.tar.xz yuzu-14e2df56101f7c7ab87939ea7a708ab4e6fb70c6.tar.zst yuzu-14e2df56101f7c7ab87939ea7a708ab4e6fb70c6.zip |
Diffstat (limited to 'src/core/file_sys/vfs_concat.h')
-rw-r--r-- | src/core/file_sys/vfs_concat.h | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/src/core/file_sys/vfs_concat.h b/src/core/file_sys/vfs_concat.h index 76211d38a..17fa40ade 100644 --- a/src/core/file_sys/vfs_concat.h +++ b/src/core/file_sys/vfs_concat.h @@ -7,9 +7,7 @@ #include <map> #include <memory> #include <string_view> -#include <boost/container/flat_map.hpp> #include "core/file_sys/vfs.h" -#include "core/file_sys/vfs_static.h" namespace FileSys { @@ -17,9 +15,8 @@ namespace FileSys { // read-only. class ConcatenatedVfsFile : public VfsFile { friend VirtualFile ConcatenateFiles(std::vector<VirtualFile> files, std::string name); - - template <u8 filler_byte> - friend VirtualFile ConcatenateFiles(std::map<u64, VirtualFile> files, std::string name); + friend VirtualFile ConcatenateFiles(u8 filler_byte, std::map<u64, VirtualFile> files, + std::string name); ConcatenatedVfsFile(std::vector<VirtualFile> files, std::string name); ConcatenatedVfsFile(std::map<u64, VirtualFile> files, std::string name); @@ -47,29 +44,7 @@ private: VirtualFile ConcatenateFiles(std::vector<VirtualFile> files, std::string name); // Convenience function that turns a map of offsets to files into a concatenated file, filling gaps -// with template parameter. -template <u8 filler_byte> -VirtualFile ConcatenateFiles(std::map<u64, VirtualFile> files, std::string name) { - if (files.empty()) - return nullptr; - if (files.size() == 1) - return files.begin()->second; - - const auto last_valid = --files.end(); - for (auto iter = files.begin(); iter != last_valid;) { - const auto old = iter++; - if (old->first + old->second->GetSize() != iter->first) { - files.emplace(old->first + old->second->GetSize(), - std::make_shared<StaticVfsFile<filler_byte>>(iter->first - old->first - - old->second->GetSize())); - } - } - - // Ensure the map starts at offset 0 (start of file), otherwise pad to fill. - if (files.begin()->first != 0) - files.emplace(0, std::make_shared<StaticVfsFile<filler_byte>>(files.begin()->first)); - - return std::shared_ptr<VfsFile>(new ConcatenatedVfsFile(std::move(files), std::move(name))); -} +// with a given filler byte. +VirtualFile ConcatenateFiles(u8 filler_byte, std::map<u64, VirtualFile> files, std::string name); } // namespace FileSys |