1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-04-18 05:36:45 +00:00

Use fixed size types for serialization

This commit is contained in:
elsid 2022-02-05 16:24:57 +01:00
parent 1b3acc85f7
commit 9584cb7ac2
No known key found for this signature in database
GPG key ID: B845CB9FEE18AB40
2 changed files with 7 additions and 5 deletions

View file

@ -5,6 +5,7 @@
#include <utility> #include <utility>
#include <type_traits> #include <type_traits>
#include <cstdint>
namespace SerializationTesting namespace SerializationTesting
{ {
@ -20,7 +21,7 @@ namespace SerializationTesting
} }
}; };
enum Enum enum Enum : std::int32_t
{ {
A, A,
B, B,
@ -30,7 +31,7 @@ namespace SerializationTesting
struct Composite struct Composite
{ {
short mFloatArray[3] = {0}; short mFloatArray[3] = {0};
std::vector<int> mIntVector; std::vector<std::int32_t> mIntVector;
std::vector<Enum> mEnumVector; std::vector<Enum> mEnumVector;
std::vector<Pod> mPodVector; std::vector<Pod> mPodVector;
std::size_t mPodDataSize = 0; std::size_t mPodDataSize = 0;

View file

@ -7,6 +7,7 @@
#include <type_traits> #include <type_traits>
#include <utility> #include <utility>
#include <vector> #include <vector>
#include <cstdint>
namespace Serialization namespace Serialization
{ {
@ -51,13 +52,13 @@ namespace Serialization
-> std::enable_if_t<isContiguousContainer<T>> -> std::enable_if_t<isContiguousContainer<T>>
{ {
if constexpr (mode == Mode::Write) if constexpr (mode == Mode::Write)
visitor(self(), value.size()); visitor(self(), static_cast<std::uint64_t>(value.size()));
else else
{ {
static_assert(mode == Mode::Read); static_assert(mode == Mode::Read);
std::size_t size = 0; std::uint64_t size = 0;
visitor(self(), size); visitor(self(), size);
value.resize(size); value.resize(static_cast<std::size_t>(size));
} }
self()(std::forward<Visitor>(visitor), value.data(), value.size()); self()(std::forward<Visitor>(visitor), value.data(), value.size());
} }