1 // Protocol Buffers - Google's data interchange format 2 // Copyright 2008 Google Inc. All rights reserved. 3 // 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file or at 6 // https://developers.google.com/open-source/licenses/bsd 7 8 #ifndef GOOGLE_PROTOBUF_COMPILER_CSHARP_REPEATED_MESSAGE_FIELD_H__ 9 #define GOOGLE_PROTOBUF_COMPILER_CSHARP_REPEATED_MESSAGE_FIELD_H__ 10 11 #include "google/protobuf/compiler/code_generator.h" 12 #include "google/protobuf/compiler/csharp/csharp_field_base.h" 13 14 namespace google { 15 namespace protobuf { 16 namespace compiler { 17 namespace csharp { 18 19 struct Options; 20 21 class RepeatedMessageFieldGenerator : public FieldGeneratorBase { 22 public: 23 RepeatedMessageFieldGenerator(const FieldDescriptor* descriptor, 24 int presenceIndex, 25 const Options *options); 26 ~RepeatedMessageFieldGenerator(); 27 28 RepeatedMessageFieldGenerator(const RepeatedMessageFieldGenerator&) = delete; 29 RepeatedMessageFieldGenerator& operator=( 30 const RepeatedMessageFieldGenerator&) = delete; 31 32 virtual void GenerateCloningCode(io::Printer* printer) override; 33 virtual void GenerateFreezingCode(io::Printer* printer) override; 34 virtual void GenerateMembers(io::Printer* printer) override; 35 virtual void GenerateMergingCode(io::Printer* printer) override; 36 virtual void GenerateParsingCode(io::Printer* printer) override; 37 virtual void GenerateParsingCode(io::Printer* printer, bool use_parse_context) override; 38 virtual void GenerateSerializationCode(io::Printer* printer) override; 39 virtual void GenerateSerializationCode(io::Printer* printer, bool use_write_context) override; 40 virtual void GenerateSerializedSizeCode(io::Printer* printer) override; 41 virtual void GenerateExtensionCode(io::Printer* printer) override; 42 43 virtual void WriteHash(io::Printer* printer) override; 44 virtual void WriteEquals(io::Printer* printer) override; 45 virtual void WriteToString(io::Printer* printer) override; 46 }; 47 48 } // namespace csharp 49 } // namespace compiler 50 } // namespace protobuf 51 } // namespace google 52 53 #endif // GOOGLE_PROTOBUF_COMPILER_CSHARP_REPEATED_MESSAGE_FIELD_H__ 54 55