diff --git a/src/google/protobuf/compiler/java/context.h b/src/google/protobuf/compiler/java/context.h index dc8fef155e..43091846a1 100644 --- a/src/google/protobuf/compiler/java/context.h +++ b/src/google/protobuf/compiler/java/context.h @@ -65,6 +65,8 @@ struct OneofGeneratorInfo; class Context { public: Context(const FileDescriptor* file, const Options& options); + Context(const Context&) = delete; + Context& operator=(const Context&) = delete; ~Context(); // Get the name resolver associated with this context. The resolver @@ -102,7 +104,6 @@ class Context { absl::flat_hash_map oneof_generator_info_map_; Options options_; - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Context); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/enum.h b/src/google/protobuf/compiler/java/enum.h index 0a2c363b53..3dd7708f56 100644 --- a/src/google/protobuf/compiler/java/enum.h +++ b/src/google/protobuf/compiler/java/enum.h @@ -62,6 +62,8 @@ class EnumGenerator { public: EnumGenerator(const EnumDescriptor* descriptor, bool immutable_api, Context* context); + EnumGenerator(const EnumGenerator&) = delete; + EnumGenerator& operator=(const EnumGenerator&) = delete; ~EnumGenerator(); void Generate(io::Printer* printer); @@ -88,8 +90,6 @@ class EnumGenerator { ClassNameResolver* name_resolver_; bool CanUseEnumValues(); - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/enum_field.h b/src/google/protobuf/compiler/java/enum_field.h index d2bc8d663c..3a5bec313f 100644 --- a/src/google/protobuf/compiler/java/enum_field.h +++ b/src/google/protobuf/compiler/java/enum_field.h @@ -61,6 +61,9 @@ class ImmutableEnumFieldGenerator : public ImmutableFieldGenerator { explicit ImmutableEnumFieldGenerator(const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex, Context* context); + ImmutableEnumFieldGenerator(const ImmutableEnumFieldGenerator&) = delete; + ImmutableEnumFieldGenerator& operator=(const ImmutableEnumFieldGenerator&) = + delete; ~ImmutableEnumFieldGenerator() override; // implements ImmutableFieldGenerator @@ -90,9 +93,6 @@ class ImmutableEnumFieldGenerator : public ImmutableFieldGenerator { const FieldDescriptor* descriptor_; std::map variables_; ClassNameResolver* name_resolver_; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableEnumFieldGenerator); }; class ImmutableEnumOneofFieldGenerator : public ImmutableEnumFieldGenerator { @@ -100,6 +100,10 @@ class ImmutableEnumOneofFieldGenerator : public ImmutableEnumFieldGenerator { ImmutableEnumOneofFieldGenerator(const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex, Context* context); + ImmutableEnumOneofFieldGenerator(const ImmutableEnumOneofFieldGenerator&) = + delete; + ImmutableEnumOneofFieldGenerator& operator=( + const ImmutableEnumOneofFieldGenerator&) = delete; ~ImmutableEnumOneofFieldGenerator() override; void GenerateMembers(io::Printer* printer) const override; @@ -111,9 +115,6 @@ class ImmutableEnumOneofFieldGenerator : public ImmutableEnumFieldGenerator { void GenerateSerializedSizeCode(io::Printer* printer) const override; void GenerateEqualsCode(io::Printer* printer) const override; void GenerateHashCode(io::Printer* printer) const override; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableEnumOneofFieldGenerator); }; class RepeatedImmutableEnumFieldGenerator : public ImmutableFieldGenerator { @@ -121,6 +122,10 @@ class RepeatedImmutableEnumFieldGenerator : public ImmutableFieldGenerator { explicit RepeatedImmutableEnumFieldGenerator( const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex, Context* context); + RepeatedImmutableEnumFieldGenerator( + const RepeatedImmutableEnumFieldGenerator&) = delete; + RepeatedImmutableEnumFieldGenerator& operator=( + const RepeatedImmutableEnumFieldGenerator&) = delete; ~RepeatedImmutableEnumFieldGenerator() override; // implements ImmutableFieldGenerator --------------------------------------- @@ -150,8 +155,6 @@ class RepeatedImmutableEnumFieldGenerator : public ImmutableFieldGenerator { const FieldDescriptor* descriptor_; std::map variables_; ClassNameResolver* name_resolver_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableEnumFieldGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/enum_field_lite.h b/src/google/protobuf/compiler/java/enum_field_lite.h index 492b268bef..23f88ce6cc 100644 --- a/src/google/protobuf/compiler/java/enum_field_lite.h +++ b/src/google/protobuf/compiler/java/enum_field_lite.h @@ -62,6 +62,10 @@ class ImmutableEnumFieldLiteGenerator : public ImmutableFieldLiteGenerator { explicit ImmutableEnumFieldLiteGenerator(const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + ImmutableEnumFieldLiteGenerator(const ImmutableEnumFieldLiteGenerator&) = + delete; + ImmutableEnumFieldLiteGenerator& operator=( + const ImmutableEnumFieldLiteGenerator&) = delete; ~ImmutableEnumFieldLiteGenerator() override; // implements ImmutableFieldLiteGenerator @@ -83,9 +87,6 @@ class ImmutableEnumFieldLiteGenerator : public ImmutableFieldLiteGenerator { const int messageBitIndex_; Context* context_; ClassNameResolver* name_resolver_; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableEnumFieldLiteGenerator); }; class ImmutableEnumOneofFieldLiteGenerator @@ -93,15 +94,16 @@ class ImmutableEnumOneofFieldLiteGenerator public: ImmutableEnumOneofFieldLiteGenerator(const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + ImmutableEnumOneofFieldLiteGenerator( + const ImmutableEnumOneofFieldLiteGenerator&) = delete; + ImmutableEnumOneofFieldLiteGenerator& operator=( + const ImmutableEnumOneofFieldLiteGenerator&) = delete; ~ImmutableEnumOneofFieldLiteGenerator() override; void GenerateMembers(io::Printer* printer) const override; void GenerateBuilderMembers(io::Printer* printer) const override; void GenerateFieldInfo(io::Printer* printer, std::vector* output) const override; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableEnumOneofFieldLiteGenerator); }; class RepeatedImmutableEnumFieldLiteGenerator @@ -109,6 +111,10 @@ class RepeatedImmutableEnumFieldLiteGenerator public: explicit RepeatedImmutableEnumFieldLiteGenerator( const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + RepeatedImmutableEnumFieldLiteGenerator( + const RepeatedImmutableEnumFieldLiteGenerator&) = delete; + RepeatedImmutableEnumFieldLiteGenerator& operator=( + const RepeatedImmutableEnumFieldLiteGenerator&) = delete; ~RepeatedImmutableEnumFieldLiteGenerator() override; // implements ImmutableFieldLiteGenerator ------------------------------------ @@ -128,8 +134,6 @@ class RepeatedImmutableEnumFieldLiteGenerator std::map variables_; Context* context_; ClassNameResolver* name_resolver_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableEnumFieldLiteGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/enum_lite.h b/src/google/protobuf/compiler/java/enum_lite.h index 50f3fe7b1a..1857a82301 100644 --- a/src/google/protobuf/compiler/java/enum_lite.h +++ b/src/google/protobuf/compiler/java/enum_lite.h @@ -62,6 +62,8 @@ class EnumLiteGenerator { public: EnumLiteGenerator(const EnumDescriptor* descriptor, bool immutable_api, Context* context); + EnumLiteGenerator(const EnumLiteGenerator&) = delete; + EnumLiteGenerator& operator=(const EnumLiteGenerator&) = delete; ~EnumLiteGenerator(); void Generate(io::Printer* printer); @@ -86,8 +88,6 @@ class EnumLiteGenerator { Context* context_; ClassNameResolver* name_resolver_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumLiteGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/extension.h b/src/google/protobuf/compiler/java/extension.h index e09ba8f515..1998af8d93 100644 --- a/src/google/protobuf/compiler/java/extension.h +++ b/src/google/protobuf/compiler/java/extension.h @@ -66,6 +66,8 @@ namespace java { class ExtensionGenerator { public: explicit ExtensionGenerator() {} + ExtensionGenerator(const ExtensionGenerator&) = delete; + ExtensionGenerator& operator=(const ExtensionGenerator&) = delete; virtual ~ExtensionGenerator() {} virtual void Generate(io::Printer* printer) = 0; @@ -84,15 +86,15 @@ class ExtensionGenerator { ClassNameResolver* name_resolver, std::map* vars_pointer, Context* context); - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ExtensionGenerator); }; class ImmutableExtensionGenerator : public ExtensionGenerator { public: explicit ImmutableExtensionGenerator(const FieldDescriptor* descriptor, Context* context); + ImmutableExtensionGenerator(const ImmutableExtensionGenerator&) = delete; + ImmutableExtensionGenerator& operator=(const ImmutableExtensionGenerator&) = + delete; ~ImmutableExtensionGenerator() override; void Generate(io::Printer* printer) override; @@ -104,9 +106,6 @@ class ImmutableExtensionGenerator : public ExtensionGenerator { ClassNameResolver* name_resolver_; std::string scope_; Context* context_; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableExtensionGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/extension_lite.h b/src/google/protobuf/compiler/java/extension_lite.h index c22af1bdd3..f346c5e1bf 100644 --- a/src/google/protobuf/compiler/java/extension_lite.h +++ b/src/google/protobuf/compiler/java/extension_lite.h @@ -49,6 +49,10 @@ class ImmutableExtensionLiteGenerator : public ExtensionGenerator { public: explicit ImmutableExtensionLiteGenerator(const FieldDescriptor* descriptor, Context* context); + ImmutableExtensionLiteGenerator(const ImmutableExtensionLiteGenerator&) = + delete; + ImmutableExtensionLiteGenerator& operator=( + const ImmutableExtensionLiteGenerator&) = delete; ~ImmutableExtensionLiteGenerator() override; void Generate(io::Printer* printer) override; @@ -64,8 +68,6 @@ class ImmutableExtensionLiteGenerator : public ExtensionGenerator { ClassNameResolver* name_resolver_; std::string scope_; Context* context_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableExtensionLiteGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/field.h b/src/google/protobuf/compiler/java/field.h index 6ac01b99ff..2dc189e64d 100644 --- a/src/google/protobuf/compiler/java/field.h +++ b/src/google/protobuf/compiler/java/field.h @@ -66,6 +66,8 @@ namespace java { class ImmutableFieldGenerator { public: ImmutableFieldGenerator() {} + ImmutableFieldGenerator(const ImmutableFieldGenerator&) = delete; + ImmutableFieldGenerator& operator=(const ImmutableFieldGenerator&) = delete; virtual ~ImmutableFieldGenerator(); virtual int GetNumBitsForMessage() const = 0; @@ -90,14 +92,14 @@ class ImmutableFieldGenerator { virtual void GenerateHashCode(io::Printer* printer) const = 0; virtual std::string GetBoxedType() const = 0; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableFieldGenerator); }; class ImmutableFieldLiteGenerator { public: ImmutableFieldLiteGenerator() {} + ImmutableFieldLiteGenerator(const ImmutableFieldLiteGenerator&) = delete; + ImmutableFieldLiteGenerator& operator=(const ImmutableFieldLiteGenerator&) = + delete; virtual ~ImmutableFieldLiteGenerator(); virtual int GetNumBitsForMessage() const = 0; @@ -110,9 +112,6 @@ class ImmutableFieldLiteGenerator { virtual void GenerateKotlinDslMembers(io::Printer* printer) const = 0; virtual std::string GetBoxedType() const = 0; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableFieldLiteGenerator); }; @@ -121,6 +120,8 @@ template class FieldGeneratorMap { public: explicit FieldGeneratorMap(const Descriptor* descriptor, Context* context); + FieldGeneratorMap(const FieldGeneratorMap&) = delete; + FieldGeneratorMap& operator=(const FieldGeneratorMap&) = delete; ~FieldGeneratorMap(); const FieldGeneratorType& get(const FieldDescriptor* field) const; @@ -128,8 +129,6 @@ class FieldGeneratorMap { private: const Descriptor* descriptor_; std::vector> field_generators_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGeneratorMap); }; template diff --git a/src/google/protobuf/compiler/java/file.h b/src/google/protobuf/compiler/java/file.h index b2e0373009..e640039f92 100644 --- a/src/google/protobuf/compiler/java/file.h +++ b/src/google/protobuf/compiler/java/file.h @@ -70,6 +70,8 @@ class FileGenerator { public: FileGenerator(const FileDescriptor* file, const Options& options, bool immutable_api = true); + FileGenerator(const FileGenerator&) = delete; + FileGenerator& operator=(const FileGenerator&) = delete; ~FileGenerator(); // Checks for problems that would otherwise lead to cryptic compile errors. @@ -114,8 +116,6 @@ class FileGenerator { ClassNameResolver* name_resolver_; const Options options_; bool immutable_api_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/generator.h b/src/google/protobuf/compiler/java/generator.h index 522a997cc9..e940c599a8 100644 --- a/src/google/protobuf/compiler/java/generator.h +++ b/src/google/protobuf/compiler/java/generator.h @@ -55,6 +55,8 @@ namespace java { class PROTOC_EXPORT JavaGenerator : public CodeGenerator { public: JavaGenerator(); + JavaGenerator(const JavaGenerator&) = delete; + JavaGenerator& operator=(const JavaGenerator&) = delete; ~JavaGenerator() override; // implements CodeGenerator ---------------------------------------- @@ -69,7 +71,6 @@ class PROTOC_EXPORT JavaGenerator : public CodeGenerator { private: bool opensource_runtime_ = PROTO2_IS_OSS; - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(JavaGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/generator_factory.h b/src/google/protobuf/compiler/java/generator_factory.h index 807bca383a..5febb11944 100644 --- a/src/google/protobuf/compiler/java/generator_factory.h +++ b/src/google/protobuf/compiler/java/generator_factory.h @@ -59,6 +59,8 @@ namespace java { class GeneratorFactory { public: GeneratorFactory(); + GeneratorFactory(const GeneratorFactory&) = delete; + GeneratorFactory& operator=(const GeneratorFactory&) = delete; virtual ~GeneratorFactory(); virtual MessageGenerator* NewMessageGenerator( @@ -69,15 +71,15 @@ class GeneratorFactory { virtual ServiceGenerator* NewServiceGenerator( const ServiceDescriptor* descriptor) const = 0; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(GeneratorFactory); }; // Factory that creates generators for immutable-default messages. class ImmutableGeneratorFactory : public GeneratorFactory { public: ImmutableGeneratorFactory(Context* context); + ImmutableGeneratorFactory(const ImmutableGeneratorFactory&) = delete; + ImmutableGeneratorFactory& operator=(const ImmutableGeneratorFactory&) = + delete; ~ImmutableGeneratorFactory() override; MessageGenerator* NewMessageGenerator( @@ -91,7 +93,6 @@ class ImmutableGeneratorFactory : public GeneratorFactory { private: Context* context_; - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableGeneratorFactory); }; diff --git a/src/google/protobuf/compiler/java/helpers.cc b/src/google/protobuf/compiler/java/helpers.cc index 379607006a..5953fa82a2 100644 --- a/src/google/protobuf/compiler/java/helpers.cc +++ b/src/google/protobuf/compiler/java/helpers.cc @@ -109,7 +109,7 @@ const std::unordered_set* kReservedNames = }); bool IsForbidden(const std::string& field_name) { - for (int i = 0; i < GOOGLE_ARRAYSIZE(kForbiddenWordList); ++i) { + for (size_t i = 0; i < ABSL_ARRAYSIZE(kForbiddenWordList); ++i) { if (UnderscoresToCamelCase(field_name, true) == kForbiddenWordList[i]) { return true; } diff --git a/src/google/protobuf/compiler/java/kotlin_generator.h b/src/google/protobuf/compiler/java/kotlin_generator.h index ccd9688ca0..28b3fa22fb 100644 --- a/src/google/protobuf/compiler/java/kotlin_generator.h +++ b/src/google/protobuf/compiler/java/kotlin_generator.h @@ -52,6 +52,8 @@ namespace java { class PROTOC_EXPORT KotlinGenerator : public CodeGenerator { public: KotlinGenerator(); + KotlinGenerator(const KotlinGenerator&) = delete; + KotlinGenerator& operator=(const KotlinGenerator&) = delete; ~KotlinGenerator() override; // implements CodeGenerator ---------------------------------------- @@ -59,9 +61,6 @@ class PROTOC_EXPORT KotlinGenerator : public CodeGenerator { GeneratorContext* context, std::string* error) const override; uint64_t GetSupportedFeatures() const override; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(KotlinGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/message.h b/src/google/protobuf/compiler/java/message.h index 45da8ff646..56d4ba3a5f 100644 --- a/src/google/protobuf/compiler/java/message.h +++ b/src/google/protobuf/compiler/java/message.h @@ -64,6 +64,8 @@ static const int kMaxStaticSize = 1 << 15; // aka 32k class MessageGenerator { public: explicit MessageGenerator(const Descriptor* descriptor); + MessageGenerator(const MessageGenerator&) = delete; + MessageGenerator& operator=(const MessageGenerator&) = delete; virtual ~MessageGenerator(); // All static variables have to be declared at the top-level of the file @@ -93,14 +95,14 @@ class MessageGenerator { protected: const Descriptor* descriptor_; std::set oneofs_; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageGenerator); }; class ImmutableMessageGenerator : public MessageGenerator { public: ImmutableMessageGenerator(const Descriptor* descriptor, Context* context); + ImmutableMessageGenerator(const ImmutableMessageGenerator&) = delete; + ImmutableMessageGenerator& operator=(const ImmutableMessageGenerator&) = + delete; ~ImmutableMessageGenerator() override; void Generate(io::Printer* printer) override; @@ -139,8 +141,6 @@ class ImmutableMessageGenerator : public MessageGenerator { Context* context_; ClassNameResolver* name_resolver_; FieldGeneratorMap field_generators_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableMessageGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/message_builder.h b/src/google/protobuf/compiler/java/message_builder.h index f9c9a00a0c..27d85b35f3 100644 --- a/src/google/protobuf/compiler/java/message_builder.h +++ b/src/google/protobuf/compiler/java/message_builder.h @@ -63,6 +63,8 @@ class MessageBuilderGenerator { public: explicit MessageBuilderGenerator(const Descriptor* descriptor, Context* context); + MessageBuilderGenerator(const MessageBuilderGenerator&) = delete; + MessageBuilderGenerator& operator=(const MessageBuilderGenerator&) = delete; virtual ~MessageBuilderGenerator(); virtual void Generate(io::Printer* printer); @@ -78,8 +80,6 @@ class MessageBuilderGenerator { ClassNameResolver* name_resolver_; FieldGeneratorMap field_generators_; std::set oneofs_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageBuilderGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/message_builder_lite.h b/src/google/protobuf/compiler/java/message_builder_lite.h index 0d895fcf05..fd64d0c0e3 100644 --- a/src/google/protobuf/compiler/java/message_builder_lite.h +++ b/src/google/protobuf/compiler/java/message_builder_lite.h @@ -63,6 +63,9 @@ class MessageBuilderLiteGenerator { public: explicit MessageBuilderLiteGenerator(const Descriptor* descriptor, Context* context); + MessageBuilderLiteGenerator(const MessageBuilderLiteGenerator&) = delete; + MessageBuilderLiteGenerator& operator=(const MessageBuilderLiteGenerator&) = + delete; virtual ~MessageBuilderLiteGenerator(); virtual void Generate(io::Printer* printer); @@ -75,8 +78,6 @@ class MessageBuilderLiteGenerator { ClassNameResolver* name_resolver_; FieldGeneratorMap field_generators_; std::set oneofs_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageBuilderLiteGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/message_field.h b/src/google/protobuf/compiler/java/message_field.h index f717e3dfad..88214a9893 100644 --- a/src/google/protobuf/compiler/java/message_field.h +++ b/src/google/protobuf/compiler/java/message_field.h @@ -62,6 +62,10 @@ class ImmutableMessageFieldGenerator : public ImmutableFieldGenerator { int messageBitIndex, int builderBitIndex, Context* context); + ImmutableMessageFieldGenerator(const ImmutableMessageFieldGenerator&) = + delete; + ImmutableMessageFieldGenerator& operator=( + const ImmutableMessageFieldGenerator&) = delete; ~ImmutableMessageFieldGenerator() override; // implements ImmutableFieldGenerator @@ -103,7 +107,6 @@ class ImmutableMessageFieldGenerator : public ImmutableFieldGenerator { const char* trailing_code) const; private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableMessageFieldGenerator); void GenerateKotlinOrNull(io::Printer* printer) const; }; @@ -113,6 +116,10 @@ class ImmutableMessageOneofFieldGenerator ImmutableMessageOneofFieldGenerator(const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex, Context* context); + ImmutableMessageOneofFieldGenerator( + const ImmutableMessageOneofFieldGenerator&) = delete; + ImmutableMessageOneofFieldGenerator& operator=( + const ImmutableMessageOneofFieldGenerator&) = delete; ~ImmutableMessageOneofFieldGenerator() override; void GenerateMembers(io::Printer* printer) const override; @@ -122,9 +129,6 @@ class ImmutableMessageOneofFieldGenerator void GenerateParsingCode(io::Printer* printer) const override; void GenerateSerializationCode(io::Printer* printer) const override; void GenerateSerializedSizeCode(io::Printer* printer) const override; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableMessageOneofFieldGenerator); }; class RepeatedImmutableMessageFieldGenerator : public ImmutableFieldGenerator { @@ -132,6 +136,10 @@ class RepeatedImmutableMessageFieldGenerator : public ImmutableFieldGenerator { explicit RepeatedImmutableMessageFieldGenerator( const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex, Context* context); + RepeatedImmutableMessageFieldGenerator( + const RepeatedImmutableMessageFieldGenerator&) = delete; + RepeatedImmutableMessageFieldGenerator& operator=( + const RepeatedImmutableMessageFieldGenerator&) = delete; ~RepeatedImmutableMessageFieldGenerator() override; // implements ImmutableFieldGenerator --------------------------------------- @@ -169,9 +177,6 @@ class RepeatedImmutableMessageFieldGenerator : public ImmutableFieldGenerator { const char* regular_case, const char* nested_builder_case, const char* trailing_code) const; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableMessageFieldGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/message_field_lite.h b/src/google/protobuf/compiler/java/message_field_lite.h index 24ee91f999..6ed2404c9c 100644 --- a/src/google/protobuf/compiler/java/message_field_lite.h +++ b/src/google/protobuf/compiler/java/message_field_lite.h @@ -62,6 +62,10 @@ class ImmutableMessageFieldLiteGenerator : public ImmutableFieldLiteGenerator { explicit ImmutableMessageFieldLiteGenerator(const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + ImmutableMessageFieldLiteGenerator( + const ImmutableMessageFieldLiteGenerator&) = delete; + ImmutableMessageFieldLiteGenerator& operator=( + const ImmutableMessageFieldLiteGenerator&) = delete; ~ImmutableMessageFieldLiteGenerator() override; // implements ImmutableFieldLiteGenerator @@ -85,7 +89,6 @@ class ImmutableMessageFieldLiteGenerator : public ImmutableFieldLiteGenerator { Context* context_; private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableMessageFieldLiteGenerator); void GenerateKotlinOrNull(io::Printer* printer) const; }; @@ -95,6 +98,10 @@ class ImmutableMessageOneofFieldLiteGenerator ImmutableMessageOneofFieldLiteGenerator(const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + ImmutableMessageOneofFieldLiteGenerator( + const ImmutableMessageOneofFieldLiteGenerator&) = delete; + ImmutableMessageOneofFieldLiteGenerator& operator=( + const ImmutableMessageOneofFieldLiteGenerator&) = delete; ~ImmutableMessageOneofFieldLiteGenerator() override; void GenerateMembers(io::Printer* printer) const override; @@ -102,8 +109,6 @@ class ImmutableMessageOneofFieldLiteGenerator void GenerateFieldInfo(io::Printer* printer, std::vector* output) const override; - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableMessageOneofFieldLiteGenerator); }; class RepeatedImmutableMessageFieldLiteGenerator @@ -111,6 +116,10 @@ class RepeatedImmutableMessageFieldLiteGenerator public: explicit RepeatedImmutableMessageFieldLiteGenerator( const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + RepeatedImmutableMessageFieldLiteGenerator( + const RepeatedImmutableMessageFieldLiteGenerator&) = delete; + RepeatedImmutableMessageFieldLiteGenerator& operator=( + const RepeatedImmutableMessageFieldLiteGenerator&) = delete; ~RepeatedImmutableMessageFieldLiteGenerator() override; // implements ImmutableFieldLiteGenerator ------------------------------------ @@ -130,9 +139,6 @@ class RepeatedImmutableMessageFieldLiteGenerator std::map variables_; ClassNameResolver* name_resolver_; Context* context_; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableMessageFieldLiteGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/message_lite.h b/src/google/protobuf/compiler/java/message_lite.h index d1e4b68949..a9c1733108 100644 --- a/src/google/protobuf/compiler/java/message_lite.h +++ b/src/google/protobuf/compiler/java/message_lite.h @@ -46,6 +46,9 @@ namespace java { class ImmutableMessageLiteGenerator : public MessageGenerator { public: ImmutableMessageLiteGenerator(const Descriptor* descriptor, Context* context); + ImmutableMessageLiteGenerator(const ImmutableMessageLiteGenerator&) = delete; + ImmutableMessageLiteGenerator& operator=( + const ImmutableMessageLiteGenerator&) = delete; ~ImmutableMessageLiteGenerator() override; void Generate(io::Printer* printer) override; @@ -73,8 +76,6 @@ class ImmutableMessageLiteGenerator : public MessageGenerator { Context* context_; ClassNameResolver* name_resolver_; FieldGeneratorMap field_generators_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableMessageLiteGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/message_serialization_unittest.cc b/src/google/protobuf/compiler/java/message_serialization_unittest.cc index 117550895b..c2bcb92878 100644 --- a/src/google/protobuf/compiler/java/message_serialization_unittest.cc +++ b/src/google/protobuf/compiler/java/message_serialization_unittest.cc @@ -73,8 +73,7 @@ int CompileJavaProto(std::string proto_file_name) { proto_file_name.c_str(), }; - // Open-source codebase does not support ABSL_ARRAYSIZE. - return cli.Run(sizeof(argv) / sizeof(*argv), argv); + return cli.Run(4, argv); } TEST(MessageSerializationTest, CollapseAdjacentExtensionRanges) { diff --git a/src/google/protobuf/compiler/java/primitive_field.h b/src/google/protobuf/compiler/java/primitive_field.h index f8ffc569ad..1df9dcfe28 100644 --- a/src/google/protobuf/compiler/java/primitive_field.h +++ b/src/google/protobuf/compiler/java/primitive_field.h @@ -62,6 +62,10 @@ class ImmutablePrimitiveFieldGenerator : public ImmutableFieldGenerator { int messageBitIndex, int builderBitIndex, Context* context); + ImmutablePrimitiveFieldGenerator(const ImmutablePrimitiveFieldGenerator&) = + delete; + ImmutablePrimitiveFieldGenerator& operator=( + const ImmutablePrimitiveFieldGenerator&) = delete; ~ImmutablePrimitiveFieldGenerator() override; // implements ImmutableFieldGenerator @@ -91,9 +95,6 @@ class ImmutablePrimitiveFieldGenerator : public ImmutableFieldGenerator { const FieldDescriptor* descriptor_; std::map variables_; ClassNameResolver* name_resolver_; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutablePrimitiveFieldGenerator); }; class ImmutablePrimitiveOneofFieldGenerator @@ -102,6 +103,10 @@ class ImmutablePrimitiveOneofFieldGenerator ImmutablePrimitiveOneofFieldGenerator(const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex, Context* context); + ImmutablePrimitiveOneofFieldGenerator( + const ImmutablePrimitiveOneofFieldGenerator&) = delete; + ImmutablePrimitiveOneofFieldGenerator& operator=( + const ImmutablePrimitiveOneofFieldGenerator&) = delete; ~ImmutablePrimitiveOneofFieldGenerator() override; void GenerateMembers(io::Printer* printer) const override; @@ -111,9 +116,6 @@ class ImmutablePrimitiveOneofFieldGenerator void GenerateParsingCode(io::Printer* printer) const override; void GenerateSerializationCode(io::Printer* printer) const override; void GenerateSerializedSizeCode(io::Printer* printer) const override; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutablePrimitiveOneofFieldGenerator); }; class RepeatedImmutablePrimitiveFieldGenerator @@ -122,6 +124,10 @@ class RepeatedImmutablePrimitiveFieldGenerator explicit RepeatedImmutablePrimitiveFieldGenerator( const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex, Context* context); + RepeatedImmutablePrimitiveFieldGenerator( + const RepeatedImmutablePrimitiveFieldGenerator&) = delete; + RepeatedImmutablePrimitiveFieldGenerator& operator=( + const RepeatedImmutablePrimitiveFieldGenerator&) = delete; ~RepeatedImmutablePrimitiveFieldGenerator() override; // implements ImmutableFieldGenerator --------------------------------------- @@ -151,8 +157,6 @@ class RepeatedImmutablePrimitiveFieldGenerator const FieldDescriptor* descriptor_; std::map variables_; ClassNameResolver* name_resolver_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutablePrimitiveFieldGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/primitive_field_lite.h b/src/google/protobuf/compiler/java/primitive_field_lite.h index 392f1c4693..0cddbed43d 100644 --- a/src/google/protobuf/compiler/java/primitive_field_lite.h +++ b/src/google/protobuf/compiler/java/primitive_field_lite.h @@ -62,6 +62,10 @@ class ImmutablePrimitiveFieldLiteGenerator public: explicit ImmutablePrimitiveFieldLiteGenerator( const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + ImmutablePrimitiveFieldLiteGenerator( + const ImmutablePrimitiveFieldLiteGenerator&) = delete; + ImmutablePrimitiveFieldLiteGenerator& operator=( + const ImmutablePrimitiveFieldLiteGenerator&) = delete; ~ImmutablePrimitiveFieldLiteGenerator() override; // implements ImmutableFieldLiteGenerator @@ -83,9 +87,6 @@ class ImmutablePrimitiveFieldLiteGenerator const int messageBitIndex_; Context* context_; ClassNameResolver* name_resolver_; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutablePrimitiveFieldLiteGenerator); }; class ImmutablePrimitiveOneofFieldLiteGenerator @@ -94,6 +95,10 @@ class ImmutablePrimitiveOneofFieldLiteGenerator ImmutablePrimitiveOneofFieldLiteGenerator(const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + ImmutablePrimitiveOneofFieldLiteGenerator( + const ImmutablePrimitiveOneofFieldLiteGenerator&) = delete; + ImmutablePrimitiveOneofFieldLiteGenerator& operator=( + const ImmutablePrimitiveOneofFieldLiteGenerator&) = delete; ~ImmutablePrimitiveOneofFieldLiteGenerator() override; void GenerateMembers(io::Printer* printer) const override; @@ -101,9 +106,6 @@ class ImmutablePrimitiveOneofFieldLiteGenerator void GenerateFieldInfo(io::Printer* printer, std::vector* output) const override; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutablePrimitiveOneofFieldLiteGenerator); }; class RepeatedImmutablePrimitiveFieldLiteGenerator @@ -111,6 +113,10 @@ class RepeatedImmutablePrimitiveFieldLiteGenerator public: explicit RepeatedImmutablePrimitiveFieldLiteGenerator( const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + RepeatedImmutablePrimitiveFieldLiteGenerator( + const RepeatedImmutablePrimitiveFieldLiteGenerator&) = delete; + RepeatedImmutablePrimitiveFieldLiteGenerator& operator=( + const RepeatedImmutablePrimitiveFieldLiteGenerator&) = delete; ~RepeatedImmutablePrimitiveFieldLiteGenerator() override; // implements ImmutableFieldLiteGenerator ------------------------------------ @@ -130,8 +136,6 @@ class RepeatedImmutablePrimitiveFieldLiteGenerator std::map variables_; Context* context_; ClassNameResolver* name_resolver_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutablePrimitiveFieldLiteGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/service.h b/src/google/protobuf/compiler/java/service.h index 9cb9021628..22fcd3c8c5 100644 --- a/src/google/protobuf/compiler/java/service.h +++ b/src/google/protobuf/compiler/java/service.h @@ -60,6 +60,8 @@ namespace java { class ServiceGenerator { public: explicit ServiceGenerator(const ServiceDescriptor* descriptor); + ServiceGenerator(const ServiceGenerator&) = delete; + ServiceGenerator& operator=(const ServiceGenerator&) = delete; virtual ~ServiceGenerator(); virtual void Generate(io::Printer* printer) = 0; @@ -69,15 +71,15 @@ class ServiceGenerator { protected: const ServiceDescriptor* descriptor_; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ServiceGenerator); }; class ImmutableServiceGenerator : public ServiceGenerator { public: ImmutableServiceGenerator(const ServiceDescriptor* descriptor, Context* context); + ImmutableServiceGenerator(const ImmutableServiceGenerator&) = delete; + ImmutableServiceGenerator& operator=(const ImmutableServiceGenerator&) = + delete; ~ImmutableServiceGenerator() override; void Generate(io::Printer* printer) override; @@ -128,7 +130,6 @@ class ImmutableServiceGenerator : public ServiceGenerator { Context* context_; ClassNameResolver* name_resolver_; - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableServiceGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/shared_code_generator.h b/src/google/protobuf/compiler/java/shared_code_generator.h index b1f6eb3cab..cb897d84d2 100644 --- a/src/google/protobuf/compiler/java/shared_code_generator.h +++ b/src/google/protobuf/compiler/java/shared_code_generator.h @@ -67,6 +67,8 @@ namespace java { class SharedCodeGenerator { public: SharedCodeGenerator(const FileDescriptor* file, const Options& options); + SharedCodeGenerator(const SharedCodeGenerator&) = delete; + SharedCodeGenerator& operator=(const SharedCodeGenerator&) = delete; ~SharedCodeGenerator(); void Generate(GeneratorContext* generator_context, @@ -79,7 +81,6 @@ class SharedCodeGenerator { std::unique_ptr name_resolver_; const FileDescriptor* file_; const Options options_; - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(SharedCodeGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/string_field.h b/src/google/protobuf/compiler/java/string_field.h index b38d8e15bc..72b4b60203 100644 --- a/src/google/protobuf/compiler/java/string_field.h +++ b/src/google/protobuf/compiler/java/string_field.h @@ -62,6 +62,9 @@ class ImmutableStringFieldGenerator : public ImmutableFieldGenerator { explicit ImmutableStringFieldGenerator(const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex, Context* context); + ImmutableStringFieldGenerator(const ImmutableStringFieldGenerator&) = delete; + ImmutableStringFieldGenerator& operator=( + const ImmutableStringFieldGenerator&) = delete; ~ImmutableStringFieldGenerator() override; // implements ImmutableFieldGenerator @@ -91,9 +94,6 @@ class ImmutableStringFieldGenerator : public ImmutableFieldGenerator { const FieldDescriptor* descriptor_; std::map variables_; ClassNameResolver* name_resolver_; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableStringFieldGenerator); }; class ImmutableStringOneofFieldGenerator @@ -102,6 +102,10 @@ class ImmutableStringOneofFieldGenerator ImmutableStringOneofFieldGenerator(const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex, Context* context); + ImmutableStringOneofFieldGenerator( + const ImmutableStringOneofFieldGenerator&) = delete; + ImmutableStringOneofFieldGenerator& operator=( + const ImmutableStringOneofFieldGenerator&) = delete; ~ImmutableStringOneofFieldGenerator() override; private: @@ -112,8 +116,6 @@ class ImmutableStringOneofFieldGenerator void GenerateParsingCode(io::Printer* printer) const override; void GenerateSerializationCode(io::Printer* printer) const override; void GenerateSerializedSizeCode(io::Printer* printer) const override; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableStringOneofFieldGenerator); }; class RepeatedImmutableStringFieldGenerator : public ImmutableFieldGenerator { @@ -121,6 +123,10 @@ class RepeatedImmutableStringFieldGenerator : public ImmutableFieldGenerator { explicit RepeatedImmutableStringFieldGenerator( const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex, Context* context); + RepeatedImmutableStringFieldGenerator( + const RepeatedImmutableStringFieldGenerator&) = delete; + RepeatedImmutableStringFieldGenerator& operator=( + const RepeatedImmutableStringFieldGenerator&) = delete; ~RepeatedImmutableStringFieldGenerator() override; // implements ImmutableFieldGenerator --------------------------------------- @@ -149,8 +155,6 @@ class RepeatedImmutableStringFieldGenerator : public ImmutableFieldGenerator { const FieldDescriptor* descriptor_; std::map variables_; ClassNameResolver* name_resolver_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableStringFieldGenerator); }; } // namespace java diff --git a/src/google/protobuf/compiler/java/string_field_lite.h b/src/google/protobuf/compiler/java/string_field_lite.h index 2f9b4931e4..f1cf26bfec 100644 --- a/src/google/protobuf/compiler/java/string_field_lite.h +++ b/src/google/protobuf/compiler/java/string_field_lite.h @@ -63,6 +63,10 @@ class ImmutableStringFieldLiteGenerator : public ImmutableFieldLiteGenerator { explicit ImmutableStringFieldLiteGenerator(const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + ImmutableStringFieldLiteGenerator(const ImmutableStringFieldLiteGenerator&) = + delete; + ImmutableStringFieldLiteGenerator& operator=( + const ImmutableStringFieldLiteGenerator&) = delete; ~ImmutableStringFieldLiteGenerator() override; // implements ImmutableFieldLiteGenerator @@ -84,9 +88,6 @@ class ImmutableStringFieldLiteGenerator : public ImmutableFieldLiteGenerator { const int messageBitIndex_; ClassNameResolver* name_resolver_; Context* context_; - - private: - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableStringFieldLiteGenerator); }; class ImmutableStringOneofFieldLiteGenerator @@ -94,6 +95,10 @@ class ImmutableStringOneofFieldLiteGenerator public: ImmutableStringOneofFieldLiteGenerator(const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + ImmutableStringOneofFieldLiteGenerator( + const ImmutableStringOneofFieldLiteGenerator&) = delete; + ImmutableStringOneofFieldLiteGenerator& operator=( + const ImmutableStringOneofFieldLiteGenerator&) = delete; ~ImmutableStringOneofFieldLiteGenerator() override; private: @@ -101,8 +106,6 @@ class ImmutableStringOneofFieldLiteGenerator void GenerateBuilderMembers(io::Printer* printer) const override; void GenerateFieldInfo(io::Printer* printer, std::vector* output) const override; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableStringOneofFieldLiteGenerator); }; class RepeatedImmutableStringFieldLiteGenerator @@ -110,6 +113,10 @@ class RepeatedImmutableStringFieldLiteGenerator public: explicit RepeatedImmutableStringFieldLiteGenerator( const FieldDescriptor* descriptor, int messageBitIndex, Context* context); + RepeatedImmutableStringFieldLiteGenerator( + const RepeatedImmutableStringFieldLiteGenerator&) = delete; + RepeatedImmutableStringFieldLiteGenerator& operator=( + const RepeatedImmutableStringFieldLiteGenerator&) = delete; ~RepeatedImmutableStringFieldLiteGenerator() override; // implements ImmutableFieldLiteGenerator ------------------------------------ @@ -129,8 +136,6 @@ class RepeatedImmutableStringFieldLiteGenerator std::map variables_; ClassNameResolver* name_resolver_; Context* context_; - - GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableStringFieldLiteGenerator); }; } // namespace java diff --git a/src/google/protobuf/message.cc b/src/google/protobuf/message.cc index 878269184b..6eaf90c278 100644 --- a/src/google/protobuf/message.cc +++ b/src/google/protobuf/message.cc @@ -44,6 +44,7 @@ #include #include "absl/base/casts.h" #include "absl/container/flat_hash_map.h" +#include "absl/container/flat_hash_set.h" #include "absl/strings/str_join.h" #include "absl/strings/string_view.h" #include "absl/synchronization/mutex.h" @@ -60,7 +61,6 @@ #include #include #include -#include #include @@ -255,10 +255,54 @@ class GeneratedMessageFactory final : public MessageFactory { const Message* GetPrototype(const Descriptor* type) override; private: + const Message* FindInTypeMap(const Descriptor* type) + ABSL_SHARED_LOCKS_REQUIRED(mutex_) + { + auto it = type_map_.find(type); + if (it == type_map_.end()) return nullptr; + return it->second; + } + + const google::protobuf::internal::DescriptorTable* FindInFileMap( + absl::string_view name) { + auto it = files_.find(name); + if (it == files_.end()) return nullptr; + return *it; + } + + struct DescriptorByNameHash { + using is_transparent = void; + size_t operator()(const google::protobuf::internal::DescriptorTable* t) const { + return absl::HashOf(absl::string_view{t->filename}); + } + + size_t operator()(absl::string_view name) const { + return absl::HashOf(name); + } + }; + struct DescriptorByNameEq { + using is_transparent = void; + bool operator()(const google::protobuf::internal::DescriptorTable* lhs, + const google::protobuf::internal::DescriptorTable* rhs) const { + return lhs == rhs || (*this)(lhs->filename, rhs->filename); + } + bool operator()(absl::string_view lhs, + const google::protobuf::internal::DescriptorTable* rhs) const { + return (*this)(lhs, rhs->filename); + } + bool operator()(const google::protobuf::internal::DescriptorTable* lhs, + absl::string_view rhs) const { + return (*this)(lhs->filename, rhs); + } + bool operator()(absl::string_view lhs, absl::string_view rhs) const { + return lhs == rhs; + } + }; + // Only written at static init time, so does not require locking. - absl::flat_hash_map - file_map_; + absl::flat_hash_set + files_; absl::Mutex mutex_; absl::flat_hash_map type_map_ @@ -273,7 +317,7 @@ GeneratedMessageFactory* GeneratedMessageFactory::singleton() { void GeneratedMessageFactory::RegisterFile( const google::protobuf::internal::DescriptorTable* table) { - if (!InsertIfNotPresent(&file_map_, table->filename, table)) { + if (!files_.insert(table).second) { GOOGLE_LOG(FATAL) << "File is already registered: " << table->filename; } } @@ -288,7 +332,7 @@ void GeneratedMessageFactory::RegisterType(const Descriptor* descriptor, // function during GetPrototype(), in which case we already have locked // the mutex. mutex_.AssertHeld(); - if (!InsertIfNotPresent(&type_map_, descriptor, prototype)) { + if (!type_map_.try_emplace(descriptor, prototype).second) { GOOGLE_LOG(DFATAL) << "Type is already registered: " << descriptor->full_name(); } } @@ -297,7 +341,7 @@ void GeneratedMessageFactory::RegisterType(const Descriptor* descriptor, const Message* GeneratedMessageFactory::GetPrototype(const Descriptor* type) { { absl::ReaderMutexLock lock(&mutex_); - const Message* result = FindPtrOrNull(type_map_, type); + const Message* result = FindInTypeMap(type); if (result != nullptr) return result; } @@ -307,7 +351,7 @@ const Message* GeneratedMessageFactory::GetPrototype(const Descriptor* type) { // Apparently the file hasn't been registered yet. Let's do that now. const internal::DescriptorTable* registration_data = - FindPtrOrNull(file_map_, type->file()->name()); + FindInFileMap(type->file()->name()); if (registration_data == nullptr) { GOOGLE_LOG(DFATAL) << "File appears to be in generated pool but wasn't " "registered: " @@ -318,12 +362,12 @@ const Message* GeneratedMessageFactory::GetPrototype(const Descriptor* type) { absl::WriterMutexLock lock(&mutex_); // Check if another thread preempted us. - const Message* result = FindPtrOrNull(type_map_, type); + const Message* result = FindInTypeMap(type); if (result == nullptr) { // Nope. OK, register everything. internal::RegisterFileLevelMetadata(registration_data); // Should be here now. - result = FindPtrOrNull(type_map_, type); + result = FindInTypeMap(type); } if (result == nullptr) { diff --git a/src/google/protobuf/port.h b/src/google/protobuf/port.h index 9d39111e99..6dab2af72a 100644 --- a/src/google/protobuf/port.h +++ b/src/google/protobuf/port.h @@ -47,8 +47,6 @@ namespace google { namespace protobuf { - - namespace internal { diff --git a/src/google/protobuf/unittest_drop_unknown_fields.proto b/src/google/protobuf/unittest_drop_unknown_fields.proto index d6a8cc740d..a8a98ad394 100644 --- a/src/google/protobuf/unittest_drop_unknown_fields.proto +++ b/src/google/protobuf/unittest_drop_unknown_fields.proto @@ -32,6 +32,7 @@ syntax = "proto3"; package unittest_drop_unknown_fields; +option objc_class_prefix = "DropUnknowns"; option csharp_namespace = "Google.Protobuf.TestProtos"; message Foo { diff --git a/src/google/protobuf/unittest_preserve_unknown_enum.proto b/src/google/protobuf/unittest_preserve_unknown_enum.proto index f73b764aa1..2f91332c9e 100644 --- a/src/google/protobuf/unittest_preserve_unknown_enum.proto +++ b/src/google/protobuf/unittest_preserve_unknown_enum.proto @@ -31,6 +31,7 @@ syntax = "proto3"; package proto3_preserve_unknown_enum_unittest; +option objc_class_prefix = "UnknownEnums"; option csharp_namespace = "Google.Protobuf.TestProtos"; diff --git a/src/google/protobuf/util/field_comparator.cc b/src/google/protobuf/util/field_comparator.cc index 5d8e865ad8..e3dc0059d2 100644 --- a/src/google/protobuf/util/field_comparator.cc +++ b/src/google/protobuf/util/field_comparator.cc @@ -38,7 +38,6 @@ #include #include #include -#include #include namespace google { @@ -183,19 +182,23 @@ bool SimpleFieldComparator::CompareDoubleOrFloat(const FieldDescriptor& field, return true; } // float_comparison_ == APPROXIMATE covers two use cases. - Tolerance* tolerance = FindOrNull(map_tolerance_, &field); - if (tolerance == NULL && has_default_tolerance_) { - tolerance = &default_tolerance_; + Tolerance* tolerance = nullptr; + if (has_default_tolerance_) tolerance = &default_tolerance_; + + auto it = map_tolerance_.find(&field); + if (it != map_tolerance_.end()) { + tolerance = &it->second; } - if (tolerance == NULL) { - return MathUtil::AlmostEquals(value_1, value_2); - } else { + + if (tolerance != nullptr) { // Use user-provided fraction and margin. Since they are stored as // doubles, we explicitly cast them to types of values provided. This // is very likely to fail if provided values are not numeric. return MathUtil::WithinFractionOrMargin( value_1, value_2, static_cast(tolerance->fraction), static_cast(tolerance->margin)); + } else { + return MathUtil::AlmostEquals(value_1, value_2); } } } diff --git a/src/google/protobuf/util/field_mask_util.cc b/src/google/protobuf/util/field_mask_util.cc index 8247f28304..b736c2b5ce 100644 --- a/src/google/protobuf/util/field_mask_util.cc +++ b/src/google/protobuf/util/field_mask_util.cc @@ -35,7 +35,6 @@ #include #include "absl/strings/str_join.h" #include -#include // Must be included last. #include @@ -251,9 +250,8 @@ class FieldMaskTree { ~Node() { ClearChildren(); } void ClearChildren() { - for (std::map::iterator it = children.begin(); - it != children.end(); ++it) { - delete it->second; + for (auto& p : children) { + delete p.second; } children.clear(); } @@ -390,14 +388,11 @@ void FieldMaskTree::RemovePath(const std::string& path, node->children[current_descriptor->field(j)->name()] = new Node(); } } - if (ContainsKey(node->children, parts[i])) { - node = node->children[parts[i]]; - if (field_descriptor->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { - current_descriptor = field_descriptor->message_type(); - } - } else { - // Path does not exist. - return; + auto it = node->children.find(parts[i]); + if (it == node->children.end()) return; + node = it->second; + if (field_descriptor->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) { + current_descriptor = field_descriptor->message_type(); } } // Remove path. @@ -423,12 +418,12 @@ void FieldMaskTree::IntersectPath(const std::string& path, FieldMaskTree* out) { } return; } - const Node* result = FindPtrOrNull(node->children, node_name); - if (result == nullptr) { + auto it = node->children.find(node_name); + if (it == node->children.end()) { // No intersection found. return; } - node = result; + node = it->second; } // Now we found a matching node with the given path. Add all leaf nodes // to out.