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

Side by Side Diff: third_party/protobuf/src/google/protobuf/extension_set_heavy.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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 private: 88 private:
89 const DescriptorPool* pool_; 89 const DescriptorPool* pool_;
90 MessageFactory* factory_; 90 MessageFactory* factory_;
91 const Descriptor* containing_type_; 91 const Descriptor* containing_type_;
92 }; 92 };
93 93
94 void ExtensionSet::AppendToList( 94 void ExtensionSet::AppendToList(
95 const Descriptor* containing_type, 95 const Descriptor* containing_type,
96 const DescriptorPool* pool, 96 const DescriptorPool* pool,
97 std::vector<const FieldDescriptor*>* output) const { 97 std::vector<const FieldDescriptor*>* output) const {
98 for (map<int, Extension>::const_iterator iter = extensions_.begin(); 98 for (ExtensionMap::const_iterator iter = extensions_.begin();
99 iter != extensions_.end(); ++iter) { 99 iter != extensions_.end(); ++iter) {
100 bool has = false; 100 bool has = false;
101 if (iter->second.is_repeated) { 101 if (iter->second.is_repeated) {
102 has = iter->second.GetSize() > 0; 102 has = iter->second.GetSize() > 0;
103 } else { 103 } else {
104 has = !iter->second.is_cleared; 104 has = !iter->second.is_cleared;
105 } 105 }
106 106
107 if (has) { 107 if (has) {
108 // TODO(kenton): Looking up each field by number is somewhat unfortunate. 108 // TODO(kenton): Looking up each field by number is somewhat unfortunate.
(...skipping 28 matching lines...) Expand all
137 137
138 #define GOOGLE_DCHECK_TYPE(EXTENSION, LABEL, CPPTYPE) \ 138 #define GOOGLE_DCHECK_TYPE(EXTENSION, LABEL, CPPTYPE) \
139 GOOGLE_DCHECK_EQ((EXTENSION).is_repeated ? FieldDescriptor::LABEL_REPEATED \ 139 GOOGLE_DCHECK_EQ((EXTENSION).is_repeated ? FieldDescriptor::LABEL_REPEATED \
140 : FieldDescriptor::LABEL_OPTIONAL, \ 140 : FieldDescriptor::LABEL_OPTIONAL, \
141 FieldDescriptor::LABEL_##LABEL); \ 141 FieldDescriptor::LABEL_##LABEL); \
142 GOOGLE_DCHECK_EQ(cpp_type((EXTENSION).type), FieldDescriptor::CPPTYPE_##CPPTYP E) 142 GOOGLE_DCHECK_EQ(cpp_type((EXTENSION).type), FieldDescriptor::CPPTYPE_##CPPTYP E)
143 143
144 const MessageLite& ExtensionSet::GetMessage(int number, 144 const MessageLite& ExtensionSet::GetMessage(int number,
145 const Descriptor* message_type, 145 const Descriptor* message_type,
146 MessageFactory* factory) const { 146 MessageFactory* factory) const {
147 map<int, Extension>::const_iterator iter = extensions_.find(number); 147 ExtensionMap::const_iterator iter = extensions_.find(number);
148 if (iter == extensions_.end() || iter->second.is_cleared) { 148 if (iter == extensions_.end() || iter->second.is_cleared) {
149 // Not present. Return the default value. 149 // Not present. Return the default value.
150 return *factory->GetPrototype(message_type); 150 return *factory->GetPrototype(message_type);
151 } else { 151 } else {
152 GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE); 152 GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE);
153 if (iter->second.is_lazy) { 153 if (iter->second.is_lazy) {
154 return iter->second.lazymessage_value->GetMessage( 154 return iter->second.lazymessage_value->GetMessage(
155 *factory->GetPrototype(message_type)); 155 *factory->GetPrototype(message_type));
156 } else { 156 } else {
157 return *iter->second.message_value; 157 return *iter->second.message_value;
(...skipping 22 matching lines...) Expand all
180 return extension->lazymessage_value->MutableMessage( 180 return extension->lazymessage_value->MutableMessage(
181 *factory->GetPrototype(descriptor->message_type())); 181 *factory->GetPrototype(descriptor->message_type()));
182 } else { 182 } else {
183 return extension->message_value; 183 return extension->message_value;
184 } 184 }
185 } 185 }
186 } 186 }
187 187
188 MessageLite* ExtensionSet::ReleaseMessage(const FieldDescriptor* descriptor, 188 MessageLite* ExtensionSet::ReleaseMessage(const FieldDescriptor* descriptor,
189 MessageFactory* factory) { 189 MessageFactory* factory) {
190 map<int, Extension>::iterator iter = extensions_.find(descriptor->number()); 190 ExtensionMap::iterator iter = extensions_.find(descriptor->number());
191 if (iter == extensions_.end()) { 191 if (iter == extensions_.end()) {
192 // Not present. Return NULL. 192 // Not present. Return NULL.
193 return NULL; 193 return NULL;
194 } else { 194 } else {
195 GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE); 195 GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE);
196 MessageLite* ret = NULL; 196 MessageLite* ret = NULL;
197 if (iter->second.is_lazy) { 197 if (iter->second.is_lazy) {
198 ret = iter->second.lazymessage_value->ReleaseMessage( 198 ret = iter->second.lazymessage_value->ReleaseMessage(
199 *factory->GetPrototype(descriptor->message_type())); 199 *factory->GetPrototype(descriptor->message_type()));
200 if (arena_ == NULL) { 200 if (arena_ == NULL) {
201 delete iter->second.lazymessage_value; 201 delete iter->second.lazymessage_value;
202 } 202 }
203 } else { 203 } else {
204 if (arena_ != NULL) { 204 if (arena_ != NULL) {
205 ret = (iter->second.message_value)->New(); 205 ret = (iter->second.message_value)->New();
206 ret->CheckTypeAndMergeFrom(*(iter->second.message_value)); 206 ret->CheckTypeAndMergeFrom(*(iter->second.message_value));
207 } else { 207 } else {
208 ret = iter->second.message_value; 208 ret = iter->second.message_value;
209 } 209 }
210 } 210 }
211 extensions_.erase(descriptor->number()); 211 extensions_.erase(descriptor->number());
212 return ret; 212 return ret;
213 } 213 }
214 } 214 }
215 215
216 MessageLite* ExtensionSet::UnsafeArenaReleaseMessage(
217 const FieldDescriptor* descriptor, MessageFactory* factory) {
218 ExtensionMap::iterator iter = extensions_.find(descriptor->number());
219 if (iter == extensions_.end()) {
220 // Not present. Return NULL.
221 return NULL;
222 } else {
223 GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE);
224 MessageLite* ret = NULL;
225 if (iter->second.is_lazy) {
226 ret = iter->second.lazymessage_value->UnsafeArenaReleaseMessage(
227 *factory->GetPrototype(descriptor->message_type()));
228 if (arena_ == NULL) {
229 delete iter->second.lazymessage_value;
230 }
231 } else {
232 ret = iter->second.message_value;
233 }
234 extensions_.erase(descriptor->number());
235 return ret;
236 }
237 }
238
216 ExtensionSet::Extension* ExtensionSet::MaybeNewRepeatedExtension(const FieldDesc riptor* descriptor) { 239 ExtensionSet::Extension* ExtensionSet::MaybeNewRepeatedExtension(const FieldDesc riptor* descriptor) {
217 Extension* extension; 240 Extension* extension;
218 if (MaybeNewExtension(descriptor->number(), descriptor, &extension)) { 241 if (MaybeNewExtension(descriptor->number(), descriptor, &extension)) {
219 extension->type = descriptor->type(); 242 extension->type = descriptor->type();
220 GOOGLE_DCHECK_EQ(cpp_type(extension->type), FieldDescriptor::CPPTYPE_MESSAGE ); 243 GOOGLE_DCHECK_EQ(cpp_type(extension->type), FieldDescriptor::CPPTYPE_MESSAGE );
221 extension->is_repeated = true; 244 extension->is_repeated = true;
222 extension->repeated_message_value = 245 extension->repeated_message_value =
223 ::google::protobuf::Arena::CreateMessage<RepeatedPtrField<MessageLite> > (arena_); 246 ::google::protobuf::Arena::CreateMessage<RepeatedPtrField<MessageLite> > (arena_);
224 } else { 247 } else {
225 GOOGLE_DCHECK_TYPE(*extension, REPEATED, MESSAGE); 248 GOOGLE_DCHECK_TYPE(*extension, REPEATED, MESSAGE);
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 } else { 334 } else {
312 DescriptorPoolExtensionFinder finder(input->GetExtensionPool(), 335 DescriptorPoolExtensionFinder finder(input->GetExtensionPool(),
313 input->GetExtensionFactory(), 336 input->GetExtensionFactory(),
314 containing_type->GetDescriptor()); 337 containing_type->GetDescriptor());
315 return ParseMessageSet(input, &finder, &skipper); 338 return ParseMessageSet(input, &finder, &skipper);
316 } 339 }
317 } 340 }
318 341
319 int ExtensionSet::SpaceUsedExcludingSelf() const { 342 int ExtensionSet::SpaceUsedExcludingSelf() const {
320 int total_size = 343 int total_size =
321 extensions_.size() * sizeof(map<int, Extension>::value_type); 344 extensions_.size() * sizeof(ExtensionMap::value_type);
322 for (map<int, Extension>::const_iterator iter = extensions_.begin(), 345 for (ExtensionMap::const_iterator iter = extensions_.begin(),
323 end = extensions_.end(); 346 end = extensions_.end();
324 iter != end; 347 iter != end;
325 ++iter) { 348 ++iter) {
326 total_size += iter->second.SpaceUsedExcludingSelf(); 349 total_size += iter->second.SpaceUsedExcludingSelf();
327 } 350 }
328 return total_size; 351 return total_size;
329 } 352 }
330 353
331 inline int ExtensionSet::RepeatedMessage_SpaceUsedExcludingSelf( 354 inline int ExtensionSet::RepeatedMessage_SpaceUsedExcludingSelf(
332 RepeatedPtrFieldBase* field) { 355 RepeatedPtrFieldBase* field) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 default: 402 default:
380 // No extra storage costs for primitive types. 403 // No extra storage costs for primitive types.
381 break; 404 break;
382 } 405 }
383 } 406 }
384 return total_size; 407 return total_size;
385 } 408 }
386 409
387 // The Serialize*ToArray methods are only needed in the heavy library, as 410 // The Serialize*ToArray methods are only needed in the heavy library, as
388 // the lite library only generates SerializeWithCachedSizes. 411 // the lite library only generates SerializeWithCachedSizes.
389 uint8* ExtensionSet::SerializeWithCachedSizesToArray( 412 uint8* ExtensionSet::SerializeWithCachedSizesToArray(int start_field_number,
413 int end_field_number,
414 uint8* target) const {
415 return InternalSerializeWithCachedSizesToArray(
416 start_field_number, end_field_number, false, target);
417 }
418
419 uint8* ExtensionSet::SerializeMessageSetWithCachedSizesToArray(
420 uint8* target) const {
421 return InternalSerializeMessageSetWithCachedSizesToArray(false, target);
422 }
423
424 uint8* ExtensionSet::InternalSerializeWithCachedSizesToArray(
390 int start_field_number, int end_field_number, 425 int start_field_number, int end_field_number,
391 uint8* target) const { 426 bool deterministic, uint8* target) const {
392 map<int, Extension>::const_iterator iter; 427 ExtensionMap::const_iterator iter;
393 for (iter = extensions_.lower_bound(start_field_number); 428 for (iter = extensions_.lower_bound(start_field_number);
394 iter != extensions_.end() && iter->first < end_field_number; 429 iter != extensions_.end() && iter->first < end_field_number;
395 ++iter) { 430 ++iter) {
396 target = iter->second.SerializeFieldWithCachedSizesToArray(iter->first, 431 target = iter->second.InternalSerializeFieldWithCachedSizesToArray(
397 target); 432 iter->first, deterministic, target);
398 } 433 }
399 return target; 434 return target;
400 } 435 }
401 436
402 uint8* ExtensionSet::SerializeMessageSetWithCachedSizesToArray( 437 uint8* ExtensionSet::InternalSerializeMessageSetWithCachedSizesToArray(
403 uint8* target) const { 438 bool deterministic, uint8* target) const {
404 map<int, Extension>::const_iterator iter; 439 ExtensionMap::const_iterator iter;
405 for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) { 440 for (iter = extensions_.begin(); iter != extensions_.end(); ++iter) {
406 target = iter->second.SerializeMessageSetItemWithCachedSizesToArray( 441 target = iter->second.InternalSerializeMessageSetItemWithCachedSizesToArray(
407 iter->first, target); 442 iter->first, deterministic, target);
408 } 443 }
409 return target; 444 return target;
410 } 445 }
411 446
412 uint8* ExtensionSet::Extension::SerializeFieldWithCachedSizesToArray( 447 uint8* ExtensionSet::Extension::InternalSerializeFieldWithCachedSizesToArray(
413 int number, uint8* target) const { 448 int number, bool deterministic, uint8* target) const {
414 if (is_repeated) { 449 if (is_repeated) {
415 if (is_packed) { 450 if (is_packed) {
416 if (cached_size == 0) return target; 451 if (cached_size == 0) return target;
417 452
418 target = WireFormatLite::WriteTagToArray(number, 453 target = WireFormatLite::WriteTagToArray(number,
419 WireFormatLite::WIRETYPE_LENGTH_DELIMITED, target); 454 WireFormatLite::WIRETYPE_LENGTH_DELIMITED, target);
420 target = WireFormatLite::WriteInt32NoTagToArray(cached_size, target); 455 target = WireFormatLite::WriteInt32NoTagToArray(cached_size, target);
421 456
422 switch (real_type(type)) { 457 switch (real_type(type)) {
423 #define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ 458 #define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 HANDLE_TYPE( FIXED32, Fixed32, uint32); 505 HANDLE_TYPE( FIXED32, Fixed32, uint32);
471 HANDLE_TYPE( FIXED64, Fixed64, uint64); 506 HANDLE_TYPE( FIXED64, Fixed64, uint64);
472 HANDLE_TYPE(SFIXED32, SFixed32, int32); 507 HANDLE_TYPE(SFIXED32, SFixed32, int32);
473 HANDLE_TYPE(SFIXED64, SFixed64, int64); 508 HANDLE_TYPE(SFIXED64, SFixed64, int64);
474 HANDLE_TYPE( FLOAT, Float, float); 509 HANDLE_TYPE( FLOAT, Float, float);
475 HANDLE_TYPE( DOUBLE, Double, double); 510 HANDLE_TYPE( DOUBLE, Double, double);
476 HANDLE_TYPE( BOOL, Bool, bool); 511 HANDLE_TYPE( BOOL, Bool, bool);
477 HANDLE_TYPE( STRING, String, string); 512 HANDLE_TYPE( STRING, String, string);
478 HANDLE_TYPE( BYTES, Bytes, string); 513 HANDLE_TYPE( BYTES, Bytes, string);
479 HANDLE_TYPE( ENUM, Enum, enum); 514 HANDLE_TYPE( ENUM, Enum, enum);
515 #undef HANDLE_TYPE
516 #define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \
517 case FieldDescriptor::TYPE_##UPPERCASE: \
518 for (int i = 0; i < repeated_##LOWERCASE##_value->size(); i++) { \
519 target = WireFormatLite::InternalWrite##CAMELCASE##ToArray( \
520 number, repeated_##LOWERCASE##_value->Get(i), \
521 deterministic, target); \
522 } \
523 break
524
480 HANDLE_TYPE( GROUP, Group, message); 525 HANDLE_TYPE( GROUP, Group, message);
481 HANDLE_TYPE( MESSAGE, Message, message); 526 HANDLE_TYPE( MESSAGE, Message, message);
482 #undef HANDLE_TYPE 527 #undef HANDLE_TYPE
483 } 528 }
484 } 529 }
485 } else if (!is_cleared) { 530 } else if (!is_cleared) {
486 switch (real_type(type)) { 531 switch (real_type(type)) {
487 #define HANDLE_TYPE(UPPERCASE, CAMELCASE, VALUE) \ 532 #define HANDLE_TYPE(UPPERCASE, CAMELCASE, VALUE) \
488 case FieldDescriptor::TYPE_##UPPERCASE: \ 533 case FieldDescriptor::TYPE_##UPPERCASE: \
489 target = WireFormatLite::Write##CAMELCASE##ToArray( \ 534 target = WireFormatLite::Write##CAMELCASE##ToArray( \
(...skipping 13 matching lines...) Expand all
503 HANDLE_TYPE( FLOAT, Float, float_value); 548 HANDLE_TYPE( FLOAT, Float, float_value);
504 HANDLE_TYPE( DOUBLE, Double, double_value); 549 HANDLE_TYPE( DOUBLE, Double, double_value);
505 HANDLE_TYPE( BOOL, Bool, bool_value); 550 HANDLE_TYPE( BOOL, Bool, bool_value);
506 HANDLE_TYPE( STRING, String, *string_value); 551 HANDLE_TYPE( STRING, String, *string_value);
507 HANDLE_TYPE( BYTES, Bytes, *string_value); 552 HANDLE_TYPE( BYTES, Bytes, *string_value);
508 HANDLE_TYPE( ENUM, Enum, enum_value); 553 HANDLE_TYPE( ENUM, Enum, enum_value);
509 HANDLE_TYPE( GROUP, Group, *message_value); 554 HANDLE_TYPE( GROUP, Group, *message_value);
510 #undef HANDLE_TYPE 555 #undef HANDLE_TYPE
511 case FieldDescriptor::TYPE_MESSAGE: 556 case FieldDescriptor::TYPE_MESSAGE:
512 if (is_lazy) { 557 if (is_lazy) {
513 target = lazymessage_value->WriteMessageToArray(number, target); 558 target = lazymessage_value->InternalWriteMessageToArray(
559 number, deterministic, target);
514 } else { 560 } else {
515 target = WireFormatLite::WriteMessageToArray( 561 target = WireFormatLite::InternalWriteMessageToArray(
516 number, *message_value, target); 562 number, *message_value, deterministic, target);
517 } 563 }
518 break; 564 break;
519 } 565 }
520 } 566 }
521 return target; 567 return target;
522 } 568 }
523 569
524 uint8* ExtensionSet::Extension::SerializeMessageSetItemWithCachedSizesToArray( 570 uint8*
525 int number, 571 ExtensionSet::Extension::InternalSerializeMessageSetItemWithCachedSizesToArray(
526 uint8* target) const { 572 int number, bool deterministic, uint8* target) const {
527 if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) { 573 if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) {
528 // Not a valid MessageSet extension, but serialize it the normal way. 574 // Not a valid MessageSet extension, but serialize it the normal way.
529 GOOGLE_LOG(WARNING) << "Invalid message set extension."; 575 GOOGLE_LOG(WARNING) << "Invalid message set extension.";
530 return SerializeFieldWithCachedSizesToArray(number, target); 576 return InternalSerializeFieldWithCachedSizesToArray(number, deterministic,
577 target);
531 } 578 }
532 579
533 if (is_cleared) return target; 580 if (is_cleared) return target;
534 581
535 // Start group. 582 // Start group.
536 target = io::CodedOutputStream::WriteTagToArray( 583 target = io::CodedOutputStream::WriteTagToArray(
537 WireFormatLite::kMessageSetItemStartTag, target); 584 WireFormatLite::kMessageSetItemStartTag, target);
538 // Write type ID. 585 // Write type ID.
539 target = WireFormatLite::WriteUInt32ToArray( 586 target = WireFormatLite::WriteUInt32ToArray(
540 WireFormatLite::kMessageSetTypeIdNumber, number, target); 587 WireFormatLite::kMessageSetTypeIdNumber, number, target);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 // required int32 type_id = 2; 649 // required int32 type_id = 2;
603 // required data message = 3; 650 // required data message = 3;
604 651
605 uint32 last_type_id = 0; 652 uint32 last_type_id = 0;
606 653
607 // If we see message data before the type_id, we'll append it to this so 654 // If we see message data before the type_id, we'll append it to this so
608 // we can parse it later. 655 // we can parse it later.
609 string message_data; 656 string message_data;
610 657
611 while (true) { 658 while (true) {
612 const uint32 tag = input->ReadTag(); 659 const uint32 tag = input->ReadTagNoLastTag();
613 if (tag == 0) return false; 660 if (tag == 0) return false;
614 661
615 switch (tag) { 662 switch (tag) {
616 case WireFormatLite::kMessageSetTypeIdTag: { 663 case WireFormatLite::kMessageSetTypeIdTag: {
617 uint32 type_id; 664 uint32 type_id;
618 if (!input->ReadVarint32(&type_id)) return false; 665 if (!input->ReadVarint32(&type_id)) return false;
619 last_type_id = type_id; 666 last_type_id = type_id;
620 667
621 if (!message_data.empty()) { 668 if (!message_data.empty()) {
622 // We saw some message data before the type_id. Have to parse it 669 // We saw some message data before the type_id. Have to parse it
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 WireFormatLite::WriteMessageMaybeToArray( 742 WireFormatLite::WriteMessageMaybeToArray(
696 WireFormatLite::kMessageSetMessageNumber, 743 WireFormatLite::kMessageSetMessageNumber,
697 *message_value, 744 *message_value,
698 output); 745 output);
699 } 746 }
700 747
701 // End group. 748 // End group.
702 output->WriteTag(WireFormatLite::kMessageSetItemEndTag); 749 output->WriteTag(WireFormatLite::kMessageSetItemEndTag);
703 } 750 }
704 751
705 int ExtensionSet::Extension::MessageSetItemByteSize(int number) const { 752 size_t ExtensionSet::Extension::MessageSetItemByteSize(int number) const {
706 if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) { 753 if (type != WireFormatLite::TYPE_MESSAGE || is_repeated) {
707 // Not a valid MessageSet extension, but compute the byte size for it the 754 // Not a valid MessageSet extension, but compute the byte size for it the
708 // normal way. 755 // normal way.
709 return ByteSize(number); 756 return ByteSize(number);
710 } 757 }
711 758
712 if (is_cleared) return 0; 759 if (is_cleared) return 0;
713 760
714 int our_size = WireFormatLite::kMessageSetItemTagsSize; 761 size_t our_size = WireFormatLite::kMessageSetItemTagsSize;
715 762
716 // type_id 763 // type_id
717 our_size += io::CodedOutputStream::VarintSize32(number); 764 our_size += io::CodedOutputStream::VarintSize32(number);
718 765
719 // message 766 // message
720 int message_size = 0; 767 size_t message_size = 0;
721 if (is_lazy) { 768 if (is_lazy) {
722 message_size = lazymessage_value->ByteSize(); 769 message_size = lazymessage_value->ByteSize();
723 } else { 770 } else {
724 message_size = message_value->ByteSize(); 771 message_size = message_value->ByteSize();
725 } 772 }
726 773
727 our_size += io::CodedOutputStream::VarintSize32(message_size); 774 our_size += io::CodedOutputStream::VarintSize32(message_size);
728 our_size += message_size; 775 our_size += message_size;
729 776
730 return our_size; 777 return our_size;
731 } 778 }
732 779
733 void ExtensionSet::SerializeMessageSetWithCachedSizes( 780 void ExtensionSet::SerializeMessageSetWithCachedSizes(
734 io::CodedOutputStream* output) const { 781 io::CodedOutputStream* output) const {
735 for (map<int, Extension>::const_iterator iter = extensions_.begin(); 782 for (ExtensionMap::const_iterator iter = extensions_.begin();
736 iter != extensions_.end(); ++iter) { 783 iter != extensions_.end(); ++iter) {
737 iter->second.SerializeMessageSetItemWithCachedSizes(iter->first, output); 784 iter->second.SerializeMessageSetItemWithCachedSizes(iter->first, output);
738 } 785 }
739 } 786 }
740 787
741 int ExtensionSet::MessageSetByteSize() const { 788 size_t ExtensionSet::MessageSetByteSize() const {
742 int total_size = 0; 789 size_t total_size = 0;
743 790
744 for (map<int, Extension>::const_iterator iter = extensions_.begin(); 791 for (ExtensionMap::const_iterator iter = extensions_.begin();
745 iter != extensions_.end(); ++iter) { 792 iter != extensions_.end(); ++iter) {
746 total_size += iter->second.MessageSetItemByteSize(iter->first); 793 total_size += iter->second.MessageSetItemByteSize(iter->first);
747 } 794 }
748 795
749 return total_size; 796 return total_size;
750 } 797 }
751 798
752 } // namespace internal 799 } // namespace internal
753 } // namespace protobuf 800 } // namespace protobuf
754 } // namespace google 801 } // namespace google
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698