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