diff options
| author | Stefan Boberg <[email protected]> | 2023-11-21 13:42:53 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-11-21 13:42:53 +0100 |
| commit | 3369e345678aaa4199b76a099c750ed00754c548 (patch) | |
| tree | 6d202aeb7d312acddd6c9da58b8d1993a3adfffc /src/zencore/compactbinarybuilder.cpp | |
| parent | fix bad merge (diff) | |
| download | zen-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.cpp | 75 |
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(); |