diff options
| author | babenko <[email protected]> | 2024-10-26 23:13:30 +0300 |
|---|---|---|
| committer | babenko <[email protected]> | 2024-10-26 23:30:14 +0300 |
| commit | 41d598c624442bf6918407466dac3316b8277347 (patch) | |
| tree | 5895b8823d4f887e1e5ab4f99cbac991dca5ca17 /library/cpp/yt/string/enum.cpp | |
| parent | ddabd4ddff87ac13bfc87ef02af352216a0f4e13 (diff) | |
YT-22885: DEFINE_ENUM_UNKNOWN_VALUE, string-related conversions
commit_hash:14c7e42422af750383f04855b4a7ea6b267b92d2
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 e61b813fd21..935c3e6e3ef 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 |
