From 1900c536cd91bae783e6766d3fc016e75061d17c Mon Sep 17 00:00:00 2001 From: "kenton@google.com" Date: Sat, 1 Aug 2009 00:30:11 +0000 Subject: Fix compile for GCC 3.4.4. --- src/google/protobuf/extension_set.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/google/protobuf/extension_set.h') diff --git a/src/google/protobuf/extension_set.h b/src/google/protobuf/extension_set.h index 8c1d73b8..8c0f12a5 100644 --- a/src/google/protobuf/extension_set.h +++ b/src/google/protobuf/extension_set.h @@ -61,6 +61,7 @@ namespace protobuf { } namespace internal { class FieldSkipper; // wire_format_lite.h + class RepeatedPtrFieldBase; // repeated_field.h } template class RepeatedField; // repeated_field.h template class RepeatedPtrField; // repeated_field.h @@ -388,6 +389,15 @@ class LIBPROTOBUF_EXPORT ExtensionSet { const MessageLite* containing_type, FieldSkipper* field_skipper); + // Hack: RepeatedPtrFieldBase declares ExtensionSet as a friend. This + // friendship should automatically extend to ExtensionSet::Extension, but + // unfortunately some older compilers (e.g. GCC 3.4.4) do not implement this + // correctly. So, we must provide helpers for calling methods of that + // class. + + // Defined in extension_set_heavy.cc. + static inline int RepeatedMessage_SpaceUsedExcludingSelf( + RepeatedPtrFieldBase* field); // The Extension struct is small enough to be passed by value, so we use it // directly as the value type in the map rather than use pointers. We use -- cgit v1.2.3