diff options
Diffstat (limited to 'src/zencore/compactbinaryvalidation.cpp')
| -rw-r--r-- | src/zencore/compactbinaryvalidation.cpp | 42 |
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 |