aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/compactbinaryvalidation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zencore/compactbinaryvalidation.cpp')
-rw-r--r--src/zencore/compactbinaryvalidation.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/zencore/compactbinaryvalidation.cpp b/src/zencore/compactbinaryvalidation.cpp
index 02148d96a..462978f63 100644
--- a/src/zencore/compactbinaryvalidation.cpp
+++ b/src/zencore/compactbinaryvalidation.cpp
@@ -647,6 +647,48 @@ ValidateCompactBinaryPackage(MemoryView View, CbValidateMode Mode)
return Error;
}
+std::string
+ToString(const CbValidateError Error)
+{
+ using namespace std::literals;
+
+ ExtendableStringBuilder<128> Out;
+
+ auto AppendFlag = [&, IsFirst = false](std::string_view FlagString) {
+ if (!IsFirst)
+ Out.Append('|');
+ Out.Append(FlagString);
+ };
+
+#define _ENUM_CASE(V) \
+ if (EnumHasAllFlags(Error, CbValidateError::V)) \
+ { \
+ AppendFlag(#V##sv); \
+ }
+
+ _ENUM_CASE(OutOfBounds);
+ _ENUM_CASE(InvalidType);
+ _ENUM_CASE(DuplicateName);
+ _ENUM_CASE(MissingName);
+ _ENUM_CASE(ArrayName);
+ _ENUM_CASE(InvalidString);
+ _ENUM_CASE(InvalidInteger);
+ _ENUM_CASE(InvalidFloat);
+ _ENUM_CASE(NonUniformObject);
+ _ENUM_CASE(NonUniformArray);
+ _ENUM_CASE(Padding);
+ _ENUM_CASE(InvalidPackageFormat);
+ _ENUM_CASE(InvalidPackageHash);
+ _ENUM_CASE(DuplicateAttachments);
+ _ENUM_CASE(MultiplePackageObjects);
+ _ENUM_CASE(NullPackageObject);
+ _ENUM_CASE(NullPackageAttachment);
+
+#undef _ENUM_CASE
+
+ return "Error";
+}
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#if ZEN_WITH_TESTS