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_ENUM_FIELD_H__ 9 #define GOOGLE_PROTOBUF_COMPILER_CSHARP_REPEATED_ENUM_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 // TODO: Refactor repeated field support; all the implementations are 20 // *really* similar. We should probably have a RepeatedFieldGeneratorBase. 21 class RepeatedEnumFieldGenerator : public FieldGeneratorBase { 22 public: 23 RepeatedEnumFieldGenerator(const FieldDescriptor* descriptor, 24 int presenceIndex, 25 const Options *options); 26 ~RepeatedEnumFieldGenerator(); 27 28 RepeatedEnumFieldGenerator(const RepeatedEnumFieldGenerator&) = delete; 29 RepeatedEnumFieldGenerator& operator=(const RepeatedEnumFieldGenerator&) = 30 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_ENUM_FIELD_H__ 54 55