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_ENUM_FIELD_H__ 9 #define GOOGLE_PROTOBUF_COMPILER_CSHARP_ENUM_FIELD_H__ 10 11 #include "google/protobuf/compiler/code_generator.h" 12 #include "google/protobuf/compiler/csharp/csharp_primitive_field.h" 13 14 namespace google { 15 namespace protobuf { 16 namespace compiler { 17 namespace csharp { 18 19 class EnumFieldGenerator : public PrimitiveFieldGenerator { 20 public: 21 EnumFieldGenerator(const FieldDescriptor* descriptor, 22 int presenceIndex, 23 const Options *options); 24 ~EnumFieldGenerator(); 25 26 EnumFieldGenerator(const EnumFieldGenerator&) = delete; 27 EnumFieldGenerator& operator=(const EnumFieldGenerator&) = delete; 28 29 virtual void GenerateCodecCode(io::Printer* printer) override; 30 virtual void GenerateParsingCode(io::Printer* printer) override; 31 virtual void GenerateSerializationCode(io::Printer* printer) override; 32 virtual void GenerateSerializedSizeCode(io::Printer* printer) override; 33 virtual void GenerateExtensionCode(io::Printer* printer) override; 34 }; 35 36 class EnumOneofFieldGenerator : public PrimitiveOneofFieldGenerator { 37 public: 38 EnumOneofFieldGenerator(const FieldDescriptor* descriptor, 39 int presenceIndex, 40 const Options *options); 41 ~EnumOneofFieldGenerator(); 42 43 EnumOneofFieldGenerator(const EnumOneofFieldGenerator&) = delete; 44 EnumOneofFieldGenerator& operator=(const EnumOneofFieldGenerator&) = delete; 45 46 virtual void GenerateMergingCode(io::Printer* printer) override; 47 virtual void GenerateParsingCode(io::Printer* printer) override; 48 virtual void GenerateSerializationCode(io::Printer* printer) override; 49 virtual void GenerateSerializedSizeCode(io::Printer* printer) override; 50 }; 51 52 } // namespace csharp 53 } // namespace compiler 54 } // namespace protobuf 55 } // namespace google 56 57 #endif // GOOGLE_PROTOBUF_COMPILER_CSHARP_ENUM_FIELD_H__ 58 59