• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_IMMUTABLE_FIELD_GENERATOR_H__
2 #define GOOGLE_PROTOBUF_COMPILER_JAVA_IMMUTABLE_FIELD_GENERATOR_H__
3 
4 #include <string>
5 
6 #include "google/protobuf/compiler/java/generator_common.h"
7 #include "google/protobuf/io/printer.h"
8 
9 namespace google {
10 namespace protobuf {
11 namespace compiler {
12 namespace java {
13 
14 class ImmutableFieldGenerator : public FieldGenerator {
15  public:
16   ImmutableFieldGenerator() = default;
17   ImmutableFieldGenerator(const ImmutableFieldGenerator&) = delete;
18   ImmutableFieldGenerator& operator=(const ImmutableFieldGenerator&) = delete;
19   ~ImmutableFieldGenerator() override = default;
20 
21   virtual int GetMessageBitIndex() const = 0;
22   virtual int GetBuilderBitIndex() const = 0;
23   virtual int GetNumBitsForMessage() const = 0;
24   virtual int GetNumBitsForBuilder() const = 0;
25   virtual void GenerateInterfaceMembers(io::Printer* printer) const = 0;
26   virtual void GenerateMembers(io::Printer* printer) const = 0;
27   virtual void GenerateBuilderMembers(io::Printer* printer) const = 0;
28   virtual void GenerateInitializationCode(io::Printer* printer) const = 0;
29   virtual void GenerateBuilderClearCode(io::Printer* printer) const = 0;
30   virtual void GenerateMergingCode(io::Printer* printer) const = 0;
31   virtual void GenerateBuildingCode(io::Printer* printer) const = 0;
32   virtual void GenerateBuilderParsingCode(io::Printer* printer) const = 0;
33   virtual void GenerateSerializedSizeCode(io::Printer* printer) const = 0;
34   virtual void GenerateFieldBuilderInitializationCode(
35       io::Printer* printer) const = 0;
36 
GenerateBuilderParsingCodeFromPacked(io::Printer * printer)37   virtual void GenerateBuilderParsingCodeFromPacked(
38       io::Printer* printer) const {
39     ReportUnexpectedPackedFieldsCall();
40   }
41 
42   virtual void GenerateEqualsCode(io::Printer* printer) const = 0;
43   virtual void GenerateHashCode(io::Printer* printer) const = 0;
44 
45   virtual std::string GetBoxedType() const = 0;
46 };
47 
48 }  // namespace java
49 }  // namespace compiler
50 }  // namespace protobuf
51 }  // namespace google
52 
53 #endif  // GOOGLE_PROTOBUF_COMPILER_JAVA_IMMUTABLE_FIELD_GENERATOR_H__
54