From 827cf75ace1e3702bffa62324a6f06a2386c5f63 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Mon, 15 May 2023 18:06:52 +0200 Subject: implemented string conversion for CbValidateError enum --- src/zencore/compactbinaryvalidation.cpp | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'src/zencore/compactbinaryvalidation.cpp') 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 -- cgit v1.2.3