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