summaryrefslogtreecommitdiffstats
path: root/src/core/file_sys/vfs_concat.h
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-09-25 23:26:09 +0200
committerLioncash <mathew1800@gmail.com>2018-09-25 23:40:53 +0200
commit14e2df56101f7c7ab87939ea7a708ab4e6fb70c6 (patch)
tree767c4a2d64f4f0392646720eeb5ad98e9898469b /src/core/file_sys/vfs_concat.h
parentMerge pull request #1365 from DarkLordZach/lfs (diff)
downloadyuzu-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.h33
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