aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/misc/enum-inl.h
diff options
context:
space:
mode:
authorbulatman <bulatman@yandex-team.com>2023-03-10 09:57:16 +0300
committerbulatman <bulatman@yandex-team.com>2023-03-10 09:57:16 +0300
commit59c758d9fa32f1dc467824707fb8cdf91e8bb731 (patch)
tree778dfe65cb05879b49595f4f4dc1ba43e8df7ffb /library/cpp/yt/misc/enum-inl.h
parent82ad7fa64a7e511763a6f6a0278d4eed1b01b96e (diff)
downloadydb-59c758d9fa32f1dc467824707fb8cdf91e8bb731.tar.gz
YT: Allow to define enum with custom string represenation
Diffstat (limited to 'library/cpp/yt/misc/enum-inl.h')
-rw-r--r--library/cpp/yt/misc/enum-inl.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/library/cpp/yt/misc/enum-inl.h b/library/cpp/yt/misc/enum-inl.h
index 86515e8a4e..18a78621a9 100644
--- a/library/cpp/yt/misc/enum-inl.h
+++ b/library/cpp/yt/misc/enum-inl.h
@@ -140,6 +140,22 @@ static constexpr bool AreValuesDistinct(const TValues& values)
)(item)
#define ENUM__GET_DOMAIN_NAMES_ITEM_SEQ(seq) \
+ PP_IF( \
+ ENUM__ITEM_SEQ_HAS_DOMAIN_NAME(seq), \
+ ENUM__GET_DOMAIN_NAMES_ITEM_SEQ_CUSTOM, \
+ ENUM__GET_DOMAIN_NAMES_ITEM_SEQ_AUTO \
+ )(seq)
+
+#define ENUM__ITEM_SEQ_HAS_DOMAIN_NAME(seq) \
+ PP_CONCAT(ENUM__ITEM_SEQ_HAS_DOMAIN_NAME_, PP_COUNT(seq))
+
+#define ENUM__ITEM_SEQ_HAS_DOMAIN_NAME_2 PP_FALSE
+#define ENUM__ITEM_SEQ_HAS_DOMAIN_NAME_3 PP_TRUE
+
+#define ENUM__GET_DOMAIN_NAMES_ITEM_SEQ_CUSTOM(seq) \
+ TStringBuf(PP_ELEMENT(seq, 2)),
+
+#define ENUM__GET_DOMAIN_NAMES_ITEM_SEQ_AUTO(seq) \
ENUM__GET_DOMAIN_NAMES_ITEM_ATOMIC(PP_ELEMENT(seq, 0))
#define ENUM__GET_DOMAIN_NAMES_ITEM_ATOMIC(item) \