yuzu-emu
/
yuzu-android
Archived
1
0
Fork 0

vfs: Use variable template variants of std::is_trivially_copyable

Provides the same behavior, but with less writing
This commit is contained in:
Lioncash 2018-07-20 21:45:20 -04:00
parent 05231d8b08
commit dd09439fee
1 changed files with 6 additions and 13 deletions

View File

@ -59,8 +59,7 @@ struct VfsFile : NonCopyable {
// Returns the number of bytes (sizeof(T)*number_elements) read successfully. // Returns the number of bytes (sizeof(T)*number_elements) read successfully.
template <typename T> template <typename T>
size_t ReadArray(T* data, size_t number_elements, size_t offset = 0) const { size_t ReadArray(T* data, size_t number_elements, size_t offset = 0) const {
static_assert(std::is_trivially_copyable<T>::value, static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
"Data type must be trivially copyable.");
return Read(reinterpret_cast<u8*>(data), number_elements * sizeof(T), offset); return Read(reinterpret_cast<u8*>(data), number_elements * sizeof(T), offset);
} }
@ -69,8 +68,7 @@ struct VfsFile : NonCopyable {
// Returns the number of bytes read successfully. // Returns the number of bytes read successfully.
template <typename T> template <typename T>
size_t ReadBytes(T* data, size_t size, size_t offset = 0) const { size_t ReadBytes(T* data, size_t size, size_t offset = 0) const {
static_assert(std::is_trivially_copyable<T>::value, static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
"Data type must be trivially copyable.");
return Read(reinterpret_cast<u8*>(data), size, offset); return Read(reinterpret_cast<u8*>(data), size, offset);
} }
@ -78,8 +76,7 @@ struct VfsFile : NonCopyable {
// Returns the number of bytes read successfully (sizeof(T)). // Returns the number of bytes read successfully (sizeof(T)).
template <typename T> template <typename T>
size_t ReadObject(T* data, size_t offset = 0) const { size_t ReadObject(T* data, size_t offset = 0) const {
static_assert(std::is_trivially_copyable<T>::value, static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
"Data type must be trivially copyable.");
return Read(reinterpret_cast<u8*>(data), sizeof(T), offset); return Read(reinterpret_cast<u8*>(data), sizeof(T), offset);
} }
@ -94,9 +91,7 @@ struct VfsFile : NonCopyable {
// Returns the number of bytes (sizeof(T)*number_elements) written successfully. // Returns the number of bytes (sizeof(T)*number_elements) written successfully.
template <typename T> template <typename T>
size_t WriteArray(const T* data, size_t number_elements, size_t offset = 0) { size_t WriteArray(const T* data, size_t number_elements, size_t offset = 0) {
static_assert(std::is_trivially_copyable<T>::value, static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
"Data type must be trivially copyable.");
return Write(data, number_elements * sizeof(T), offset); return Write(data, number_elements * sizeof(T), offset);
} }
@ -104,8 +99,7 @@ struct VfsFile : NonCopyable {
// Returns the number of bytes written successfully. // Returns the number of bytes written successfully.
template <typename T> template <typename T>
size_t WriteBytes(const T* data, size_t size, size_t offset = 0) { size_t WriteBytes(const T* data, size_t size, size_t offset = 0) {
static_assert(std::is_trivially_copyable<T>::value, static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
"Data type must be trivially copyable.");
return Write(reinterpret_cast<const u8*>(data), size, offset); return Write(reinterpret_cast<const u8*>(data), size, offset);
} }
@ -113,8 +107,7 @@ struct VfsFile : NonCopyable {
// Returns the number of bytes written successfully (sizeof(T)). // Returns the number of bytes written successfully (sizeof(T)).
template <typename T> template <typename T>
size_t WriteObject(const T& data, size_t offset = 0) { size_t WriteObject(const T& data, size_t offset = 0) {
static_assert(std::is_trivially_copyable<T>::value, static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
"Data type must be trivially copyable.");
return Write(&data, sizeof(T), offset); return Write(&data, sizeof(T), offset);
} }