diff options
Diffstat (limited to 'src/zencore')
| -rw-r--r-- | src/zencore/compactbinaryvalidation.cpp | 42 | ||||
| -rw-r--r-- | src/zencore/include/zencore/compactbinaryvalidation.h | 2 |
2 files changed, 44 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 diff --git a/src/zencore/include/zencore/compactbinaryvalidation.h b/src/zencore/include/zencore/compactbinaryvalidation.h index b1fab9572..4f1bdbb37 100644 --- a/src/zencore/include/zencore/compactbinaryvalidation.h +++ b/src/zencore/include/zencore/compactbinaryvalidation.h @@ -133,6 +133,8 @@ enum class CbValidateError : uint32_t ENUM_CLASS_FLAGS(CbValidateError); +std::string ToString(const CbValidateError Error); + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** |