Index: third_party/protobuf/src/google/protobuf/generated_message_reflection.h |
diff --git a/third_party/protobuf/src/google/protobuf/generated_message_reflection.h b/third_party/protobuf/src/google/protobuf/generated_message_reflection.h |
index dc8abb98a031f286924c7c71b19aac959c2e9322..c1c142fa8aa400fffe36f9c3ae5f55daf77c4cac 100644 |
--- a/third_party/protobuf/src/google/protobuf/generated_message_reflection.h |
+++ b/third_party/protobuf/src/google/protobuf/generated_message_reflection.h |
@@ -1,6 +1,6 @@ |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
-// https://developers.google.com/protocol-buffers/ |
+// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
@@ -40,13 +40,11 @@ |
#include <string> |
#include <vector> |
-#include <google/protobuf/stubs/casts.h> |
#include <google/protobuf/stubs/common.h> |
// TODO(jasonh): Remove this once the compiler change to directly include this |
// is released to components. |
#include <google/protobuf/generated_enum_reflection.h> |
#include <google/protobuf/message.h> |
-#include <google/protobuf/metadata.h> |
#include <google/protobuf/unknown_field_set.h> |
@@ -63,7 +61,6 @@ namespace protobuf { |
namespace protobuf { |
namespace internal { |
-class DefaultEmptyOneof; |
// Defined in this file. |
class GeneratedMessageReflection; |
@@ -136,77 +133,9 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
int extensions_offset, |
const DescriptorPool* pool, |
MessageFactory* factory, |
- int object_size, |
- int arena_offset, |
- int is_default_instance_offset = -1); |
- |
- // Similar with the construction above. Call this construction if the |
- // message has oneof definition. |
- // Parameters: |
- // offsets: An array of ints giving the byte offsets. |
- // For each oneof field, the offset is relative to the |
- // default_oneof_instance. These can be computed at compile |
- // time using the |
- // PROTO2_GENERATED_DEFAULT_ONEOF_FIELD_OFFSET() macro. |
- // For each none oneof field, the offset is related to |
- // the start of the message object. These can be computed |
- // at compile time using the |
- // GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET() macro. |
- // Besides offsets for all fields, this array also contains |
- // offsets for oneof unions. The offset of the i-th oneof |
- // union is offsets[descriptor->field_count() + i]. |
- // default_oneof_instance: The default instance of the oneofs. It is a |
- // struct holding the default value of all oneof fields |
- // for this message. It is only used to obtain pointers |
- // to default instances of oneof fields, which Get |
- // methods will return if the field is not set. |
- // oneof_case_offset: Offset in the message of an array of uint32s of |
- // size descriptor->oneof_decl_count(). Each uint32 |
- // indicates what field is set for each oneof. |
- // other parameters are the same with the construction above. |
- GeneratedMessageReflection(const Descriptor* descriptor, |
- const Message* default_instance, |
- const int offsets[], |
- int has_bits_offset, |
- int unknown_fields_offset, |
- int extensions_offset, |
- const void* default_oneof_instance, |
- int oneof_case_offset, |
- const DescriptorPool* pool, |
- MessageFactory* factory, |
- int object_size, |
- int arena_offset, |
- int is_default_instance_offset = -1); |
+ int object_size); |
~GeneratedMessageReflection(); |
- // Shorter-to-call helpers for the above two constructions that work if the |
- // pool and factory are the usual, namely, DescriptorPool::generated_pool() |
- // and MessageFactory::generated_factory(). |
- |
- static GeneratedMessageReflection* NewGeneratedMessageReflection( |
- const Descriptor* descriptor, |
- const Message* default_instance, |
- const int offsets[], |
- int has_bits_offset, |
- int unknown_fields_offset, |
- int extensions_offset, |
- const void* default_oneof_instance, |
- int oneof_case_offset, |
- int object_size, |
- int arena_offset, |
- int is_default_instance_offset = -1); |
- |
- static GeneratedMessageReflection* NewGeneratedMessageReflection( |
- const Descriptor* descriptor, |
- const Message* default_instance, |
- const int offsets[], |
- int has_bits_offset, |
- int unknown_fields_offset, |
- int extensions_offset, |
- int object_size, |
- int arena_offset, |
- int is_default_instance_offset = -1); |
- |
// implements Reflection ------------------------------------------- |
const UnknownFieldSet& GetUnknownFields(const Message& message) const; |
@@ -217,16 +146,11 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
bool HasField(const Message& message, const FieldDescriptor* field) const; |
int FieldSize(const Message& message, const FieldDescriptor* field) const; |
void ClearField(Message* message, const FieldDescriptor* field) const; |
- bool HasOneof(const Message& message, |
- const OneofDescriptor* oneof_descriptor) const; |
- void ClearOneof(Message* message, const OneofDescriptor* field) const; |
void RemoveLast(Message* message, const FieldDescriptor* field) const; |
Message* ReleaseLast(Message* message, const FieldDescriptor* field) const; |
void Swap(Message* message1, Message* message2) const; |
- void SwapFields(Message* message1, Message* message2, |
- const vector<const FieldDescriptor*>& fields) const; |
void SwapElements(Message* message, const FieldDescriptor* field, |
- int index1, int index2) const; |
+ int index1, int index2) const; |
void ListFields(const Message& message, |
vector<const FieldDescriptor*>* output) const; |
@@ -251,17 +175,10 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
string* scratch) const; |
const EnumValueDescriptor* GetEnum(const Message& message, |
const FieldDescriptor* field) const; |
- int GetEnumValue(const Message& message, |
- const FieldDescriptor* field) const; |
const Message& GetMessage(const Message& message, |
const FieldDescriptor* field, |
MessageFactory* factory = NULL) const; |
- const FieldDescriptor* GetOneofFieldDescriptor( |
- const Message& message, |
- const OneofDescriptor* oneof_descriptor) const; |
- |
- public: |
void SetInt32 (Message* message, |
const FieldDescriptor* field, int32 value) const; |
void SetInt64 (Message* message, |
@@ -281,13 +198,8 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
const string& value) const; |
void SetEnum (Message* message, const FieldDescriptor* field, |
const EnumValueDescriptor* value) const; |
- void SetEnumValue(Message* message, const FieldDescriptor* field, |
- int value) const; |
Message* MutableMessage(Message* message, const FieldDescriptor* field, |
MessageFactory* factory = NULL) const; |
- void SetAllocatedMessage(Message* message, |
- Message* sub_message, |
- const FieldDescriptor* field) const; |
Message* ReleaseMessage(Message* message, const FieldDescriptor* field, |
MessageFactory* factory = NULL) const; |
@@ -313,9 +225,6 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
const EnumValueDescriptor* GetRepeatedEnum(const Message& message, |
const FieldDescriptor* field, |
int index) const; |
- int GetRepeatedEnumValue(const Message& message, |
- const FieldDescriptor* field, |
- int index) const; |
const Message& GetRepeatedMessage(const Message& message, |
const FieldDescriptor* field, |
int index) const; |
@@ -340,8 +249,6 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
const string& value) const; |
void SetRepeatedEnum(Message* message, const FieldDescriptor* field, |
int index, const EnumValueDescriptor* value) const; |
- void SetRepeatedEnumValue(Message* message, const FieldDescriptor* field, |
- int index, int value) const; |
// Get a mutable pointer to a field with a message type. |
Message* MutableRepeatedMessage(Message* message, |
const FieldDescriptor* field, |
@@ -366,42 +273,17 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
void AddEnum(Message* message, |
const FieldDescriptor* field, |
const EnumValueDescriptor* value) const; |
- void AddEnumValue(Message* message, |
- const FieldDescriptor* field, |
- int value) const; |
Message* AddMessage(Message* message, const FieldDescriptor* field, |
MessageFactory* factory = NULL) const; |
const FieldDescriptor* FindKnownExtensionByName(const string& name) const; |
const FieldDescriptor* FindKnownExtensionByNumber(int number) const; |
- bool SupportsUnknownEnumValues() const; |
- |
- // This value for arena_offset_ indicates that there is no arena pointer in |
- // this message (e.g., old generated code). |
- static const int kNoArenaPointer = -1; |
- |
- // This value for unknown_field_offset_ indicates that there is no |
- // UnknownFieldSet in this message, and that instead, we are using the |
- // Zero-Overhead Arena Pointer trick. When this is the case, arena_offset_ |
- // actually indexes to an InternalMetadataWithArena instance, which can return |
- // either an arena pointer or an UnknownFieldSet or both. It is never the case |
- // that unknown_field_offset_ == kUnknownFieldSetInMetadata && arena_offset_ |
- // == kNoArenaPointer. |
- static const int kUnknownFieldSetInMetadata = -1; |
- |
protected: |
virtual void* MutableRawRepeatedField( |
Message* message, const FieldDescriptor* field, FieldDescriptor::CppType, |
int ctype, const Descriptor* desc) const; |
- virtual MessageFactory* GetMessageFactory() const; |
- |
- virtual void* RepeatedFieldData( |
- Message* message, const FieldDescriptor* field, |
- FieldDescriptor::CppType cpp_type, |
- const Descriptor* message_type) const; |
- |
private: |
friend class GeneratedMessage; |
@@ -411,19 +293,13 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
const Descriptor* descriptor_; |
const Message* default_instance_; |
- const void* default_oneof_instance_; |
const int* offsets_; |
int has_bits_offset_; |
- int oneof_case_offset_; |
int unknown_fields_offset_; |
int extensions_offset_; |
- int arena_offset_; |
- int is_default_instance_offset_; |
int object_size_; |
- static const int kHasNoDefaultInstanceField = -1; |
- |
const DescriptorPool* descriptor_pool_; |
MessageFactory* message_factory_; |
@@ -435,26 +311,11 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
const FieldDescriptor* field) const; |
template <typename Type> |
inline const Type& DefaultRaw(const FieldDescriptor* field) const; |
- template <typename Type> |
- inline const Type& DefaultOneofRaw(const FieldDescriptor* field) const; |
inline const uint32* GetHasBits(const Message& message) const; |
inline uint32* MutableHasBits(Message* message) const; |
- inline uint32 GetOneofCase( |
- const Message& message, |
- const OneofDescriptor* oneof_descriptor) const; |
- inline uint32* MutableOneofCase( |
- Message* message, |
- const OneofDescriptor* oneof_descriptor) const; |
inline const ExtensionSet& GetExtensionSet(const Message& message) const; |
inline ExtensionSet* MutableExtensionSet(Message* message) const; |
- inline Arena* GetArena(Message* message) const; |
- inline const internal::InternalMetadataWithArena& |
- GetInternalMetadataWithArena(const Message& message) const; |
- inline internal::InternalMetadataWithArena* |
- MutableInternalMetadataWithArena(Message* message) const; |
- |
- inline bool GetIsDefaultInstance(const Message& message) const; |
inline bool HasBit(const Message& message, |
const FieldDescriptor* field) const; |
@@ -462,26 +323,6 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
const FieldDescriptor* field) const; |
inline void ClearBit(Message* message, |
const FieldDescriptor* field) const; |
- inline void SwapBit(Message* message1, |
- Message* message2, |
- const FieldDescriptor* field) const; |
- |
- // This function only swaps the field. Should swap corresponding has_bit |
- // before or after using this function. |
- void SwapField(Message* message1, |
- Message* message2, |
- const FieldDescriptor* field) const; |
- |
- void SwapOneofField(Message* message1, |
- Message* message2, |
- const OneofDescriptor* oneof_descriptor) const; |
- |
- inline bool HasOneofField(const Message& message, |
- const FieldDescriptor* field) const; |
- inline void SetOneofCase(Message* message, |
- const FieldDescriptor* field) const; |
- inline void ClearOneofField(Message* message, |
- const FieldDescriptor* field) const; |
template <typename Type> |
inline const Type& GetField(const Message& message, |
@@ -517,28 +358,6 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
int GetExtensionNumberOrDie(const Descriptor* type) const; |
- // Internal versions of EnumValue API perform no checking. Called after checks |
- // by public methods. |
- void SetEnumValueInternal(Message* message, |
- const FieldDescriptor* field, |
- int value) const; |
- void SetRepeatedEnumValueInternal(Message* message, |
- const FieldDescriptor* field, |
- int index, |
- int value) const; |
- void AddEnumValueInternal(Message* message, |
- const FieldDescriptor* field, |
- int value) const; |
- |
- |
- Message* UnsafeArenaReleaseMessage(Message* message, |
- const FieldDescriptor* field, |
- MessageFactory* factory = NULL) const; |
- |
- void UnsafeArenaSetAllocatedMessage(Message* message, |
- Message* sub_message, |
- const FieldDescriptor* field) const; |
- |
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(GeneratedMessageReflection); |
}; |
@@ -557,14 +376,9 @@ class LIBPROTOBUF_EXPORT GeneratedMessageReflection : public Reflection { |
// be confused by an unaligned pointer. |
#define GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(TYPE, FIELD) \ |
static_cast<int>( \ |
- reinterpret_cast<const char*>( \ |
- &reinterpret_cast<const TYPE*>(16)->FIELD) - \ |
- reinterpret_cast<const char*>(16)) |
- |
-#define PROTO2_GENERATED_DEFAULT_ONEOF_FIELD_OFFSET(ONEOF, FIELD) \ |
- static_cast<int>( \ |
- reinterpret_cast<const char*>(&(ONEOF->FIELD)) \ |
- - reinterpret_cast<const char*>(ONEOF)) |
+ reinterpret_cast<const char*>( \ |
+ &reinterpret_cast<const TYPE*>(16)->FIELD) - \ |
+ reinterpret_cast<const char*>(16)) |
// There are some places in proto2 where dynamic_cast would be useful as an |
// optimization. For example, take Message::MergeFrom(const Message& other). |
@@ -598,42 +412,6 @@ inline To dynamic_cast_if_available(From from) { |
#endif |
} |
-// Tries to downcast this message to a generated message type. |
-// Returns NULL if this class is not an instance of T. |
-// |
-// This is like dynamic_cast_if_available, except it works even when |
-// dynamic_cast is not available by using Reflection. However it only works |
-// with Message objects. |
-// |
-// TODO(haberman): can we remove dynamic_cast_if_available in favor of this? |
-template <typename T> |
-T* DynamicCastToGenerated(const Message* from) { |
- // Compile-time assert that T is a generated type that has a |
- // default_instance() accessor, but avoid actually calling it. |
- const T&(*get_default_instance)() = &T::default_instance; |
- (void)get_default_instance; |
- |
- // Compile-time assert that T is a subclass of google::protobuf::Message. |
- const Message* unused = static_cast<T*>(NULL); |
- (void)unused; |
- |
-#if defined(GOOGLE_PROTOBUF_NO_RTTI) || \ |
- (defined(_MSC_VER) && !defined(_CPPRTTI)) |
- bool ok = &T::default_instance() == |
- from->GetReflection()->GetMessageFactory()->GetPrototype( |
- from->GetDescriptor()); |
- return ok ? down_cast<T*>(from) : NULL; |
-#else |
- return dynamic_cast<T*>(from); |
-#endif |
-} |
- |
-template <typename T> |
-T* DynamicCastToGenerated(Message* from) { |
- const Message* message_const = from; |
- return const_cast<T*>(DynamicCastToGenerated<const T>(message_const)); |
-} |
- |
} // namespace internal |
} // namespace protobuf |