diff options
| author | 2018-07-21 10:44:08 -0700 | |
|---|---|---|
| committer | 2018-07-21 10:44:08 -0700 | |
| commit | 3d938b8c602d3e9ea44fd4144fa7a6daeb1affac (patch) | |
| tree | 8ccf55a5dd44b525a46ad4b9b43bcd1de474b898 | |
| parent | Merge pull request #752 from Subv/vfs_load (diff) | |
| parent | vfs_offset: Simplify TrimToFit() (diff) | |
| download | yuzu-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.cpp | 2 | ||||
| -rw-r--r-- | src/core/file_sys/vfs.h | 27 | ||||
| -rw-r--r-- | src/core/file_sys/vfs_offset.cpp | 5 | ||||
| -rw-r--r-- | src/core/file_sys/vfs_offset.h | 2 |
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 | ||
| 45 | size_t VfsFile::WriteBytes(std::vector<u8> data, size_t offset) { | 45 | size_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 | ||
| 78 | size_t OffsetVfsFile::WriteBytes(std::vector<u8> data, size_t r_offset) { | 79 | size_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 | ||
| 90 | size_t OffsetVfsFile::TrimToFit(size_t r_size, size_t r_offset) const { | 91 | size_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 | ||