summaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/string/enum.cpp
diff options
context:
space:
mode:
authorbabenko <[email protected]>2024-10-26 23:13:30 +0300
committerbabenko <[email protected]>2024-10-26 23:30:14 +0300
commit41d598c624442bf6918407466dac3316b8277347 (patch)
tree5895b8823d4f887e1e5ab4f99cbac991dca5ca17 /library/cpp/yt/string/enum.cpp
parentddabd4ddff87ac13bfc87ef02af352216a0f4e13 (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.cpp35
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