Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: third_party/protobuf/src/google/protobuf/compiler/java/java_message_lite.cc

Issue 2495533002: third_party/protobuf: Update to HEAD (83d681ee2c) (Closed)
Patch Set: Make chrome settings proto generated file a component Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Protocol Buffers - Google's data interchange format 1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved. 2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/ 3 // https://developers.google.com/protocol-buffers/
4 // 4 //
5 // Redistribution and use in source and binary forms, with or without 5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are 6 // modification, are permitted provided that the following conditions are
7 // met: 7 // met:
8 // 8 //
9 // * Redistributions of source code must retain the above copyright 9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer. 10 // notice, this list of conditions and the following disclaimer.
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 bytecode_estimate += 113 bytecode_estimate +=
114 ImmutableMessageLiteGenerator(descriptor_->nested_type(i), context_) 114 ImmutableMessageLiteGenerator(descriptor_->nested_type(i), context_)
115 .GenerateStaticVariableInitializers(printer); 115 .GenerateStaticVariableInitializers(printer);
116 } 116 }
117 return bytecode_estimate; 117 return bytecode_estimate;
118 } 118 }
119 119
120 // =================================================================== 120 // ===================================================================
121 121
122 void ImmutableMessageLiteGenerator::GenerateInterface(io::Printer* printer) { 122 void ImmutableMessageLiteGenerator::GenerateInterface(io::Printer* printer) {
123 MaybePrintGeneratedAnnotation(context_, printer, descriptor_,
124 /* immutable = */ true, "OrBuilder");
123 if (descriptor_->extension_range_count() > 0) { 125 if (descriptor_->extension_range_count() > 0) {
124 printer->Print( 126 printer->Print(
125 "public interface $classname$OrBuilder extends \n" 127 "public interface $classname$OrBuilder$idend$ extends \n"
126 " $extra_interfaces$\n" 128 " $extra_interfaces$\n"
127 " com.google.protobuf.GeneratedMessageLite.\n" 129 " com.google.protobuf.GeneratedMessageLite.\n"
128 " ExtendableMessageOrBuilder<\n" 130 " ExtendableMessageOrBuilder<\n"
129 " $classname$, $classname$.Builder> {\n", 131 " $classname$, $classname$.Builder> {\n",
130 "extra_interfaces", ExtraMessageOrBuilderInterfaces(descriptor_), 132 "extra_interfaces", ExtraMessageOrBuilderInterfaces(descriptor_),
131 "classname", descriptor_->name()); 133 "classname", descriptor_->name(),
134 "idend", "");
132 } else { 135 } else {
133 printer->Print( 136 printer->Print(
134 "public interface $classname$OrBuilder extends\n" 137 "public interface $classname$OrBuilder$idend$ extends\n"
135 " $extra_interfaces$\n" 138 " $extra_interfaces$\n"
136 " com.google.protobuf.MessageLiteOrBuilder {\n", 139 " com.google.protobuf.MessageLiteOrBuilder {\n",
137 "extra_interfaces", ExtraMessageOrBuilderInterfaces(descriptor_), 140 "extra_interfaces", ExtraMessageOrBuilderInterfaces(descriptor_),
138 "classname", descriptor_->name()); 141 "classname", descriptor_->name(),
142 "idend", "");
139 } 143 }
144 printer->Annotate("classname", "idend", descriptor_);
140 145
141 printer->Indent(); 146 printer->Indent();
142 for (int i = 0; i < descriptor_->field_count(); i++) { 147 for (int i = 0; i < descriptor_->field_count(); i++) {
143 printer->Print("\n"); 148 printer->Print("\n");
144 field_generators_.get(descriptor_->field(i)) 149 field_generators_.get(descriptor_->field(i))
145 .GenerateInterfaceMembers(printer); 150 .GenerateInterfaceMembers(printer);
146 } 151 }
147 for (int i = 0; i < descriptor_->oneof_decl_count(); i++) { 152 for (int i = 0; i < descriptor_->oneof_decl_count(); i++) {
148 printer->Print( 153 printer->Print(
149 "\n" 154 "\n"
150 "public $classname$.$oneof_capitalized_name$Case " 155 "public $classname$.$oneof_capitalized_name$Case "
151 "get$oneof_capitalized_name$Case();\n", 156 "get$oneof_capitalized_name$Case();\n",
152 "oneof_capitalized_name", 157 "oneof_capitalized_name",
153 context_->GetOneofGeneratorInfo( 158 context_->GetOneofGeneratorInfo(
154 descriptor_->oneof_decl(i))->capitalized_name, 159 descriptor_->oneof_decl(i))->capitalized_name,
155 "classname", 160 "classname",
156 context_->GetNameResolver()->GetImmutableClassName(descriptor_)); 161 context_->GetNameResolver()->GetImmutableClassName(descriptor_));
157 } 162 }
158 printer->Outdent(); 163 printer->Outdent();
159 164
160 printer->Print("}\n"); 165 printer->Print("}\n");
161 } 166 }
162 167
163 // =================================================================== 168 // ===================================================================
164 169
165 void ImmutableMessageLiteGenerator::Generate(io::Printer* printer) { 170 void ImmutableMessageLiteGenerator::Generate(io::Printer* printer) {
166 bool is_own_file = 171 bool is_own_file = IsOwnFile(descriptor_, /* immutable = */ true);
167 descriptor_->containing_type() == NULL &&
168 MultipleJavaFiles(descriptor_->file(), /* immutable = */ true);
169 172
170 map<string, string> variables; 173 std::map<string, string> variables;
171 variables["static"] = is_own_file ? " " : " static "; 174 variables["static"] = is_own_file ? " " : " static ";
172 variables["classname"] = descriptor_->name(); 175 variables["classname"] = descriptor_->name();
173 variables["extra_interfaces"] = ExtraMessageInterfaces(descriptor_); 176 variables["extra_interfaces"] = ExtraMessageInterfaces(descriptor_);
174 177
175 WriteMessageDocComment(printer, descriptor_); 178 WriteMessageDocComment(printer, descriptor_);
179 MaybePrintGeneratedAnnotation(context_, printer, descriptor_,
180 /* immutable = */ true);
181
176 182
177 // The builder_type stores the super type name of the nested Builder class. 183 // The builder_type stores the super type name of the nested Builder class.
178 string builder_type; 184 string builder_type;
179 if (descriptor_->extension_range_count() > 0) { 185 if (descriptor_->extension_range_count() > 0) {
180 printer->Print(variables, 186 printer->Print(variables,
181 "public $static$final class $classname$ extends\n" 187 "public $static$final class $classname$ extends\n"
182 " com.google.protobuf.GeneratedMessageLite.ExtendableMessage<\n" 188 " com.google.protobuf.GeneratedMessageLite.ExtendableMessage<\n"
183 " $classname$, $classname$.Builder> implements\n" 189 " $classname$, $classname$.Builder> implements\n"
184 " $extra_interfaces$\n" 190 " $extra_interfaces$\n"
185 " $classname$OrBuilder {\n"); 191 " $classname$OrBuilder {\n");
186 builder_type = strings::Substitute( 192 builder_type = strings::Substitute(
187 "com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<$0, ?>", 193 "com.google.protobuf.GeneratedMessageLite.ExtendableBuilder<$0, ?>",
188 name_resolver_->GetImmutableClassName(descriptor_)); 194 name_resolver_->GetImmutableClassName(descriptor_));
189 } else { 195 } else {
190 printer->Print(variables, 196 printer->Print(variables,
191 "public $static$final class $classname$ extends\n" 197 "public $static$final class $classname$ extends\n"
192 " com.google.protobuf.GeneratedMessageLite<\n" 198 " com.google.protobuf.GeneratedMessageLite<\n"
193 " $classname$, $classname$.Builder> implements\n" 199 " $classname$, $classname$.Builder> implements\n"
194 " $extra_interfaces$\n" 200 " $extra_interfaces$\n"
195 " $classname$OrBuilder {\n"); 201 " $classname$OrBuilder {\n");
196 202
197 builder_type = "com.google.protobuf.GeneratedMessageLite.Builder"; 203 builder_type = "com.google.protobuf.GeneratedMessageLite.Builder";
198 } 204 }
199 printer->Indent(); 205 printer->Indent();
200 206
201
202 GenerateConstructor(printer); 207 GenerateConstructor(printer);
203 208
204 // Nested types 209 // Nested types
205 for (int i = 0; i < descriptor_->enum_type_count(); i++) { 210 for (int i = 0; i < descriptor_->enum_type_count(); i++) {
206 EnumLiteGenerator(descriptor_->enum_type(i), true, context_) 211 EnumLiteGenerator(descriptor_->enum_type(i), true, context_)
207 .Generate(printer); 212 .Generate(printer);
208 } 213 }
209 214
210 for (int i = 0; i < descriptor_->nested_type_count(); i++) { 215 for (int i = 0; i < descriptor_->nested_type_count(); i++) {
211 // Don't generate Java classes for map entry messages. 216 // Don't generate Java classes for map entry messages.
(...skipping 12 matching lines...) Expand all
224 .GetNumBitsForMessage(); 229 .GetNumBitsForMessage();
225 } 230 }
226 int totalInts = (totalBits + 31) / 32; 231 int totalInts = (totalBits + 31) / 32;
227 for (int i = 0; i < totalInts; i++) { 232 for (int i = 0; i < totalInts; i++) {
228 printer->Print("private int $bit_field_name$;\n", 233 printer->Print("private int $bit_field_name$;\n",
229 "bit_field_name", GetBitFieldName(i)); 234 "bit_field_name", GetBitFieldName(i));
230 } 235 }
231 } 236 }
232 237
233 // oneof 238 // oneof
234 map<string, string> vars; 239 std::map<string, string> vars;
235 for (int i = 0; i < descriptor_->oneof_decl_count(); i++) { 240 for (int i = 0; i < descriptor_->oneof_decl_count(); i++) {
236 vars["oneof_name"] = context_->GetOneofGeneratorInfo( 241 const OneofDescriptor* oneof = descriptor_->oneof_decl(i);
237 descriptor_->oneof_decl(i))->name; 242 vars["oneof_name"] = context_->GetOneofGeneratorInfo(oneof)->name;
238 vars["oneof_capitalized_name"] = context_->GetOneofGeneratorInfo( 243 vars["oneof_capitalized_name"] = context_->GetOneofGeneratorInfo(
239 descriptor_->oneof_decl(i))->capitalized_name; 244 oneof)->capitalized_name;
240 vars["oneof_index"] = SimpleItoa(descriptor_->oneof_decl(i)->index()); 245 vars["oneof_index"] = SimpleItoa(oneof->index());
241 // oneofCase_ and oneof_ 246 // oneofCase_ and oneof_
242 printer->Print(vars, 247 printer->Print(vars,
243 "private int $oneof_name$Case_ = 0;\n" 248 "private int $oneof_name$Case_ = 0;\n"
244 "private java.lang.Object $oneof_name$_;\n"); 249 "private java.lang.Object $oneof_name$_;\n");
245 // OneofCase enum 250 // OneofCase enum
246 printer->Print(vars, 251 printer->Print(vars,
247 "public enum $oneof_capitalized_name$Case\n" 252 "public enum $oneof_capitalized_name$Case\n"
248 " implements com.google.protobuf.Internal.EnumLite {\n"); 253 " implements com.google.protobuf.Internal.EnumLite {\n");
249 printer->Indent(); 254 printer->Indent();
250 for (int j = 0; j < descriptor_->oneof_decl(i)->field_count(); j++) { 255 for (int j = 0; j < oneof->field_count(); j++) {
251 const FieldDescriptor* field = descriptor_->oneof_decl(i)->field(j); 256 const FieldDescriptor* field = oneof->field(j);
252 printer->Print( 257 printer->Print(
253 "$field_name$($field_number$),\n", 258 "$field_name$($field_number$),\n",
254 "field_name", 259 "field_name",
255 ToUpper(field->name()), 260 ToUpper(field->name()),
256 "field_number", 261 "field_number",
257 SimpleItoa(field->number())); 262 SimpleItoa(field->number()));
258 } 263 }
259 printer->Print( 264 printer->Print(
260 "$cap_oneof_name$_NOT_SET(0);\n", 265 "$cap_oneof_name$_NOT_SET(0);\n",
261 "cap_oneof_name", 266 "cap_oneof_name",
262 ToUpper(vars["oneof_name"])); 267 ToUpper(vars["oneof_name"]));
263 printer->Print(vars, 268 printer->Print(vars,
264 "private final int value;\n" 269 "private final int value;\n"
265 "private $oneof_capitalized_name$Case(int value) {\n" 270 "private $oneof_capitalized_name$Case(int value) {\n"
266 " this.value = value;\n" 271 " this.value = value;\n"
267 "}\n"); 272 "}\n");
268 printer->Print(vars, 273 printer->Print(vars,
269 "/**\n" 274 "/**\n"
270 " * @deprecated Use {@link #forNumber(int)} instead.\n" 275 " * @deprecated Use {@link #forNumber(int)} instead.\n"
271 " */\n" 276 " */\n"
272 "@java.lang.Deprecated\n" 277 "@java.lang.Deprecated\n"
273 "public static $oneof_capitalized_name$Case valueOf(int value) {\n" 278 "public static $oneof_capitalized_name$Case valueOf(int value) {\n"
274 " return forNumber(value);\n" 279 " return forNumber(value);\n"
275 "}\n" 280 "}\n"
276 "\n" 281 "\n"
277 "public static $oneof_capitalized_name$Case forNumber(int value) {\n" 282 "public static $oneof_capitalized_name$Case forNumber(int value) {\n"
278 " switch (value) {\n"); 283 " switch (value) {\n");
279 for (int j = 0; j < descriptor_->oneof_decl(i)->field_count(); j++) { 284 for (int j = 0; j < oneof->field_count(); j++) {
280 const FieldDescriptor* field = descriptor_->oneof_decl(i)->field(j); 285 const FieldDescriptor* field = oneof->field(j);
281 printer->Print( 286 printer->Print(
282 " case $field_number$: return $field_name$;\n", 287 " case $field_number$: return $field_name$;\n",
283 "field_number", 288 "field_number",
284 SimpleItoa(field->number()), 289 SimpleItoa(field->number()),
285 "field_name", 290 "field_name",
286 ToUpper(field->name())); 291 ToUpper(field->name()));
287 } 292 }
288 printer->Print( 293 printer->Print(
289 " case 0: return $cap_oneof_name$_NOT_SET;\n" 294 " case 0: return $cap_oneof_name$_NOT_SET;\n"
290 " default: return null;\n" 295 " default: return null;\n"
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 printer->Print("}\n\n"); 460 printer->Print("}\n\n");
456 } 461 }
457 462
458 // =================================================================== 463 // ===================================================================
459 464
460 void ImmutableMessageLiteGenerator:: 465 void ImmutableMessageLiteGenerator::
461 GenerateMessageSerializationMethods(io::Printer* printer) { 466 GenerateMessageSerializationMethods(io::Printer* printer) {
462 google::protobuf::scoped_array<const FieldDescriptor * > sorted_fields( 467 google::protobuf::scoped_array<const FieldDescriptor * > sorted_fields(
463 SortFieldsByNumber(descriptor_)); 468 SortFieldsByNumber(descriptor_));
464 469
465 vector<const Descriptor::ExtensionRange*> sorted_extensions; 470 std::vector<const Descriptor::ExtensionRange*> sorted_extensions;
466 for (int i = 0; i < descriptor_->extension_range_count(); ++i) { 471 for (int i = 0; i < descriptor_->extension_range_count(); ++i) {
467 sorted_extensions.push_back(descriptor_->extension_range(i)); 472 sorted_extensions.push_back(descriptor_->extension_range(i));
468 } 473 }
469 std::sort(sorted_extensions.begin(), sorted_extensions.end(), 474 std::sort(sorted_extensions.begin(), sorted_extensions.end(),
470 ExtensionRangeOrdering()); 475 ExtensionRangeOrdering());
471 476
472 printer->Print( 477 printer->Print(
473 "public void writeTo(com.google.protobuf.CodedOutputStream output)\n" 478 "public void writeTo(com.google.protobuf.CodedOutputStream output)\n"
474 " throws java.io.IOException {\n"); 479 " throws java.io.IOException {\n");
475 printer->Indent(); 480 printer->Indent();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 } else if (j == sorted_extensions.size()) { 516 } else if (j == sorted_extensions.size()) {
512 GenerateSerializeOneField(printer, sorted_fields[i++]); 517 GenerateSerializeOneField(printer, sorted_fields[i++]);
513 } else if (sorted_fields[i]->number() < sorted_extensions[j]->start) { 518 } else if (sorted_fields[i]->number() < sorted_extensions[j]->start) {
514 GenerateSerializeOneField(printer, sorted_fields[i++]); 519 GenerateSerializeOneField(printer, sorted_fields[i++]);
515 } else { 520 } else {
516 GenerateSerializeOneExtensionRange(printer, sorted_extensions[j++]); 521 GenerateSerializeOneExtensionRange(printer, sorted_extensions[j++]);
517 } 522 }
518 } 523 }
519 524
520 if (PreserveUnknownFields(descriptor_)) { 525 if (PreserveUnknownFields(descriptor_)) {
521 printer->Print( 526 if (descriptor_->options().message_set_wire_format()) {
522 "unknownFields.writeTo(output);\n"); 527 printer->Print(
528 "unknownFields.writeAsMessageSetTo(output);\n");
529 } else {
530 printer->Print(
531 "unknownFields.writeTo(output);\n");
532 }
523 } 533 }
524 534
525 printer->Outdent(); 535 printer->Outdent();
526 printer->Print( 536 printer->Print(
527 "}\n" 537 "}\n"
528 "\n" 538 "\n"
529 "public int getSerializedSize() {\n" 539 "public int getSerializedSize() {\n"
530 " int size = memoizedSerializedSize;\n" 540 " int size = memoizedSerializedSize;\n"
531 " if (size != -1) return size;\n" 541 " if (size != -1) return size;\n"
532 "\n" 542 "\n"
533 " size = 0;\n"); 543 " size = 0;\n");
534 printer->Indent(); 544 printer->Indent();
535 545
536 for (int i = 0; i < descriptor_->field_count(); i++) { 546 for (int i = 0; i < descriptor_->field_count(); i++) {
537 field_generators_.get(sorted_fields[i]).GenerateSerializedSizeCode(printer); 547 field_generators_.get(sorted_fields[i]).GenerateSerializedSizeCode(printer);
538 } 548 }
539 549
540 if (descriptor_->extension_range_count() > 0) { 550 if (descriptor_->extension_range_count() > 0) {
541 if (descriptor_->options().message_set_wire_format()) { 551 if (descriptor_->options().message_set_wire_format()) {
542 printer->Print( 552 printer->Print(
543 "size += extensionsSerializedSizeAsMessageSet();\n"); 553 "size += extensionsSerializedSizeAsMessageSet();\n");
544 } else { 554 } else {
545 printer->Print( 555 printer->Print(
546 "size += extensionsSerializedSize();\n"); 556 "size += extensionsSerializedSize();\n");
547 } 557 }
548 } 558 }
549 559
550 if (PreserveUnknownFields(descriptor_)) { 560 if (PreserveUnknownFields(descriptor_)) {
551 printer->Print( 561 if (descriptor_->options().message_set_wire_format()) {
552 "size += unknownFields.getSerializedSize();\n"); 562 printer->Print(
563 "size += unknownFields.getSerializedSizeAsMessageSet();\n");
564 } else {
565 printer->Print(
566 "size += unknownFields.getSerializedSize();\n");
567 }
553 } 568 }
554 569
555 printer->Outdent(); 570 printer->Outdent();
556 printer->Print( 571 printer->Print(
557 " memoizedSerializedSize = size;\n" 572 " memoizedSerializedSize = size;\n"
558 " return size;\n" 573 " return size;\n"
559 "}\n" 574 "}\n"
560 "\n"); 575 "\n");
561 } 576 }
562 577
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 " memoizedIsInitialized = 0;\n" 751 " memoizedIsInitialized = 0;\n"
737 " }\n" 752 " }\n"
738 " return null;\n" 753 " return null;\n"
739 " }\n" 754 " }\n"
740 "}\n", 755 "}\n",
741 "name", info->capitalized_name); 756 "name", info->capitalized_name);
742 break; 757 break;
743 case FieldDescriptor::LABEL_REPEATED: 758 case FieldDescriptor::LABEL_REPEATED:
744 if (IsMapEntry(field->message_type())) { 759 if (IsMapEntry(field->message_type())) {
745 printer->Print( 760 printer->Print(
746 "for ($type$ item : get$name$().values()) {\n" 761 "for ($type$ item : get$name$Map().values()) {\n"
747 " if (!item.isInitialized()) {\n" 762 " if (!item.isInitialized()) {\n"
748 " if (shouldMemoize) {\n" 763 " if (shouldMemoize) {\n"
749 " memoizedIsInitialized = 0;\n" 764 " memoizedIsInitialized = 0;\n"
750 " }\n" 765 " }\n"
751 " return null;\n" 766 " return null;\n"
752 " }\n" 767 " }\n"
753 "}\n", 768 "}\n",
754 "type", MapValueImmutableClassdName(field->message_type(), 769 "type", MapValueImmutableClassdName(field->message_type(),
755 name_resolver_), 770 name_resolver_),
756 "name", info->capitalized_name); 771 "name", info->capitalized_name);
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 "switch (tag) {\n"); 942 "switch (tag) {\n");
928 printer->Indent(); 943 printer->Indent();
929 944
930 printer->Print( 945 printer->Print(
931 "case 0:\n" // zero signals EOF / limit reached 946 "case 0:\n" // zero signals EOF / limit reached
932 " done = true;\n" 947 " done = true;\n"
933 " break;\n"); 948 " break;\n");
934 949
935 if (PreserveUnknownFields(descriptor_)) { 950 if (PreserveUnknownFields(descriptor_)) {
936 if (descriptor_->extension_range_count() > 0) { 951 if (descriptor_->extension_range_count() > 0) {
937 printer->Print( 952 if (descriptor_->options().message_set_wire_format()) {
938 "default: {\n" 953 printer->Print(
939 " if (!parseUnknownField(getDefaultInstanceForType(),\n" 954 "default: {\n"
940 " input, extensionRegistry, tag)) {\n" 955 " if (!parseUnknownFieldAsMessageSet(\n"
941 " done = true;\n" // it's an endgroup tag 956 " getDefaultInstanceForType(), input, extensionRegistry,\n"
942 " }\n" 957 " tag)) {\n"
943 " break;\n" 958 " done = true;\n" // it's an endgroup tag
944 "}\n"); 959 " }\n"
960 " break;\n"
961 "}\n");
962 } else {
963 printer->Print(
964 "default: {\n"
965 " if (!parseUnknownField(getDefaultInstanceForType(),\n"
966 " input, extensionRegistry, tag)) {\n"
967 " done = true;\n" // it's an endgroup tag
968 " }\n"
969 " break;\n"
970 "}\n");
971 }
945 } else { 972 } else {
946 printer->Print( 973 printer->Print(
947 "default: {\n" 974 "default: {\n"
948 " if (!parseUnknownField(tag, input)) {\n" 975 " if (!parseUnknownField(tag, input)) {\n"
949 " done = true;\n" // it's an endgroup tag 976 " done = true;\n" // it's an endgroup tag
950 " }\n" 977 " }\n"
951 " break;\n" 978 " break;\n"
952 "}\n"); 979 "}\n");
953 } 980 }
954 } else { 981 } else {
955 printer->Print( 982 printer->Print(
956 "default: {\n" 983 "default: {\n"
957 " if (!input.skipField(tag)) {\n" 984 " if (!input.skipField(tag)) {\n"
958 " done = true;\n" // it's an endgroup tag 985 " done = true;\n" // it's an endgroup tag
959 " }\n" 986 " }\n"
960 " break;\n" 987 " break;\n"
961 "}\n"); 988 "}\n");
962 } 989 }
963 990
964 google::protobuf::scoped_array<const FieldDescriptor * > sorted_fields( 991 google::protobuf::scoped_array<const FieldDescriptor * > sorted_fields(
965 SortFieldsByNumber(descriptor_)); 992 SortFieldsByNumber(descriptor_));
966 for (int i = 0; i < descriptor_->field_count(); i++) { 993 for (int i = 0; i < descriptor_->field_count(); i++) {
967 const FieldDescriptor* field = sorted_fields[i]; 994 const FieldDescriptor* field = sorted_fields[i];
968 uint32 tag = WireFormatLite::MakeTag(field->number(), 995 uint32 tag = WireFormatLite::MakeTag(field->number(),
969 WireFormat::WireTypeForFieldType(field->type())); 996 WireFormat::WireTypeForFieldType(field->type()));
970 997
971 printer->Print( 998 printer->Print(
972 "case $tag$: {\n", 999 "case $tag$: {\n",
973 "tag", SimpleItoa(tag)); 1000 "tag", SimpleItoa(static_cast<int32>(tag)));
974 printer->Indent(); 1001 printer->Indent();
975 1002
976 field_generators_.get(field).GenerateParsingCode(printer); 1003 field_generators_.get(field).GenerateParsingCode(printer);
977 1004
978 printer->Outdent(); 1005 printer->Outdent();
979 printer->Print( 1006 printer->Print(
980 " break;\n" 1007 " break;\n"
981 "}\n"); 1008 "}\n");
982 1009
983 if (field->is_packable()) { 1010 if (field->is_packable()) {
984 // To make packed = true wire compatible, we generate parsing code from a 1011 // To make packed = true wire compatible, we generate parsing code from a
985 // packed version of this field regardless of field->options().packed(). 1012 // packed version of this field regardless of field->options().packed().
986 uint32 packed_tag = WireFormatLite::MakeTag(field->number(), 1013 uint32 packed_tag = WireFormatLite::MakeTag(field->number(),
987 WireFormatLite::WIRETYPE_LENGTH_DELIMITED); 1014 WireFormatLite::WIRETYPE_LENGTH_DELIMITED);
988 printer->Print( 1015 printer->Print(
989 "case $tag$: {\n", 1016 "case $tag$: {\n",
990 "tag", SimpleItoa(packed_tag)); 1017 "tag", SimpleItoa(static_cast<int32>(packed_tag)));
991 printer->Indent(); 1018 printer->Indent();
992 1019
993 field_generators_.get(field).GenerateParsingCodeFromPacked(printer); 1020 field_generators_.get(field).GenerateParsingCodeFromPacked(printer);
994 1021
995 printer->Outdent(); 1022 printer->Outdent();
996 printer->Print( 1023 printer->Print(
997 " break;\n" 1024 " break;\n"
998 "}\n"); 1025 "}\n");
999 } 1026 }
1000 } 1027 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1085 field_generators_.get(descriptor_->field(i)) 1112 field_generators_.get(descriptor_->field(i))
1086 .GenerateInitializationCode(printer); 1113 .GenerateInitializationCode(printer);
1087 } 1114 }
1088 } 1115 }
1089 } 1116 }
1090 1117
1091 } // namespace java 1118 } // namespace java
1092 } // namespace compiler 1119 } // namespace compiler
1093 } // namespace protobuf 1120 } // namespace protobuf
1094 } // namespace google 1121 } // namespace google
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698