diff options
author | mvel <mvel@yandex-team.ru> | 2022-02-10 16:45:41 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:41 +0300 |
commit | 43f5a35593ebc9f6bcea619bb170394ea7ae468e (patch) | |
tree | e98df59de24d2ef7c77baed9f41e4875a2fef972 /util/draft/enum.h | |
parent | bd30392c4cc92487950adc375c07adf52da1d592 (diff) | |
download | ydb-43f5a35593ebc9f6bcea619bb170394ea7ae468e.tar.gz |
Restoring authorship annotation for <mvel@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'util/draft/enum.h')
-rw-r--r-- | util/draft/enum.h | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/util/draft/enum.h b/util/draft/enum.h index 9778cbc590..18002b7df2 100644 --- a/util/draft/enum.h +++ b/util/draft/enum.h @@ -27,7 +27,7 @@ const V* FindEnumFromStringImpl(K1 key, const std::pair<K2, V>* entries, size_t return nullptr; } -// special version for const char* +// special version for const char* template <class V> const V* FindEnumFromStringImpl(const char* key, const std::pair<const char*, V>* entries, size_t arraySize) { for (size_t i = 0; i < arraySize; i++) @@ -39,28 +39,28 @@ const V* FindEnumFromStringImpl(const char* key, const std::pair<const char*, V> template <class K, class V> TString PrintEnumItemsImpl(const std::pair<K, V>* entries, size_t arraySize) { TString result; - TStringOutput out(result); - for (size_t i = 0; i < arraySize; i++) - out << (i ? ", " : "") << "'" << entries[i].first << "'"; - return result; -} - -// special version for const char* + TStringOutput out(result); + for (size_t i = 0; i < arraySize; i++) + out << (i ? ", " : "") << "'" << entries[i].first << "'"; + return result; +} + +// special version for const char* template <class V> TString PrintEnumItemsImpl(const std::pair<const char*, V>* entries, size_t arraySize) { TString result; - TStringOutput out(result); - for (size_t i = 0; i < arraySize; i++) + TStringOutput out(result); + for (size_t i = 0; i < arraySize; i++) out << (i ? ", " : "") << "'" << (entries[i].first ? entries[i].first : "<null>") << "'"; - return result; -} - + return result; +} + template <class K1, class K2, class V> const V* EnumFromStringImpl(K1 key, const std::pair<K2, V>* entries, size_t arraySize) { const V* res = FindEnumFromStringImpl(key, entries, arraySize); if (res) return res; - + ythrow TEnumNotFoundException() << "Key '" << key << "' not found in enum. Valid options are: " << PrintEnumItemsImpl(entries, arraySize) << ". "; } @@ -69,13 +69,13 @@ const K* EnumToStringImpl(V value, const std::pair<K, V>* entries, size_t arrayS for (size_t i = 0; i < arraySize; i++) if (entries[i].second == value) return &entries[i].first; - - TEnumNotFoundException exc; - exc << "Value '" << int(value) << "' not found in enum. Valid values are: "; - for (size_t i = 0; i < arraySize; i++) - exc << (i ? ", " : "") << int(entries[i].second); - exc << ". "; - ythrow exc; + + TEnumNotFoundException exc; + exc << "Value '" << int(value) << "' not found in enum. Valid values are: "; + for (size_t i = 0; i < arraySize; i++) + exc << (i ? ", " : "") << int(entries[i].second); + exc << ". "; + ythrow exc; } /////////////////////////////////// |