aboutsummaryrefslogtreecommitdiffstats
path: root/yt
diff options
context:
space:
mode:
authorbabenko <babenko@yandex-team.com>2024-09-06 12:06:55 +0300
committerbabenko <babenko@yandex-team.com>2024-09-06 13:06:00 +0300
commit7ce23f89bc06d15aac55a0ee6b00ebda7fcf235c (patch)
treee3b1742a64a4efd7df93c0369263a915f288e320 /yt
parent824a6bd148168cb67813731f8eb3e67c5fc03620 (diff)
downloadydb-7ce23f89bc06d15aac55a0ee6b00ebda7fcf235c.tar.gz
Introduce PHOENIX_REGISTER_FIELD
c521034e724d6ed4145a1cfa5c46b231589c9013
Diffstat (limited to 'yt')
-rw-r--r--yt/yt/client/chunk_client/chunk_replica-inl.h5
-rw-r--r--yt/yt/client/chunk_client/chunk_replica.cpp5
-rw-r--r--yt/yt/core/logging/logger_owner.cpp2
-rw-r--r--yt/yt/core/misc/unittests/phoenix_compatibility_ut.cpp24
-rw-r--r--yt/yt/core/phoenix/type_def-inl.h4
-rw-r--r--yt/yt/core/phoenix/type_def.h3
-rw-r--r--yt/yt/core/phoenix/unittests/phoenix_ut.cpp82
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