Browse Source

Intermediate changes

robot-piglet 1 year ago
parent
commit
ae71882489
2 changed files with 11 additions and 8 deletions
  1. 8 6
      yt/yt/core/misc/protobuf_helpers-inl.h
  2. 3 2
      yt/yt/core/misc/protobuf_helpers.h

+ 8 - 6
yt/yt/core/misc/protobuf_helpers-inl.h

@@ -310,15 +310,16 @@ void ToProtoArrayImpl(
     }
 }
 
-template <class TOriginalArray, class TSerializedArray>
+template <class TOriginalArray, class TSerializedArray, class... TArgs>
 void FromProtoArrayImpl(
     TOriginalArray* originalArray,
-    const TSerializedArray& serializedArray)
+    const TSerializedArray& serializedArray,
+    TArgs&&... args)
 {
     originalArray->clear();
     originalArray->resize(serializedArray.size());
     for (int i = 0; i < serializedArray.size(); ++i) {
-        FromProto(&(*originalArray)[i], serializedArray.Get(i));
+        FromProto(&(*originalArray)[i], serializedArray.Get(i), args...);
     }
 }
 
@@ -449,12 +450,13 @@ void ToProto(
     NYT::NDetail::ToProtoArrayImpl(serializedArray, originalArray);
 }
 
-template <class TOriginalArray, class TSerialized>
+template <class TOriginalArray, class TSerialized, class... TArgs>
 void FromProto(
     TOriginalArray* originalArray,
-    const ::google::protobuf::RepeatedPtrField<TSerialized>& serializedArray)
+    const ::google::protobuf::RepeatedPtrField<TSerialized>& serializedArray,
+    TArgs&&... args)
 {
-    NYT::NDetail::FromProtoArrayImpl(originalArray, serializedArray);
+    NYT::NDetail::FromProtoArrayImpl(originalArray, serializedArray, std::forward<TArgs>(args)...);
 }
 
 template <class TOriginalArray, class TSerialized>

+ 3 - 2
yt/yt/core/misc/protobuf_helpers.h

@@ -72,10 +72,11 @@ void ToProto(
     ::google::protobuf::RepeatedField<TSerialized>* serializedArray,
     const TOriginalArray& originalArray);
 
-template <class TOriginalArray, class TSerialized>
+template <class TOriginalArray, class TSerialized, class... TArgs>
 void FromProto(
     TOriginalArray* originalArray,
-    const ::google::protobuf::RepeatedPtrField<TSerialized>& serializedArray);
+    const ::google::protobuf::RepeatedPtrField<TSerialized>& serializedArray,
+    TArgs&&... args);
 
 template <class TOriginalArray, class TSerialized>
 void FromProto(