summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bunnei2018-07-21 10:44:08 -0700
committerGravatar GitHub2018-07-21 10:44:08 -0700
commit3d938b8c602d3e9ea44fd4144fa7a6daeb1affac (patch)
tree8ccf55a5dd44b525a46ad4b9b43bcd1de474b898
parentMerge pull request #752 from Subv/vfs_load (diff)
parentvfs_offset: Simplify TrimToFit() (diff)
downloadyuzu-3d938b8c602d3e9ea44fd4144fa7a6daeb1affac.tar.gz
yuzu-3d938b8c602d3e9ea44fd4144fa7a6daeb1affac.tar.xz
yuzu-3d938b8c602d3e9ea44fd4144fa7a6daeb1affac.zip
Merge pull request #753 from lioncash/const
vfs: Minor changes
-rw-r--r--src/core/file_sys/vfs.cpp2
-rw-r--r--src/core/file_sys/vfs.h27
-rw-r--r--src/core/file_sys/vfs_offset.cpp5
-rw-r--r--src/core/file_sys/vfs_offset.h2
4 files changed, 15 insertions, 21 deletions
diff --git a/src/core/file_sys/vfs.cpp b/src/core/file_sys/vfs.cpp
index 16c8ad90b..3f690f12a 100644
--- a/src/core/file_sys/vfs.cpp
+++ b/src/core/file_sys/vfs.cpp
@@ -42,7 +42,7 @@ bool VfsFile::WriteByte(u8 data, size_t offset) {
42 return Write(&data, 1, offset) == 1; 42 return Write(&data, 1, offset) == 1;
43} 43}
44 44
45size_t VfsFile::WriteBytes(std::vector<u8> data, size_t offset) { 45size_t VfsFile::WriteBytes(const std::vector<u8>& data, size_t offset) {
46 return Write(data.data(), data.size(), offset); 46 return Write(data.data(), data.size(), offset);
47} 47}
48 48
diff --git a/src/core/file_sys/vfs.h b/src/core/file_sys/vfs.h
index a5213e0cc..db3c77eac 100644
--- a/src/core/file_sys/vfs.h
+++ b/src/core/file_sys/vfs.h
@@ -59,8 +59,7 @@ struct VfsFile : NonCopyable {
59 // Returns the number of bytes (sizeof(T)*number_elements) read successfully. 59 // Returns the number of bytes (sizeof(T)*number_elements) read successfully.
60 template <typename T> 60 template <typename T>
61 size_t ReadArray(T* data, size_t number_elements, size_t offset = 0) const { 61 size_t ReadArray(T* data, size_t number_elements, size_t offset = 0) const {
62 static_assert(std::is_trivially_copyable<T>::value, 62 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
63 "Data type must be trivially copyable.");
64 63
65 return Read(reinterpret_cast<u8*>(data), number_elements * sizeof(T), offset); 64 return Read(reinterpret_cast<u8*>(data), number_elements * sizeof(T), offset);
66 } 65 }
@@ -69,8 +68,7 @@ struct VfsFile : NonCopyable {
69 // Returns the number of bytes read successfully. 68 // Returns the number of bytes read successfully.
70 template <typename T> 69 template <typename T>
71 size_t ReadBytes(T* data, size_t size, size_t offset = 0) const { 70 size_t ReadBytes(T* data, size_t size, size_t offset = 0) const {
72 static_assert(std::is_trivially_copyable<T>::value, 71 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
73 "Data type must be trivially copyable.");
74 return Read(reinterpret_cast<u8*>(data), size, offset); 72 return Read(reinterpret_cast<u8*>(data), size, offset);
75 } 73 }
76 74
@@ -78,8 +76,7 @@ struct VfsFile : NonCopyable {
78 // Returns the number of bytes read successfully (sizeof(T)). 76 // Returns the number of bytes read successfully (sizeof(T)).
79 template <typename T> 77 template <typename T>
80 size_t ReadObject(T* data, size_t offset = 0) const { 78 size_t ReadObject(T* data, size_t offset = 0) const {
81 static_assert(std::is_trivially_copyable<T>::value, 79 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
82 "Data type must be trivially copyable.");
83 return Read(reinterpret_cast<u8*>(data), sizeof(T), offset); 80 return Read(reinterpret_cast<u8*>(data), sizeof(T), offset);
84 } 81 }
85 82
@@ -88,33 +85,29 @@ struct VfsFile : NonCopyable {
88 virtual bool WriteByte(u8 data, size_t offset = 0); 85 virtual bool WriteByte(u8 data, size_t offset = 0);
89 // Writes a vector of bytes to offset in file and returns the number of bytes successfully 86 // Writes a vector of bytes to offset in file and returns the number of bytes successfully
90 // written. 87 // written.
91 virtual size_t WriteBytes(std::vector<u8> data, size_t offset = 0); 88 virtual size_t WriteBytes(const std::vector<u8>& data, size_t offset = 0);
92 89
93 // Writes an array of type T, size number_elements to offset in file. 90 // Writes an array of type T, size number_elements to offset in file.
94 // Returns the number of bytes (sizeof(T)*number_elements) written successfully. 91 // Returns the number of bytes (sizeof(T)*number_elements) written successfully.
95 template <typename T> 92 template <typename T>
96 size_t WriteArray(T* data, size_t number_elements, size_t offset = 0) { 93 size_t WriteArray(const T* data, size_t number_elements, size_t offset = 0) {
97 static_assert(std::is_trivially_copyable<T>::value, 94 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
98 "Data type must be trivially copyable.");
99
100 return Write(data, number_elements * sizeof(T), offset); 95 return Write(data, number_elements * sizeof(T), offset);
101 } 96 }
102 97
103 // Writes size bytes starting at memory location data to offset in file. 98 // Writes size bytes starting at memory location data to offset in file.
104 // Returns the number of bytes written successfully. 99 // Returns the number of bytes written successfully.
105 template <typename T> 100 template <typename T>
106 size_t WriteBytes(T* data, size_t size, size_t offset = 0) { 101 size_t WriteBytes(const T* data, size_t size, size_t offset = 0) {
107 static_assert(std::is_trivially_copyable<T>::value, 102 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
108 "Data type must be trivially copyable."); 103 return Write(reinterpret_cast<const u8*>(data), size, offset);
109 return Write(reinterpret_cast<u8*>(data), size, offset);
110 } 104 }
111 105
112 // Writes one object of type T to offset in file. 106 // Writes one object of type T to offset in file.
113 // Returns the number of bytes written successfully (sizeof(T)). 107 // Returns the number of bytes written successfully (sizeof(T)).
114 template <typename T> 108 template <typename T>
115 size_t WriteObject(const T& data, size_t offset = 0) { 109 size_t WriteObject(const T& data, size_t offset = 0) {
116 static_assert(std::is_trivially_copyable<T>::value, 110 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
117 "Data type must be trivially copyable.");
118 return Write(&data, sizeof(T), offset); 111 return Write(&data, sizeof(T), offset);
119 } 112 }
120 113
diff --git a/src/core/file_sys/vfs_offset.cpp b/src/core/file_sys/vfs_offset.cpp
index 31fdd9aa1..217e02235 100644
--- a/src/core/file_sys/vfs_offset.cpp
+++ b/src/core/file_sys/vfs_offset.cpp
@@ -2,6 +2,7 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#include <algorithm>
5#include <utility> 6#include <utility>
6 7
7#include "core/file_sys/vfs_offset.h" 8#include "core/file_sys/vfs_offset.h"
@@ -75,7 +76,7 @@ bool OffsetVfsFile::WriteByte(u8 data, size_t r_offset) {
75 return false; 76 return false;
76} 77}
77 78
78size_t OffsetVfsFile::WriteBytes(std::vector<u8> data, size_t r_offset) { 79size_t OffsetVfsFile::WriteBytes(const std::vector<u8>& data, size_t r_offset) {
79 return file->Write(data.data(), TrimToFit(data.size(), r_offset), offset + r_offset); 80 return file->Write(data.data(), TrimToFit(data.size(), r_offset), offset + r_offset);
80} 81}
81 82
@@ -88,7 +89,7 @@ size_t OffsetVfsFile::GetOffset() const {
88} 89}
89 90
90size_t OffsetVfsFile::TrimToFit(size_t r_size, size_t r_offset) const { 91size_t OffsetVfsFile::TrimToFit(size_t r_size, size_t r_offset) const {
91 return std::max<size_t>(std::min<size_t>(size - r_offset, r_size), 0); 92 return std::clamp(r_size, size_t{0}, size - r_offset);
92} 93}
93 94
94} // namespace FileSys 95} // namespace FileSys
diff --git a/src/core/file_sys/vfs_offset.h b/src/core/file_sys/vfs_offset.h
index 2e16e47eb..ded4827f5 100644
--- a/src/core/file_sys/vfs_offset.h
+++ b/src/core/file_sys/vfs_offset.h
@@ -28,7 +28,7 @@ struct OffsetVfsFile : public VfsFile {
28 std::vector<u8> ReadBytes(size_t size, size_t offset) const override; 28 std::vector<u8> ReadBytes(size_t size, size_t offset) const override;
29 std::vector<u8> ReadAllBytes() const override; 29 std::vector<u8> ReadAllBytes() const override;
30 bool WriteByte(u8 data, size_t offset) override; 30 bool WriteByte(u8 data, size_t offset) override;
31 size_t WriteBytes(std::vector<u8> data, size_t offset) override; 31 size_t WriteBytes(const std::vector<u8>& data, size_t offset) override;
32 32
33 bool Rename(const std::string& name) override; 33 bool Rename(const std::string& name) override;
34 34