aboutsummaryrefslogtreecommitdiffstats
path: root/tools/enum_parser/enum_serialization_runtime/enum_runtime.h
diff options
context:
space:
mode:
authorswarmer <swarmer@yandex-team.ru>2022-02-10 16:46:31 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:46:31 +0300
commit317da38588b7898a99fd9168571408123350012b (patch)
tree25eebc31526019ad39a6c1b13f492963d97ba439 /tools/enum_parser/enum_serialization_runtime/enum_runtime.h
parent3b2241461d41d41ba1a706b0750c4f0f55c344f6 (diff)
downloadydb-317da38588b7898a99fd9168571408123350012b.tar.gz
Restoring authorship annotation for <swarmer@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'tools/enum_parser/enum_serialization_runtime/enum_runtime.h')
-rw-r--r--tools/enum_parser/enum_serialization_runtime/enum_runtime.h232
1 files changed, 116 insertions, 116 deletions
diff --git a/tools/enum_parser/enum_serialization_runtime/enum_runtime.h b/tools/enum_parser/enum_serialization_runtime/enum_runtime.h
index f157d43109..905406a9d1 100644
--- a/tools/enum_parser/enum_serialization_runtime/enum_runtime.h
+++ b/tools/enum_parser/enum_serialization_runtime/enum_runtime.h
@@ -1,116 +1,116 @@
-#pragma once
-
-#include <util/generic/array_ref.h>
-#include <util/generic/strbuf.h>
-#include <util/generic/string.h>
-#include <util/generic/vector.h>
-#include <util/generic/serialized_enum.h>
-
-#include <utility>
-
-class IOutputStream;
-
-namespace NEnumSerializationRuntime {
- /// Stores all information about enumeration except its real type
- template <typename TEnumRepresentationType>
- class TEnumDescriptionBase {
- public:
- using TRepresentationType = TEnumRepresentationType;
-
- struct TEnumStringPair {
- const TRepresentationType Key;
- const TStringBuf Name;
- };
-
- /// Refers initialization data stored in constexpr-friendly format
- struct TInitializationData {
- const TArrayRef<const TEnumStringPair> NamesInitializer;
- const TArrayRef<const TEnumStringPair> ValuesInitializer;
- const TArrayRef<const TStringBuf> CppNamesInitializer;
- const TStringBuf CppNamesPrefix;
- const TStringBuf ClassName;
- };
-
- public:
- TEnumDescriptionBase(const TInitializationData& enumInitData);
- ~TEnumDescriptionBase();
-
- const TString& ToString(TRepresentationType key) const;
- std::pair<bool, TRepresentationType> TryFromString(const TStringBuf name) const;
- TRepresentationType FromString(const TStringBuf name) const;
- void Out(IOutputStream* os, const TRepresentationType key) const;
-
- const TString& AllEnumNames() const noexcept {
- return AllNames;
- }
-
- const TVector<TString>& AllEnumCppNames() const noexcept {
- return AllCppNames;
- }
-
- const TMap<TRepresentationType, TString>& TypelessEnumNames() const noexcept {
- return Names;
- }
-
- const TVector<TRepresentationType>& TypelessEnumValues() const noexcept {
- return AllValues;
- }
-
- private:
- TMap<TRepresentationType, TString> Names;
- TMap<TString, TRepresentationType> Values;
- TString AllNames;
- TVector<TString> AllCppNames;
- TString ClassName;
- TVector<TRepresentationType> AllValues;
- };
-
- /// Wraps TEnumDescriptionBase and performs on-demand casts
- template <typename EEnum, typename TEnumRepresentationType = typename NDetail::TSelectEnumRepresentationType<EEnum>::TType>
- class TEnumDescription: public NDetail::TMappedViewBase<EEnum, TEnumRepresentationType>, private TEnumDescriptionBase<TEnumRepresentationType> {
- public:
- using TBase = TEnumDescriptionBase<TEnumRepresentationType>;
- using TCast = NDetail::TMappedViewBase<EEnum, TEnumRepresentationType>;
- using TBase::AllEnumCppNames;
- using TBase::AllEnumNames;
- using typename TBase::TEnumStringPair;
- using typename TBase::TRepresentationType;
- using typename TBase::TInitializationData;
-
- public:
- using TBase::TBase;
-
- const TString& ToString(const EEnum key) const {
- return TBase::ToString(TCast::CastToRepresentationType(key));
- }
-
- bool FromString(const TStringBuf name, EEnum& ret) const {
- const auto findResult = TBase::TryFromString(name);
- if (findResult.first) {
- ret = TCast::CastFromRepresentationType(findResult.second);
- return true;
- }
- return false;
- }
-
- EEnum FromString(const TStringBuf name) const {
- return TCast::CastFromRepresentationType(TBase::FromString(name));
- }
-
- TMappedDictView<EEnum, TString> EnumNames() const noexcept {
- return {TBase::TypelessEnumNames()};
- }
-
- TMappedArrayView<EEnum> AllEnumValues() const noexcept {
- return {TBase::TypelessEnumValues()};
- }
-
- void Out(IOutputStream* os, const EEnum key) const {
- TBase::Out(os, TCast::CastToRepresentationType(key));
- }
-
- static constexpr TEnumStringPair EnumStringPair(const EEnum key, const TStringBuf name) noexcept {
- return {TCast::CastToRepresentationType(key), name};
- }
- };
-}
+#pragma once
+
+#include <util/generic/array_ref.h>
+#include <util/generic/strbuf.h>
+#include <util/generic/string.h>
+#include <util/generic/vector.h>
+#include <util/generic/serialized_enum.h>
+
+#include <utility>
+
+class IOutputStream;
+
+namespace NEnumSerializationRuntime {
+ /// Stores all information about enumeration except its real type
+ template <typename TEnumRepresentationType>
+ class TEnumDescriptionBase {
+ public:
+ using TRepresentationType = TEnumRepresentationType;
+
+ struct TEnumStringPair {
+ const TRepresentationType Key;
+ const TStringBuf Name;
+ };
+
+ /// Refers initialization data stored in constexpr-friendly format
+ struct TInitializationData {
+ const TArrayRef<const TEnumStringPair> NamesInitializer;
+ const TArrayRef<const TEnumStringPair> ValuesInitializer;
+ const TArrayRef<const TStringBuf> CppNamesInitializer;
+ const TStringBuf CppNamesPrefix;
+ const TStringBuf ClassName;
+ };
+
+ public:
+ TEnumDescriptionBase(const TInitializationData& enumInitData);
+ ~TEnumDescriptionBase();
+
+ const TString& ToString(TRepresentationType key) const;
+ std::pair<bool, TRepresentationType> TryFromString(const TStringBuf name) const;
+ TRepresentationType FromString(const TStringBuf name) const;
+ void Out(IOutputStream* os, const TRepresentationType key) const;
+
+ const TString& AllEnumNames() const noexcept {
+ return AllNames;
+ }
+
+ const TVector<TString>& AllEnumCppNames() const noexcept {
+ return AllCppNames;
+ }
+
+ const TMap<TRepresentationType, TString>& TypelessEnumNames() const noexcept {
+ return Names;
+ }
+
+ const TVector<TRepresentationType>& TypelessEnumValues() const noexcept {
+ return AllValues;
+ }
+
+ private:
+ TMap<TRepresentationType, TString> Names;
+ TMap<TString, TRepresentationType> Values;
+ TString AllNames;
+ TVector<TString> AllCppNames;
+ TString ClassName;
+ TVector<TRepresentationType> AllValues;
+ };
+
+ /// Wraps TEnumDescriptionBase and performs on-demand casts
+ template <typename EEnum, typename TEnumRepresentationType = typename NDetail::TSelectEnumRepresentationType<EEnum>::TType>
+ class TEnumDescription: public NDetail::TMappedViewBase<EEnum, TEnumRepresentationType>, private TEnumDescriptionBase<TEnumRepresentationType> {
+ public:
+ using TBase = TEnumDescriptionBase<TEnumRepresentationType>;
+ using TCast = NDetail::TMappedViewBase<EEnum, TEnumRepresentationType>;
+ using TBase::AllEnumCppNames;
+ using TBase::AllEnumNames;
+ using typename TBase::TEnumStringPair;
+ using typename TBase::TRepresentationType;
+ using typename TBase::TInitializationData;
+
+ public:
+ using TBase::TBase;
+
+ const TString& ToString(const EEnum key) const {
+ return TBase::ToString(TCast::CastToRepresentationType(key));
+ }
+
+ bool FromString(const TStringBuf name, EEnum& ret) const {
+ const auto findResult = TBase::TryFromString(name);
+ if (findResult.first) {
+ ret = TCast::CastFromRepresentationType(findResult.second);
+ return true;
+ }
+ return false;
+ }
+
+ EEnum FromString(const TStringBuf name) const {
+ return TCast::CastFromRepresentationType(TBase::FromString(name));
+ }
+
+ TMappedDictView<EEnum, TString> EnumNames() const noexcept {
+ return {TBase::TypelessEnumNames()};
+ }
+
+ TMappedArrayView<EEnum> AllEnumValues() const noexcept {
+ return {TBase::TypelessEnumValues()};
+ }
+
+ void Out(IOutputStream* os, const EEnum key) const {
+ TBase::Out(os, TCast::CastToRepresentationType(key));
+ }
+
+ static constexpr TEnumStringPair EnumStringPair(const EEnum key, const TStringBuf name) noexcept {
+ return {TCast::CastToRepresentationType(key), name};
+ }
+ };
+}