diff options
author | babenko <babenko@yandex-team.com> | 2024-09-06 12:06:55 +0300 |
---|---|---|
committer | babenko <babenko@yandex-team.com> | 2024-09-06 13:06:00 +0300 |
commit | 7ce23f89bc06d15aac55a0ee6b00ebda7fcf235c (patch) | |
tree | e3b1742a64a4efd7df93c0369263a915f288e320 /yt | |
parent | 824a6bd148168cb67813731f8eb3e67c5fc03620 (diff) | |
download | ydb-7ce23f89bc06d15aac55a0ee6b00ebda7fcf235c.tar.gz |
Introduce PHOENIX_REGISTER_FIELD
c521034e724d6ed4145a1cfa5c46b231589c9013
Diffstat (limited to 'yt')
-rw-r--r-- | yt/yt/client/chunk_client/chunk_replica-inl.h | 5 | ||||
-rw-r--r-- | yt/yt/client/chunk_client/chunk_replica.cpp | 5 | ||||
-rw-r--r-- | yt/yt/core/logging/logger_owner.cpp | 2 | ||||
-rw-r--r-- | yt/yt/core/misc/unittests/phoenix_compatibility_ut.cpp | 24 | ||||
-rw-r--r-- | yt/yt/core/phoenix/type_def-inl.h | 4 | ||||
-rw-r--r-- | yt/yt/core/phoenix/type_def.h | 3 | ||||
-rw-r--r-- | yt/yt/core/phoenix/unittests/phoenix_ut.cpp | 82 |
7 files changed, 66 insertions, 59 deletions
diff --git a/yt/yt/client/chunk_client/chunk_replica-inl.h b/yt/yt/client/chunk_client/chunk_replica-inl.h index aa301e5e86..3e302bf95c 100644 --- a/yt/yt/client/chunk_client/chunk_replica-inl.h +++ b/yt/yt/client/chunk_client/chunk_replica-inl.h @@ -140,11 +140,6 @@ Y_FORCE_INLINE int TChunkReplica::GetReplicaIndex() const return (Value_ & 0x1f000000) >> 24; } -Y_FORCE_INLINE void TChunkReplica::RegisterMetadata(auto&& registrar) -{ - registrar.template Field<1, &TThis::Value_>("value")(); -} - Y_FORCE_INLINE void ToProto(ui32* value, TChunkReplica replica) { *value = replica.Value_; diff --git a/yt/yt/client/chunk_client/chunk_replica.cpp b/yt/yt/client/chunk_client/chunk_replica.cpp index a3b034c886..41e43d299f 100644 --- a/yt/yt/client/chunk_client/chunk_replica.cpp +++ b/yt/yt/client/chunk_client/chunk_replica.cpp @@ -19,6 +19,11 @@ using namespace NObjectClient; //////////////////////////////////////////////////////////////////////////////// +void TChunkReplica::RegisterMetadata(auto&& registrar) +{ + PHOENIX_REGISTER_FIELD(1, Value_)(); +} + PHOENIX_DEFINE_TYPE(TChunkReplica); //////////////////////////////////////////////////////////////////////////////// diff --git a/yt/yt/core/logging/logger_owner.cpp b/yt/yt/core/logging/logger_owner.cpp index 09beec6c24..b9a571f9dc 100644 --- a/yt/yt/core/logging/logger_owner.cpp +++ b/yt/yt/core/logging/logger_owner.cpp @@ -8,7 +8,7 @@ namespace NYT::NLogging { void TLoggerOwner::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::Logger>("logger")(); + PHOENIX_REGISTER_FIELD(1, Logger)(); } PHOENIX_DEFINE_TYPE(TLoggerOwner); diff --git a/yt/yt/core/misc/unittests/phoenix_compatibility_ut.cpp b/yt/yt/core/misc/unittests/phoenix_compatibility_ut.cpp index 76c163065f..02c1e22516 100644 --- a/yt/yt/core/misc/unittests/phoenix_compatibility_ut.cpp +++ b/yt/yt/core/misc/unittests/phoenix_compatibility_ut.cpp @@ -77,8 +77,8 @@ struct TComponentV2 void TComponentV2::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::C>("c")(); - registrar.template Field<2, &TThis::D>("d")(); + PHOENIX_REGISTER_FIELD(1, C)(); + PHOENIX_REGISTER_FIELD(2, D)(); } PHOENIX_DEFINE_TYPE(TComponentV2); @@ -110,8 +110,8 @@ struct TCompositeV2 void TCompositeV2::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::U>("u")(); - registrar.template Field<2, &TThis::V>("v")(); + PHOENIX_REGISTER_FIELD(1, U)(); + PHOENIX_REGISTER_FIELD(2, V)(); } PHOENIX_DEFINE_TYPE(TCompositeV2); @@ -199,8 +199,8 @@ struct TBaseV2 void TBaseV2::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::C>("c")(); - registrar.template Field<2, &TThis::D>("d")(); + PHOENIX_REGISTER_FIELD(1, C)(); + PHOENIX_REGISTER_FIELD(2, D)(); } PHOENIX_DEFINE_TYPE(TBaseV2); @@ -243,8 +243,8 @@ void TDerivedV2::RegisterMetadata(auto&& registrar) registrar.template BaseType<TBaseV1>(); registrar.template BaseType<TBaseV2>(); - registrar.template Field<1, &TThis::E>("e")(); - registrar.template Field<2, &TThis::F>("f")(); + PHOENIX_REGISTER_FIELD(1, E)(); + PHOENIX_REGISTER_FIELD(2, F)(); } PHOENIX_DEFINE_TYPE(TDerivedV2); @@ -327,8 +327,8 @@ struct TBaseV2 void TBaseV2::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::C>("c")(); - registrar.template Field<2, &TThis::D>("d")(); + PHOENIX_REGISTER_FIELD(1, C)(); + PHOENIX_REGISTER_FIELD(2, D)(); } PHOENIX_DEFINE_TYPE(TBaseV2); @@ -372,8 +372,8 @@ void TDerivedV2::RegisterMetadata(auto&& registrar) { registrar.template BaseType<TBaseV1>(); - registrar.template Field<1, &TThis::E>("e")(); - registrar.template Field<2, &TThis::F>("f")(); + PHOENIX_REGISTER_FIELD(1, E)(); + PHOENIX_REGISTER_FIELD(2, F)(); } PHOENIX_DEFINE_TYPE(TDerivedV2); diff --git a/yt/yt/core/phoenix/type_def-inl.h b/yt/yt/core/phoenix/type_def-inl.h index 2b5d8fc264..f4614180c2 100644 --- a/yt/yt/core/phoenix/type_def-inl.h +++ b/yt/yt/core/phoenix/type_def-inl.h @@ -25,6 +25,7 @@ namespace NYT::NPhoenix2::NDetail { #undef PHOENIX_DEFINE_TYPE #undef PHOENIX_DEFINE_TEMPLATE_TYPE #undef PHOENIX_DEFINE_OPAQUE_TYPE +#undef PHOENIX_REGISTER_FIELD //////////////////////////////////////////////////////////////////////////////// @@ -106,6 +107,9 @@ namespace NYT::NPhoenix2::NDetail { [[maybe_unused]] static inline const void* Dummy = &::NYT::NPhoenix2::NDetail::RegisterOpaqueTypeDescriptorImpl<type>(); \ } +#define PHOENIX_REGISTER_FIELD(fieldTag, fieldName) \ + registrar.template Field<fieldTag, &TThis::fieldName>(#fieldName) + //////////////////////////////////////////////////////////////////////////////// template <class TThis, class TContext> diff --git a/yt/yt/core/phoenix/type_def.h b/yt/yt/core/phoenix/type_def.h index 103ddf0dc4..96447c6f85 100644 --- a/yt/yt/core/phoenix/type_def.h +++ b/yt/yt/core/phoenix/type_def.h @@ -28,6 +28,9 @@ struct _ //! Defines a Phoenix-enabled opaque class. #define PHOENIX_DEFINE_OPAQUE_TYPE(type, typeTagValue) +//! A handy helper for registering Phoenix fields. +#define PHOENIX_REGISTER_FIELD(fieldTag, fieldName) + //////////////////////////////////////////////////////////////////////////////// } // namespace NYT::NPhoenix2 diff --git a/yt/yt/core/phoenix/unittests/phoenix_ut.cpp b/yt/yt/core/phoenix/unittests/phoenix_ut.cpp index e54225ec8a..cbb700c36f 100644 --- a/yt/yt/core/phoenix/unittests/phoenix_ut.cpp +++ b/yt/yt/core/phoenix/unittests/phoenix_ut.cpp @@ -91,8 +91,8 @@ private: void TPoint::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::X_>("x")(); - registrar.template Field<2, &TThis::Y_>("y")(); + PHOENIX_REGISTER_FIELD(1, X_)(); + PHOENIX_REGISTER_FIELD(2, Y_)(); } PHOENIX_DEFINE_TYPE(TPoint); @@ -112,7 +112,7 @@ struct TBaseStruct void TBaseStruct::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::A>("a")(); + PHOENIX_REGISTER_FIELD(1, A)(); } PHOENIX_DEFINE_YSON_DUMPABLE_TYPE_MIXIN(TBaseStruct); @@ -133,7 +133,7 @@ struct TDerivedStruct void TDerivedStruct::RegisterMetadata(auto&& registrar) { registrar.template BaseType<TBaseStruct>(); - registrar.template Field<1, &TThis::B>("b")(); + PHOENIX_REGISTER_FIELD(1, B)(); } PHOENIX_DEFINE_TYPE(TDerivedStruct); // <- TRegisterTypeDescriptor() for BaseStruct is not called yet @@ -158,8 +158,8 @@ struct TPair template <class T1, class T2> void TPair<T1, T2>::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::First>("first")(); - registrar.template Field<2, &TThis::Second>("second")(); + PHOENIX_REGISTER_FIELD(1, First)(); + PHOENIX_REGISTER_FIELD(2, Second)(); } PHOENIX_DEFINE_TEMPLATE_TYPE(TPair, (_, _)); @@ -264,10 +264,10 @@ struct S void S::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::A>("a")(); - registrar.template Field<2, &TThis::B>("b") + PHOENIX_REGISTER_FIELD(1, A)(); + PHOENIX_REGISTER_FIELD(2, B) .SinceVersion(100)(); - registrar.template Field<3, &TThis::C>("c") + PHOENIX_REGISTER_FIELD(3, C) .SinceVersion(200) .WhenMissing([] (TThis* this_, auto& /*context*/) { this_->C = 777; @@ -327,12 +327,12 @@ struct S void S::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::A>("a")(); - registrar.template Field<2, &TThis::B>("b") + PHOENIX_REGISTER_FIELD(1, A)(); + PHOENIX_REGISTER_FIELD(2, B) .InVersions([] (int version) { return version >= 150 && version <= 250; })(); - registrar.template Field<3, &TThis::C>("c") + PHOENIX_REGISTER_FIELD(3, C) .InVersions([] (int version) { return version >= 100 && version <= 200; }) @@ -499,9 +499,9 @@ struct S void S::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::A>("a") + PHOENIX_REGISTER_FIELD(1, A) .template Serializer<TSerializer>()(); - registrar.template Field<2, &TThis::B>("b")(); + PHOENIX_REGISTER_FIELD(2, B)(); } PHOENIX_DEFINE_TYPE(S); @@ -562,7 +562,7 @@ TEST(TPhoenixTest, YsonDumpablePair) { TPair<TString, double> p{.First = "hello", .Second = 3.14}; auto ysonStr = ConvertToYsonString(p); - auto canonicalYsonStr = TYsonString(TString("{first=hello;second=3.14}")); + auto canonicalYsonStr = TYsonString(TString("{First=hello;Second=3.14}")); EXPECT_TRUE(AreNodesEqual(ConvertToNode(ysonStr), ConvertToNode(canonicalYsonStr))); } @@ -570,7 +570,7 @@ TEST(TPhoenixTest, YsonDumpablePoint) { TPoint p(123, 456); auto ysonStr = ConvertToYsonString(p); - auto canonicalYsonStr = TYsonString(TString("{x=123;y=456}")); + auto canonicalYsonStr = TYsonString(TString("{X_=123;Y_=456}")); EXPECT_TRUE(AreNodesEqual(ConvertToNode(ysonStr), ConvertToNode(canonicalYsonStr))); } @@ -580,7 +580,7 @@ TEST(TPhoenixTest, YsonDumpableDerived) s.A = 123; s.B = 456; auto ysonStr = ConvertToYsonString(s); - auto canonicalYsonStr = TYsonString(TString("{a=123;b=456}")); + auto canonicalYsonStr = TYsonString(TString("{A=123;B=456}")); EXPECT_TRUE(AreNodesEqual(ConvertToNode(ysonStr), ConvertToNode(canonicalYsonStr))); } @@ -847,7 +847,7 @@ struct TBase void TBase::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::A>("a")(); + PHOENIX_REGISTER_FIELD(1, A)(); } PHOENIX_DEFINE_TYPE(TBase); @@ -897,8 +897,8 @@ struct A void A::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::X>("a")(); - registrar.template Field<2, &TThis::Y>("b")(); + PHOENIX_REGISTER_FIELD(1, X)(); + PHOENIX_REGISTER_FIELD(2, Y)(); } PHOENIX_DEFINE_TYPE(A); @@ -913,7 +913,7 @@ struct B void B::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::V>("v")(); + PHOENIX_REGISTER_FIELD(1, V)(); } PHOENIX_DEFINE_TYPE(B); @@ -952,7 +952,7 @@ struct A void A::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::X>("x")(); + PHOENIX_REGISTER_FIELD(1, X)(); } PHOENIX_DEFINE_TYPE(A); @@ -1000,7 +1000,7 @@ struct A void A::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::X>("x")(); + PHOENIX_REGISTER_FIELD(1, X)(); } PHOENIX_DEFINE_TYPE(A); @@ -1049,8 +1049,8 @@ struct A void A::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::X>("x")(); - registrar.template Field<2, &TThis::Y>("y")(); + PHOENIX_REGISTER_FIELD(1, X)(); + PHOENIX_REGISTER_FIELD(2, Y)(); } PHOENIX_DEFINE_TYPE(A); @@ -1115,7 +1115,7 @@ struct TDerived1 void TDerived1::RegisterMetadata(auto&& registrar) { registrar.template BaseType<TBase>(); - registrar.template Field<1, &TThis::V>("v")(); + PHOENIX_REGISTER_FIELD(1, V)(); } PHOENIX_DEFINE_TYPE(TDerived1); @@ -1131,7 +1131,7 @@ struct TDerived2 void TDerived2::RegisterMetadata(auto&& registrar) { registrar.template BaseType<TBase>(); - registrar.template Field<1, &TThis::V>("v")(); + PHOENIX_REGISTER_FIELD(1, V)(); } PHOENIX_DEFINE_TYPE(TDerived2); @@ -1171,7 +1171,7 @@ struct S void S::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::X>("x")(); + PHOENIX_REGISTER_FIELD(1, X)(); } PHOENIX_DEFINE_TYPE(S); @@ -1207,8 +1207,8 @@ struct A void A::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::X>("x")(); - registrar.template Field<2, &TThis::T>("t")(); + PHOENIX_REGISTER_FIELD(1, X)(); + PHOENIX_REGISTER_FIELD(2, T)(); } PHOENIX_DEFINE_TYPE(A); @@ -1223,8 +1223,8 @@ struct B void B::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::Y>("y")(); - registrar.template Field<2, &TThis::Z>("z")(); + PHOENIX_REGISTER_FIELD(1, Y)(); + PHOENIX_REGISTER_FIELD(2, Z)(); } PHOENIX_DEFINE_TYPE(B); @@ -1312,7 +1312,7 @@ struct TBase void TBase::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::X>("x")(); + PHOENIX_REGISTER_FIELD(1, X)(); } PHOENIX_DEFINE_TYPE(TBase); @@ -1336,8 +1336,8 @@ struct TDervied void TDervied::RegisterMetadata(auto&& registrar) { registrar.template BaseType<TBase>(); - registrar.template Field<1, &TThis::Y>("y")(); - registrar.template Field<2, &TThis::Z>("z")(); + PHOENIX_REGISTER_FIELD(1, Y)(); + PHOENIX_REGISTER_FIELD(2, Z)(); } PHOENIX_DEFINE_TYPE(TDervied); @@ -1377,7 +1377,7 @@ struct TBase1 void TBase1::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::X1>("x1")(); + PHOENIX_REGISTER_FIELD(1, X1)(); } PHOENIX_DEFINE_TYPE(TBase1); @@ -1393,7 +1393,7 @@ struct TBase2 void TBase2::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::X2>("x2")(); + PHOENIX_REGISTER_FIELD(1, X2)(); } PHOENIX_DEFINE_TYPE(TBase2); @@ -1412,8 +1412,8 @@ void TDerived::RegisterMetadata(auto&& registrar) { registrar.template BaseType<TBase1>(); registrar.template BaseType<TBase2>(); - registrar.template Field<1, &TThis::Y>("y")(); - registrar.template Field<2, &TThis::Z>("z")(); + PHOENIX_REGISTER_FIELD(1, Y)(); + PHOENIX_REGISTER_FIELD(2, Z)(); } PHOENIX_DEFINE_TYPE(TDerived); @@ -1509,7 +1509,7 @@ struct S void S::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::A>("a")(); + PHOENIX_REGISTER_FIELD(1, A)(); } PHOENIX_DEFINE_TYPE(S); @@ -1567,7 +1567,7 @@ PHOENIX_DEFINE_TYPE(TOuter::TInner); void TOuter::TInner::RegisterMetadata(auto&& registrar) { - registrar.template Field<1, &TThis::A>("a")(); + PHOENIX_REGISTER_FIELD(1, A)(); } } // namespace NPrivateInner |