43
43
namespace protobuf {
46
class Context; // context.h
47
class ClassNameResolver; // name_resolver.h
44
53
namespace compiler {
47
class MessageFieldGenerator : public FieldGenerator {
49
explicit MessageFieldGenerator(const FieldDescriptor* descriptor,
50
int messageBitIndex, int builderBitIndex);
51
~MessageFieldGenerator();
53
// implements FieldGenerator ---------------------------------------
54
int GetNumBitsForMessage() const;
55
int GetNumBitsForBuilder() const;
56
void GenerateInterfaceMembers(io::Printer* printer) const;
57
void GenerateMembers(io::Printer* printer) const;
58
void GenerateBuilderMembers(io::Printer* printer) const;
59
void GenerateInitializationCode(io::Printer* printer) const;
60
void GenerateBuilderClearCode(io::Printer* printer) const;
61
void GenerateMergingCode(io::Printer* printer) const;
62
void GenerateBuildingCode(io::Printer* printer) const;
63
void GenerateParsingCode(io::Printer* printer) const;
64
void GenerateParsingDoneCode(io::Printer* printer) const;
65
void GenerateSerializationCode(io::Printer* printer) const;
66
void GenerateSerializedSizeCode(io::Printer* printer) const;
67
void GenerateFieldBuilderInitializationCode(io::Printer* printer) const;
68
void GenerateEqualsCode(io::Printer* printer) const;
69
void GenerateHashCode(io::Printer* printer) const;
71
string GetBoxedType() const;
74
const FieldDescriptor* descriptor_;
75
map<string, string> variables_;
76
const int messageBitIndex_;
77
const int builderBitIndex_;
79
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageFieldGenerator);
81
void PrintNestedBuilderCondition(io::Printer* printer,
82
const char* regular_case, const char* nested_builder_case) const;
83
void PrintNestedBuilderFunction(io::Printer* printer,
84
const char* method_prototype, const char* regular_case,
85
const char* nested_builder_case,
86
const char* trailing_code) const;
89
class RepeatedMessageFieldGenerator : public FieldGenerator {
91
explicit RepeatedMessageFieldGenerator(const FieldDescriptor* descriptor,
92
int messageBitIndex, int builderBitIndex);
93
~RepeatedMessageFieldGenerator();
95
// implements FieldGenerator ---------------------------------------
96
int GetNumBitsForMessage() const;
97
int GetNumBitsForBuilder() const;
98
void GenerateInterfaceMembers(io::Printer* printer) const;
99
void GenerateMembers(io::Printer* printer) const;
100
void GenerateBuilderMembers(io::Printer* printer) const;
101
void GenerateInitializationCode(io::Printer* printer) const;
102
void GenerateBuilderClearCode(io::Printer* printer) const;
103
void GenerateMergingCode(io::Printer* printer) const;
104
void GenerateBuildingCode(io::Printer* printer) const;
105
void GenerateParsingCode(io::Printer* printer) const;
106
void GenerateParsingDoneCode(io::Printer* printer) const;
107
void GenerateSerializationCode(io::Printer* printer) const;
108
void GenerateSerializedSizeCode(io::Printer* printer) const;
109
void GenerateFieldBuilderInitializationCode(io::Printer* printer) const;
110
void GenerateEqualsCode(io::Printer* printer) const;
111
void GenerateHashCode(io::Printer* printer) const;
113
string GetBoxedType() const;
116
const FieldDescriptor* descriptor_;
117
map<string, string> variables_;
118
const int messageBitIndex_;
119
const int builderBitIndex_;
121
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedMessageFieldGenerator);
123
void PrintNestedBuilderCondition(io::Printer* printer,
124
const char* regular_case, const char* nested_builder_case) const;
125
void PrintNestedBuilderFunction(io::Printer* printer,
126
const char* method_prototype, const char* regular_case,
127
const char* nested_builder_case,
128
const char* trailing_code) const;
56
class ImmutableMessageFieldGenerator : public ImmutableFieldGenerator {
58
explicit ImmutableMessageFieldGenerator(
59
const FieldDescriptor* descriptor, int messageBitIndex,
60
int builderBitIndex, Context* context);
61
~ImmutableMessageFieldGenerator();
63
// implements ImmutableFieldGenerator ---------------------------------------
64
int GetNumBitsForMessage() const;
65
int GetNumBitsForBuilder() const;
66
void GenerateInterfaceMembers(io::Printer* printer) const;
67
void GenerateMembers(io::Printer* printer) const;
68
void GenerateBuilderMembers(io::Printer* printer) const;
69
void GenerateInitializationCode(io::Printer* printer) const;
70
void GenerateBuilderClearCode(io::Printer* printer) const;
71
void GenerateMergingCode(io::Printer* printer) const;
72
void GenerateBuildingCode(io::Printer* printer) const;
73
void GenerateParsingCode(io::Printer* printer) const;
74
void GenerateParsingDoneCode(io::Printer* printer) const;
75
void GenerateSerializationCode(io::Printer* printer) const;
76
void GenerateSerializedSizeCode(io::Printer* printer) const;
77
void GenerateFieldBuilderInitializationCode(io::Printer* printer) const;
78
void GenerateEqualsCode(io::Printer* printer) const;
79
void GenerateHashCode(io::Printer* printer) const;
81
string GetBoxedType() const;
84
const FieldDescriptor* descriptor_;
85
map<string, string> variables_;
86
const int messageBitIndex_;
87
const int builderBitIndex_;
89
ClassNameResolver* name_resolver_;
91
void PrintNestedBuilderCondition(io::Printer* printer,
92
const char* regular_case, const char* nested_builder_case) const;
93
void PrintNestedBuilderFunction(io::Printer* printer,
94
const char* method_prototype, const char* regular_case,
95
const char* nested_builder_case,
96
const char* trailing_code) const;
99
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableMessageFieldGenerator);
102
class ImmutableMessageOneofFieldGenerator
103
: public ImmutableMessageFieldGenerator {
105
ImmutableMessageOneofFieldGenerator(
106
const FieldDescriptor* descriptor, int messageBitIndex,
107
int builderBitIndex, Context* context);
108
~ImmutableMessageOneofFieldGenerator();
110
void GenerateMembers(io::Printer* printer) const;
111
void GenerateBuilderMembers(io::Printer* printer) const;
112
void GenerateBuildingCode(io::Printer* printer) const;
113
void GenerateMergingCode(io::Printer* printer) const;
114
void GenerateParsingCode(io::Printer* printer) const;
115
void GenerateSerializationCode(io::Printer* printer) const;
116
void GenerateSerializedSizeCode(io::Printer* printer) const;
119
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableMessageOneofFieldGenerator);
122
class RepeatedImmutableMessageFieldGenerator : public ImmutableFieldGenerator {
124
explicit RepeatedImmutableMessageFieldGenerator(
125
const FieldDescriptor* descriptor, int messageBitIndex,
126
int builderBitIndex, Context* context);
127
~RepeatedImmutableMessageFieldGenerator();
129
// implements ImmutableFieldGenerator ---------------------------------------
130
int GetNumBitsForMessage() const;
131
int GetNumBitsForBuilder() const;
132
void GenerateInterfaceMembers(io::Printer* printer) const;
133
void GenerateMembers(io::Printer* printer) const;
134
void GenerateBuilderMembers(io::Printer* printer) const;
135
void GenerateInitializationCode(io::Printer* printer) const;
136
void GenerateBuilderClearCode(io::Printer* printer) const;
137
void GenerateMergingCode(io::Printer* printer) const;
138
void GenerateBuildingCode(io::Printer* printer) const;
139
void GenerateParsingCode(io::Printer* printer) const;
140
void GenerateParsingDoneCode(io::Printer* printer) const;
141
void GenerateSerializationCode(io::Printer* printer) const;
142
void GenerateSerializedSizeCode(io::Printer* printer) const;
143
void GenerateFieldBuilderInitializationCode(io::Printer* printer) const;
144
void GenerateEqualsCode(io::Printer* printer) const;
145
void GenerateHashCode(io::Printer* printer) const;
147
string GetBoxedType() const;
150
const FieldDescriptor* descriptor_;
151
map<string, string> variables_;
152
const int messageBitIndex_;
153
const int builderBitIndex_;
155
ClassNameResolver* name_resolver_;
157
void PrintNestedBuilderCondition(io::Printer* printer,
158
const char* regular_case, const char* nested_builder_case) const;
159
void PrintNestedBuilderFunction(io::Printer* printer,
160
const char* method_prototype, const char* regular_case,
161
const char* nested_builder_case,
162
const char* trailing_code) const;
165
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableMessageFieldGenerator);
131
168
} // namespace java