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_PRIMITIVE_FIELD_H__ 9 #define GOOGLE_PROTOBUF_COMPILER_CSHARP_PRIMITIVE_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 PrimitiveFieldGenerator : public FieldGeneratorBase { 22 public: 23 PrimitiveFieldGenerator(const FieldDescriptor* descriptor, 24 int presenceIndex, 25 const Options *options); 26 ~PrimitiveFieldGenerator(); 27 28 PrimitiveFieldGenerator(const PrimitiveFieldGenerator&) = delete; 29 PrimitiveFieldGenerator& operator=(const PrimitiveFieldGenerator&) = delete; 30 31 virtual void GenerateCodecCode(io::Printer* printer) override; 32 virtual void GenerateCloningCode(io::Printer* printer) override; 33 virtual void GenerateMembers(io::Printer* printer) override; 34 virtual void GenerateMergingCode(io::Printer* printer) override; 35 virtual void GenerateParsingCode(io::Printer* printer) override; 36 virtual void GenerateSerializationCode(io::Printer* printer) override; 37 virtual void GenerateSerializedSizeCode(io::Printer* printer) override; 38 virtual void GenerateExtensionCode(io::Printer* printer) override; 39 40 virtual void WriteHash(io::Printer* printer) override; 41 virtual void WriteEquals(io::Printer* printer) override; 42 virtual void WriteToString(io::Printer* printer) override; 43 44 protected: 45 bool is_value_type; 46 }; 47 48 class PrimitiveOneofFieldGenerator : public PrimitiveFieldGenerator { 49 public: 50 PrimitiveOneofFieldGenerator(const FieldDescriptor* descriptor, 51 int presenceIndex, 52 const Options *options); 53 ~PrimitiveOneofFieldGenerator(); 54 55 PrimitiveOneofFieldGenerator(const PrimitiveOneofFieldGenerator&) = delete; 56 PrimitiveOneofFieldGenerator& operator=(const PrimitiveOneofFieldGenerator&) = 57 delete; 58 59 virtual void GenerateCloningCode(io::Printer* printer) override; 60 virtual void GenerateMembers(io::Printer* printer) override; 61 virtual void GenerateMergingCode(io::Printer* printer) override; 62 virtual void WriteToString(io::Printer* printer) override; 63 virtual void GenerateParsingCode(io::Printer* printer) override; 64 }; 65 66 } // namespace csharp 67 } // namespace compiler 68 } // namespace protobuf 69 } // namespace google 70 71 #endif // GOOGLE_PROTOBUF_COMPILER_CSHARP_PRIMITIVE_FIELD_H__ 72 73