[Serialization] Fix bug when serializing an object or an array

This commit is contained in:
SweetId 2024-03-10 16:35:45 -04:00
parent a0a4f63847
commit a147ef411a
1 changed files with 38 additions and 22 deletions

View File

@ -18,10 +18,10 @@ namespace Nz
if (!context.PushObject(name)) if (!context.PushObject(name))
return false; return false;
if (!Serialize(context, value, TypeTag<std::decay_t<T>>())) bool bRes = Serialize(context, value, TypeTag<std::decay_t<T>>());
return false;
return context.PopObject(); context.PopObject();
return bRes;
} }
/*! /*!
@ -64,13 +64,15 @@ namespace Nz
if (!context.PushArray(name)) if (!context.PushArray(name))
return false; return false;
bool bRes = true;
for (size_t i = 0; i < N; ++i) for (size_t i = 0; i < N; ++i)
{ {
if (!Serialize(context, "", values[i])) if (!Serialize(context, "", values[i]))
return false; bRes = false;
} }
return context.PopArray(); context.PopArray();
return bRes;
} }
template<typename T, size_t N> template<typename T, size_t N>
@ -79,13 +81,15 @@ namespace Nz
if (!context.PushArray(name)) if (!context.PushArray(name))
return false; return false;
bool bRes = true;
for (auto&& value : values) for (auto&& value : values)
{ {
if (!Serialize(context, "", value)) if (!Serialize(context, "", value))
return false; bRes = false;
} }
return context.PopArray(); context.PopArray();
return bRes;
} }
template<typename T> template<typename T>
@ -94,13 +98,15 @@ namespace Nz
if (!context.PushArray(name)) if (!context.PushArray(name))
return false; return false;
bool bRes = true;
for (auto&& value : values) for (auto&& value : values)
{ {
if (!Serialize(context, "", value)) if (!Serialize(context, "", value))
return false; bRes = false;
} }
return context.PopArray(); context.PopArray();
return bRes;
} }
template<typename E, typename T> template<typename E, typename T>
@ -109,13 +115,15 @@ namespace Nz
if (!context.PushArray(name)) if (!context.PushArray(name))
return false; return false;
bool bRes = true;
for (auto&& value : values) for (auto&& value : values)
{ {
if (!Serialize(context, "", value)) if (!Serialize(context, "", value))
return false; bRes = false;
} }
return context.PopArray(); context.PopArray();
return bRes;
} }
/*! /*!
@ -160,10 +168,10 @@ namespace Nz
if (!context.PushObject(name)) if (!context.PushObject(name))
return false; return false;
if (!Unserialize(context, value, TypeTag<T>())) bool bRes = Unserialize(context, value, TypeTag<T>());
return false;
return context.PopObject(); context.PopObject();
return bRes;
} }
/*! /*!
@ -209,13 +217,15 @@ namespace Nz
if (!context.PushArray(name)) if (!context.PushArray(name))
return false; return false;
bool bRes = true;
for (size_t i = 0; i < N; ++i) for (size_t i = 0; i < N; ++i)
{ {
if (!Unserialize(context, "", &(*values[i]))) if (!Unserialize(context, "", &(*values[i])))
return false; bRes = false;
} }
return context.PopArray(); context.PopArray();
return bRes;
} }
template<typename T, size_t N> template<typename T, size_t N>
@ -224,13 +234,15 @@ namespace Nz
if (!context.PushArray(name)) if (!context.PushArray(name))
return false; return false;
bool bRes = true;
for (auto&& value : *values) for (auto&& value : *values)
{ {
if (!Unserialize(context, "", &value)) if (!Unserialize(context, "", &value))
return false; bRes = false;
} }
return context.PopArray(); context.PopArray();
return bRes;
} }
template<typename T> template<typename T>
@ -239,13 +251,15 @@ namespace Nz
if (!context.PushArray(name)) if (!context.PushArray(name))
return false; return false;
bool bRes = true;
for (auto&& value : *values) for (auto&& value : *values)
{ {
if (!Unserialize(context, "", &value)) if (!Unserialize(context, "", &value))
return false; bRes = false;
} }
return context.PopArray(); context.PopArray();
return bRes;
} }
template<typename E, typename T> template<typename E, typename T>
@ -254,13 +268,15 @@ namespace Nz
if (!context.PushArray(name)) if (!context.PushArray(name))
return false; return false;
bool bRes = true;
for (auto&& value : *values) for (auto&& value : *values)
{ {
if (!Unserialize(context, "", &value)) if (!Unserialize(context, "", &value))
return false; bRes = false;
} }
return context.PopArray(); context.PopArray();
return bRes;
} }
/*! /*!