diff options
| author | Stefan Boberg <[email protected]> | 2023-05-15 18:06:52 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2023-05-15 18:06:52 +0200 |
| commit | 827cf75ace1e3702bffa62324a6f06a2386c5f63 (patch) | |
| tree | 5820e3907d66b5ba541dd5303387b24fff5def30 /src | |
| parent | v0.2.11 (diff) | |
| download | zen-827cf75ace1e3702bffa62324a6f06a2386c5f63.tar.xz zen-827cf75ace1e3702bffa62324a6f06a2386c5f63.zip | |
implemented string conversion for CbValidateError enum
Diffstat (limited to 'src')
| -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); + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** |