diff options
author | Alexander Smirnov <alex@ydb.tech> | 2024-10-28 20:34:11 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2024-10-28 20:34:11 +0000 |
commit | ef9875b11a33dbd25e92bc6b4cf692c18c9ba0ce (patch) | |
tree | 1f2fd4e4d9e585da35937b42fbda5f854af04728 /library/cpp/yt/string/enum.cpp | |
parent | 37ae9cc90160b53eb0e22021c47b3996a01cd656 (diff) | |
parent | e3c8507a3d1cb090278f211232ddfde3bedc54d4 (diff) | |
download | ydb-ef9875b11a33dbd25e92bc6b4cf692c18c9ba0ce.tar.gz |
Merge branch 'rightlib' into mergelibs-241028-2033
Diffstat (limited to 'library/cpp/yt/string/enum.cpp')
-rw-r--r-- | library/cpp/yt/string/enum.cpp | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/library/cpp/yt/string/enum.cpp b/library/cpp/yt/string/enum.cpp index e61b813fd2..935c3e6e3e 100644 --- a/library/cpp/yt/string/enum.cpp +++ b/library/cpp/yt/string/enum.cpp @@ -6,13 +6,22 @@ namespace NYT { //////////////////////////////////////////////////////////////////////////////// -template <bool failOnError> +namespace NDetail { + +void ThrowMalformedEnumValueException(TStringBuf typeName, TStringBuf value) +{ + throw TSimpleException(Format("Error parsing %v value %Qv", + typeName, + value)); +} + +template <bool ThrowOnError> std::optional<TString> DecodeEnumValueImpl(TStringBuf value) { auto camelValue = UnderscoreCaseToCamelCase(value); auto underscoreValue = CamelCaseToUnderscoreCase(camelValue); if (value != underscoreValue) { - if constexpr (failOnError) { + if constexpr (ThrowOnError) { throw TSimpleException(Format("Enum value %Qv is not in a proper underscore case; did you mean %Qv?", value, underscoreValue)); @@ -23,14 +32,16 @@ std::optional<TString> DecodeEnumValueImpl(TStringBuf value) return camelValue; } +} // namespace NDetail + std::optional<TString> TryDecodeEnumValue(TStringBuf value) { - return DecodeEnumValueImpl<false>(value); + return NDetail::DecodeEnumValueImpl<false>(value); } TString DecodeEnumValue(TStringBuf value) { - auto decodedValue = DecodeEnumValueImpl<true>(value); + auto decodedValue = NDetail::DecodeEnumValueImpl<true>(value); YT_VERIFY(decodedValue); return *decodedValue; } @@ -40,22 +51,6 @@ TString EncodeEnumValue(TStringBuf value) return CamelCaseToUnderscoreCase(value); } -namespace NDetail { - -void ThrowMalformedEnumValueException(TStringBuf typeName, TStringBuf value) -{ - throw TSimpleException(Format("Error parsing %v value %Qv", - typeName, - value)); -} - -void FormatUnknownEnumValue(TStringBuilderBase* builder, TStringBuf name, i64 value) -{ - builder->AppendFormat("%v(%v)", name, value); -} - -} // namespace NDetail - //////////////////////////////////////////////////////////////////////////////// } // namespace NYT |