From 92a7e778e7394386f413cec28d67a07630f784b1 Mon Sep 17 00:00:00 2001 From: Adam Cozzette Date: Fri, 1 Dec 2017 10:05:10 -0800 Subject: Integrated internal changes from Google --- src/google/protobuf/message_lite.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/google/protobuf/message_lite.h') diff --git a/src/google/protobuf/message_lite.h b/src/google/protobuf/message_lite.h index 5cd6babc..0b2b24b2 100644 --- a/src/google/protobuf/message_lite.h +++ b/src/google/protobuf/message_lite.h @@ -48,6 +48,8 @@ namespace google { namespace protobuf { class Arena; +template +class RepeatedPtrField; namespace io { class CodedInputStream; class CodedOutputStream; @@ -56,6 +58,7 @@ class ZeroCopyOutputStream; } namespace internal { +class RepeatedPtrFieldBase; class WireFormatLite; #ifndef SWIG @@ -380,6 +383,22 @@ class LIBPROTOBUF_EXPORT MessageLite { virtual uint8* InternalSerializeWithCachedSizesToArray(bool deterministic, uint8* target) const; + protected: + // CastToBase allows generated code to cast a RepeatedPtrField to + // RepeatedPtrFieldBase. We try to restrict access to RepeatedPtrFieldBase + // because it is an implementation detail that user code should not access + // directly. + template + static ::google::protobuf::internal::RepeatedPtrFieldBase* CastToBase( + ::google::protobuf::RepeatedPtrField* repeated) { + return repeated; + } + template + static const ::google::protobuf::internal::RepeatedPtrFieldBase& CastToBase( + const ::google::protobuf::RepeatedPtrField& repeated) { + return repeated; + } + private: // TODO(gerbens) make this a pure abstract function virtual const void* InternalGetTable() const { return NULL; } -- cgit v1.2.3