aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/compactbinarybuilder.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-11-21 13:42:53 +0100
committerGitHub <[email protected]>2023-11-21 13:42:53 +0100
commit3369e345678aaa4199b76a099c750ed00754c548 (patch)
tree6d202aeb7d312acddd6c9da58b8d1993a3adfffc /src/zencore/compactbinarybuilder.cpp
parentfix bad merge (diff)
downloadzen-3369e345678aaa4199b76a099c750ed00754c548.tar.xz
zen-3369e345678aaa4199b76a099c750ed00754c548.zip
basic ZEN_ASSERT_FORMAT implementation (#556)
includes porting some compact binary builder code to use it since it had vestiges of the UE-side asserts
Diffstat (limited to 'src/zencore/compactbinarybuilder.cpp')
-rw-r--r--src/zencore/compactbinarybuilder.cpp75
1 files changed, 34 insertions, 41 deletions
diff --git a/src/zencore/compactbinarybuilder.cpp b/src/zencore/compactbinarybuilder.cpp
index d4ccd434d..5c08d2e6e 100644
--- a/src/zencore/compactbinarybuilder.cpp
+++ b/src/zencore/compactbinarybuilder.cpp
@@ -2,6 +2,7 @@
#include "zencore/compactbinarybuilder.h"
+#include <zencore/assertfmt.h>
#include <zencore/compactbinarypackage.h>
#include <zencore/compactbinaryvalidation.h>
#include <zencore/endian.h>
@@ -128,13 +129,10 @@ CbWriter::Save()
CbFieldViewIterator
CbWriter::Save(const MutableMemoryView Buffer)
{
- ZEN_ASSERT(States.size() == 1 && States.back().Flags == StateFlags::None);
- // TEXT("It is invalid to save while there are incomplete write operations."));
- ZEN_ASSERT(Data.size() > 0); // TEXT("It is invalid to save when nothing has been written."));
- ZEN_ASSERT(Buffer.GetSize() == Data.size());
- // TEXT("Buffer is %" UINT64_FMT " bytes but %" INT64_FMT " is required."),
- // Buffer.GetSize(),
- // Data.Num());
+ ZEN_ASSERT_FORMAT(States.size() == 1 && States.back().Flags == StateFlags::None,
+ "It is invalid to save while there are incomplete write operations.");
+ ZEN_ASSERT_FORMAT(Data.size() > 0, "It is invalid to save when nothing has been written.");
+ ZEN_ASSERT_FORMAT(Buffer.GetSize() == Data.size(), "Buffer is {} bytes but {} is required.", Buffer.GetSize(), Data.size());
memcpy(Buffer.GetData(), Data.data(), Data.size());
return CbFieldViewIterator::MakeRange(Buffer);
}
@@ -142,9 +140,9 @@ CbWriter::Save(const MutableMemoryView Buffer)
void
CbWriter::Save(BinaryWriter& Writer)
{
- ZEN_ASSERT(States.size() == 1 && States.back().Flags == StateFlags::None);
- // TEXT("It is invalid to save while there are incomplete write operations."));
- ZEN_ASSERT(Data.size() > 0); // TEXT("It is invalid to save when nothing has been written."));
+ ZEN_ASSERT_FORMAT(States.size() == 1 && States.back().Flags == StateFlags::None,
+ "It is invalid to save while there are incomplete write operations.");
+ ZEN_ASSERT_FORMAT(Data.size() > 0, "It is invalid to save when nothing has been written.");
Writer.Write(Data.data(), Data.size());
}
@@ -166,10 +164,9 @@ CbWriter::BeginField()
}
else
{
- ZEN_ASSERT((State.Flags & StateFlags::Name) == StateFlags::Name);
- // TEXT("A new field cannot be written until the previous field '%.*hs' is finished."),
- // GetActiveName().Len(),
- // GetActiveName().GetData());
+ ZEN_ASSERT_FORMAT((State.Flags & StateFlags::Name) == StateFlags::Name,
+ "A new field cannot be written until the previous field '{}' is finished.",
+ GetActiveName());
}
}
@@ -184,8 +181,8 @@ CbWriter::EndField(CbFieldType Type)
}
else
{
- ZEN_ASSERT((State.Flags & StateFlags::Object) == StateFlags::None);
- // TEXT("It is invalid to write an object field without a unique non-empty name."));
+ ZEN_ASSERT((State.Flags & StateFlags::Object) == StateFlags::None,
+ "It is invalid to write an object field without a unique non-empty name.");
}
if (State.Count == 0)
@@ -207,21 +204,18 @@ CbWriter&
CbWriter::SetName(const std::string_view Name)
{
WriterState& State = States.back();
- ZEN_ASSERT((State.Flags & StateFlags::Array) != StateFlags::Array);
- // TEXT("It is invalid to write a name for an array field. Name '%.*hs'"),
- // Name.Len(),
- // Name.GetData());
- ZEN_ASSERT(!Name.empty());
- // TEXT("%s"),
- //(State.Flags & EStateFlags::Object) == EStateFlags::Object
- // ? TEXT("It is invalid to write an empty name for an object field. Specify a unique non-empty name.")
- // : TEXT("It is invalid to write an empty name for a top-level field. Specify a name or avoid this call."));
- ZEN_ASSERT((State.Flags & (StateFlags::Name | StateFlags::Field)) == StateFlags::None);
- // TEXT("A new field '%.*hs' cannot be written until the previous field '%.*hs' is finished."),
- // Name.Len(),
- // Name.GetData(),
- // GetActiveName().Len(),
- // GetActiveName().GetData());
+ ZEN_ASSERT_FORMAT((State.Flags & StateFlags::Array) != StateFlags::Array,
+ "It is invalid to write a name for an array field. Name '{}'",
+ Name);
+ ZEN_ASSERT_FORMAT(!Name.empty(),
+ "{}",
+ (State.Flags & StateFlags::Object) == StateFlags::Object
+ ? "It is invalid to write an empty name for an object field. Specify a unique non-empty name."
+ : "It is invalid to write an empty name for a top-level field. Specify a name or avoid this call.");
+ ZEN_ASSERT_FORMAT((State.Flags & (StateFlags::Name | StateFlags::Field)) == StateFlags::None,
+ "A new field '{}' cannot be written until the previous field '{}' is finished.",
+ Name,
+ GetActiveName());
BeginField();
State.Flags |= StateFlags::Name;
@@ -296,7 +290,7 @@ CbWriter::MakeFieldsUniform(const int64_t FieldBeginOffset, const int64_t FieldE
void
CbWriter::AddField(const CbFieldView& Value)
{
- ZEN_ASSERT(Value.HasValue()); // , TEXT("It is invalid to write a field with no value."));
+ ZEN_ASSERT_FORMAT(Value.HasValue(), "It is invalid to write a field with no value.");
BeginField();
EndField(AppendCompactBinary(Value, Data));
}
@@ -318,11 +312,10 @@ CbWriter::BeginObject()
void
CbWriter::EndObject()
{
- ZEN_ASSERT(States.size() > 1 && (States.back().Flags & StateFlags::Object) == StateFlags::Object);
-
- // TEXT("It is invalid to end an object when an object is not at the top of the stack."));
- ZEN_ASSERT((States.back().Flags & StateFlags::Field) == StateFlags::None);
- // TEXT("It is invalid to end an object until the previous field is finished."));
+ ZEN_ASSERT_FORMAT(States.size() > 1 && (States.back().Flags & StateFlags::Object) == StateFlags::Object,
+ "It is invalid to end an object when an object is not at the top of the stack.");
+ ZEN_ASSERT_FORMAT((States.back().Flags & StateFlags::Field) == StateFlags::None,
+ "It is invalid to end an object until the previous field is finished.");
const bool bUniform = IsUniformType(States.back().UniformType);
const uint64_t Count = States.back().Count;
@@ -378,10 +371,10 @@ CbWriter::BeginArray()
void
CbWriter::EndArray()
{
- ZEN_ASSERT(States.size() > 1 && (States.back().Flags & StateFlags::Array) == StateFlags::Array);
- // TEXT("Invalid attempt to end an array when an array is not at the top of the stack."));
- ZEN_ASSERT((States.back().Flags & StateFlags::Field) == StateFlags::None);
- // TEXT("It is invalid to end an array until the previous field is finished."));
+ ZEN_ASSERT_FORMAT(States.size() > 1 && (States.back().Flags & StateFlags::Array) == StateFlags::Array,
+ "Invalid attempt to end an array when an array is not at the top of the stack.");
+ ZEN_ASSERT_FORMAT((States.back().Flags & StateFlags::Field) == StateFlags::None,
+ "It is invalid to end an array until the previous field is finished.");
const bool bUniform = IsUniformType(States.back().UniformType);
const uint64_t Count = States.back().Count;
States.pop_back();