diff options
author | bulatman <bulatman@yandex-team.com> | 2023-03-10 09:57:16 +0300 |
---|---|---|
committer | bulatman <bulatman@yandex-team.com> | 2023-03-10 09:57:16 +0300 |
commit | 59c758d9fa32f1dc467824707fb8cdf91e8bb731 (patch) | |
tree | 778dfe65cb05879b49595f4f4dc1ba43e8df7ffb /library/cpp/yt/misc/enum-inl.h | |
parent | 82ad7fa64a7e511763a6f6a0278d4eed1b01b96e (diff) | |
download | ydb-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.h | 16 |
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) \ |