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

Side by Side Diff: third_party/protobuf/objectivec/GPBDictionary.m

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 27 matching lines...) Expand all
38 38
39 // ------------------------------ NOTE ------------------------------ 39 // ------------------------------ NOTE ------------------------------
40 // At the moment, this is all using NSNumbers in NSDictionaries under 40 // At the moment, this is all using NSNumbers in NSDictionaries under
41 // the hood, but it is all hidden so we can come back and optimize 41 // the hood, but it is all hidden so we can come back and optimize
42 // with direct CFDictionary usage later. The reason that wasn't 42 // with direct CFDictionary usage later. The reason that wasn't
43 // done yet is needing to support 32bit iOS builds. Otherwise 43 // done yet is needing to support 32bit iOS builds. Otherwise
44 // it would be pretty simple to store all this data in CFDictionaries 44 // it would be pretty simple to store all this data in CFDictionaries
45 // directly. 45 // directly.
46 // ------------------------------------------------------------------ 46 // ------------------------------------------------------------------
47 47
48 // Direct access is use for speed, to avoid even internally declaring things
49 // read/write, etc. The warning is enabled in the project to ensure code calling
50 // protos can turn on -Wdirect-ivar-access without issues.
51 #pragma clang diagnostic push
52 #pragma clang diagnostic ignored "-Wdirect-ivar-access"
53
48 // Used to include code only visible to specific versions of the static 54 // Used to include code only visible to specific versions of the static
49 // analyzer. Useful for wrapping code that only exists to silence the analyzer. 55 // analyzer. Useful for wrapping code that only exists to silence the analyzer.
50 // Determine the values you want to use for BEGIN_APPLE_BUILD_VERSION, 56 // Determine the values you want to use for BEGIN_APPLE_BUILD_VERSION,
51 // END_APPLE_BUILD_VERSION using: 57 // END_APPLE_BUILD_VERSION using:
52 // xcrun clang -dM -E -x c /dev/null | grep __apple_build_version__ 58 // xcrun clang -dM -E -x c /dev/null | grep __apple_build_version__
53 // Example usage: 59 // Example usage:
54 // #if GPB_STATIC_ANALYZER_ONLY(5621, 5623) ... #endif 60 // #if GPB_STATIC_ANALYZER_ONLY(5621, 5623) ... #endif
55 #define GPB_STATIC_ANALYZER_ONLY(BEGIN_APPLE_BUILD_VERSION, END_APPLE_BUILD_VERS ION) \ 61 #define GPB_STATIC_ANALYZER_ONLY(BEGIN_APPLE_BUILD_VERSION, END_APPLE_BUILD_VERS ION) \
56 (defined(__clang_analyzer__) && \ 62 (defined(__clang_analyzer__) && \
57 (__apple_build_version__ >= BEGIN_APPLE_BUILD_VERSION && \ 63 (__apple_build_version__ >= BEGIN_APPLE_BUILD_VERSION && \
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 } 483 }
478 } 484 }
479 } 485 }
480 486
481 if (!hitError) { 487 if (!hitError) {
482 // Handle the special defaults and/or missing key/value. 488 // Handle the special defaults and/or missing key/value.
483 if ((keyDataType == GPBDataTypeString) && (key.valueString == nil)) { 489 if ((keyDataType == GPBDataTypeString) && (key.valueString == nil)) {
484 key.valueString = [@"" retain]; 490 key.valueString = [@"" retain];
485 } 491 }
486 if (GPBDataTypeIsObject(valueDataType) && value.valueString == nil) { 492 if (GPBDataTypeIsObject(valueDataType) && value.valueString == nil) {
493 #pragma clang diagnostic push
494 #pragma clang diagnostic ignored "-Wswitch-enum"
487 switch (valueDataType) { 495 switch (valueDataType) {
488 case GPBDataTypeString: 496 case GPBDataTypeString:
489 value.valueString = [@"" retain]; 497 value.valueString = [@"" retain];
490 break; 498 break;
491 case GPBDataTypeBytes: 499 case GPBDataTypeBytes:
492 value.valueData = [GPBEmptyNSData() retain]; 500 value.valueData = [GPBEmptyNSData() retain];
493 break; 501 break;
494 #if defined(__clang_analyzer__) 502 #if defined(__clang_analyzer__)
495 case GPBDataTypeGroup: 503 case GPBDataTypeGroup:
496 // Maps can't really have Groups as the value type, but this case is n eeded 504 // Maps can't really have Groups as the value type, but this case is n eeded
497 // so the analyzer won't report the posibility of send nil in for the value 505 // so the analyzer won't report the posibility of send nil in for the value
498 // in the NSMutableDictionary case below. 506 // in the NSMutableDictionary case below.
499 #endif 507 #endif
500 case GPBDataTypeMessage: { 508 case GPBDataTypeMessage: {
501 value.valueMessage = [[field.msgClass alloc] init]; 509 value.valueMessage = [[field.msgClass alloc] init];
502 break; 510 break;
503 } 511 }
504 default: 512 default:
505 // Nothing 513 // Nothing
506 break; 514 break;
507 } 515 }
516 #pragma clang diagnostic pop
508 } 517 }
509 518
510 if ((keyDataType == GPBDataTypeString) && GPBDataTypeIsObject(valueDataType) ) { 519 if ((keyDataType == GPBDataTypeString) && GPBDataTypeIsObject(valueDataType) ) {
511 #if GPB_STATIC_ANALYZER_ONLY(6020053, 7000181) 520 #if GPB_STATIC_ANALYZER_ONLY(6020053, 7000181)
512 // Limited to Xcode 6.4 - 7.2, are known to fail here. The upper end can 521 // Limited to Xcode 6.4 - 7.2, are known to fail here. The upper end can
513 // be raised as needed for new Xcodes. 522 // be raised as needed for new Xcodes.
514 // 523 //
515 // This is only needed on a "shallow" analyze; on a "deep" analyze, the 524 // This is only needed on a "shallow" analyze; on a "deep" analyze, the
516 // existing code path gets this correct. In shallow, the analyzer decides 525 // existing code path gets this correct. In shallow, the analyzer decides
517 // GPBDataTypeIsObject(valueDataType) is both false and true on a single 526 // GPBDataTypeIsObject(valueDataType) is both false and true on a single
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, UInt32, uint32_t, KHELPE R) 570 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, UInt32, uint32_t, KHELPE R)
562 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, Int32, int32_t, KHELPER) 571 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, Int32, int32_t, KHELPER)
563 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, UInt64, uint64_t, KHELPE R) 572 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, UInt64, uint64_t, KHELPE R)
564 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, Int64, int64_t, KHELPER) 573 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, Int64, int64_t, KHELPER)
565 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, Bool, BOOL, KHELPER) 574 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, Bool, BOOL, KHELPER)
566 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, Float, float, KHELPER) 575 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, Float, float, KHELPER)
567 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, Double, double, KHELPER) 576 //%DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, Double, double, KHELPER)
568 //%DICTIONARY_KEY_TO_ENUM_IMPL(KEY_NAME, KEY_TYPE, KisP, Enum, int32_t, KHELPER) 577 //%DICTIONARY_KEY_TO_ENUM_IMPL(KEY_NAME, KEY_TYPE, KisP, Enum, int32_t, KHELPER)
569 578
570 //%PDDM-DEFINE DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, KHELPER) 579 //%PDDM-DEFINE DICTIONARY_KEY_TO_POD_IMPL(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, KHELPER)
571 //%DICTIONARY_COMMON_IMPL(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, KHEL PER, POD, value) 580 //%DICTIONARY_COMMON_IMPL(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, KHEL PER, POD, VALUE_NAME, value)
572 581
573 //%PDDM-DEFINE DICTIONARY_POD_KEY_TO_OBJECT_IMPL(KEY_NAME, KEY_TYPE, VALUE_NAME, VALUE_TYPE) 582 //%PDDM-DEFINE DICTIONARY_POD_KEY_TO_OBJECT_IMPL(KEY_NAME, KEY_TYPE, VALUE_NAME, VALUE_TYPE)
574 //%DICTIONARY_COMMON_IMPL(KEY_NAME, KEY_TYPE, , VALUE_NAME, VALUE_TYPE, POD, OBJ ECT, object) 583 //%DICTIONARY_COMMON_IMPL(KEY_NAME, KEY_TYPE, , VALUE_NAME, VALUE_TYPE, POD, OBJ ECT, Object, object)
575 584
576 //%PDDM-DEFINE DICTIONARY_COMMON_IMPL(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALU E_TYPE, KHELPER, VHELPER, VNAME) 585 //%PDDM-DEFINE DICTIONARY_COMMON_IMPL(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALU E_TYPE, KHELPER, VHELPER, VNAME, VNAME_VAR)
577 //%#pragma mark - KEY_NAME -> VALUE_NAME 586 //%#pragma mark - KEY_NAME -> VALUE_NAME
578 //% 587 //%
579 //%@implementation GPB##KEY_NAME##VALUE_NAME##Dictionary { 588 //%@implementation GPB##KEY_NAME##VALUE_NAME##Dictionary {
580 //% @package 589 //% @package
581 //% NSMutableDictionary *_dictionary; 590 //% NSMutableDictionary *_dictionary;
582 //%} 591 //%}
583 //% 592 //%
584 //%+ (instancetype)dictionary { 593 //%+ (instancetype)dictionary {
585 //% return [[[self alloc] initWith##VNAME$u##s:NULL forKeys:NULL count:0] autor elease]; 594 //% return [[[self alloc] initWith##VNAME##s:NULL forKeys:NULL count:0] autorel ease];
586 //%} 595 //%}
587 //% 596 //%
588 //%+ (instancetype)dictionaryWith##VNAME$u##:(VALUE_TYPE)##VNAME 597 //%+ (instancetype)dictionaryWith##VNAME##:(VALUE_TYPE)##VNAME_VAR
589 //% ##VNAME$S## forKey:(KEY_TYPE##KisP$S##KisP)key { 598 //% ##VNAME$S## forKey:(KEY_TYPE##KisP$S##KisP)key {
590 //% // Cast is needed so the compiler knows what class we are invoking initWith ##VNAME$u##s:forKeys:count: 599 //% // Cast is needed so the compiler knows what class we are invoking initWith ##VNAME##s:forKeys:count:
591 //% // on to get the type correct. 600 //% // on to get the type correct.
592 //% return [[(GPB##KEY_NAME##VALUE_NAME##Dictionary*)[self alloc] initWith##VNA ME$u##s:&##VNAME 601 //% return [[(GPB##KEY_NAME##VALUE_NAME##Dictionary*)[self alloc] initWith##VNA ME##s:&##VNAME_VAR
593 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## fo rKeys:&key 602 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## fo rKeys:&key
594 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:1] autorelease]; 603 //% KEY_NAME$S VALUE_NAME$S ##VNAME$S## count:1] autorelease];
595 //%} 604 //%}
596 //% 605 //%
597 //%+ (instancetype)dictionaryWith##VNAME$u##s:(const VALUE_TYPE [])##VNAME##s 606 //%+ (instancetype)dictionaryWith##VNAME##s:(const VALUE_TYPE [])##VNAME_VAR##s
598 //% ##VNAME$S## forKeys:(const KEY_TYPE##KisP$S##KisP [])k eys 607 //% ##VNAME$S## forKeys:(const KEY_TYPE##KisP$S##KisP [])k eys
599 //% ##VNAME$S## count:(NSUInteger)count { 608 //% ##VNAME$S## count:(NSUInteger)count {
600 //% // Cast is needed so the compiler knows what class we are invoking initWith ##VNAME$u##s:forKeys:count: 609 //% // Cast is needed so the compiler knows what class we are invoking initWith ##VNAME##s:forKeys:count:
601 //% // on to get the type correct. 610 //% // on to get the type correct.
602 //% return [[(GPB##KEY_NAME##VALUE_NAME##Dictionary*)[self alloc] initWith##VNA ME$u##s:##VNAME##s 611 //% return [[(GPB##KEY_NAME##VALUE_NAME##Dictionary*)[self alloc] initWith##VNA ME##s:##VNAME_VAR##s
603 //% KEY_NAME$S VALUE_NAME$S forKeys: keys 612 //% KEY_NAME$S VALUE_NAME$S forKeys: keys
604 //% KEY_NAME$S VALUE_NAME$S count: count] autorelease]; 613 //% KEY_NAME$S VALUE_NAME$S count: count] autorelease];
605 //%} 614 //%}
606 //% 615 //%
607 //%+ (instancetype)dictionaryWithDictionary:(GPB##KEY_NAME##VALUE_NAME##Dictiona ry *)dictionary { 616 //%+ (instancetype)dictionaryWithDictionary:(GPB##KEY_NAME##VALUE_NAME##Dictiona ry *)dictionary {
608 //% // Cast is needed so the compiler knows what class we are invoking initWith Dictionary: 617 //% // Cast is needed so the compiler knows what class we are invoking initWith Dictionary:
609 //% // on to get the type correct. 618 //% // on to get the type correct.
610 //% return [[(GPB##KEY_NAME##VALUE_NAME##Dictionary*)[self alloc] initWithDicti onary:dictionary] autorelease]; 619 //% return [[(GPB##KEY_NAME##VALUE_NAME##Dictionary*)[self alloc] initWithDicti onary:dictionary] autorelease];
611 //%} 620 //%}
612 //% 621 //%
613 //%+ (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 622 //%+ (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
614 //% return [[[self alloc] initWithCapacity:numItems] autorelease]; 623 //% return [[[self alloc] initWithCapacity:numItems] autorelease];
615 //%} 624 //%}
616 //% 625 //%
617 //%- (instancetype)init { 626 //%- (instancetype)init {
618 //% return [self initWith##VNAME$u##s:NULL forKeys:NULL count:0]; 627 //% return [self initWith##VNAME##s:NULL forKeys:NULL count:0];
619 //%} 628 //%}
620 //% 629 //%
621 //%- (instancetype)initWith##VNAME$u##s:(const VALUE_TYPE [])##VNAME##s 630 //%- (instancetype)initWith##VNAME##s:(const VALUE_TYPE [])##VNAME_VAR##s
622 //% ##VNAME$S## forKeys:(const KEY_TYPE##KisP$S##KisP [])keys 631 //% ##VNAME$S## forKeys:(const KEY_TYPE##KisP$S##KisP [])keys
623 //% ##VNAME$S## count:(NSUInteger)count { 632 //% ##VNAME$S## count:(NSUInteger)count {
624 //% self = [super init]; 633 //% self = [super init];
625 //% if (self) { 634 //% if (self) {
626 //% _dictionary = [[NSMutableDictionary alloc] init]; 635 //% _dictionary = [[NSMutableDictionary alloc] init];
627 //% if (count && VNAME##s && keys) { 636 //% if (count && VNAME_VAR##s && keys) {
628 //% for (NSUInteger i = 0; i < count; ++i) { 637 //% for (NSUInteger i = 0; i < count; ++i) {
629 //%DICTIONARY_VALIDATE_VALUE_##VHELPER(VNAME##s[i], ______)##DICTIONARY_VALIDATE _KEY_##KHELPER(keys[i], ______) [_dictionary setObject:WRAPPED##VHELPER(V NAME##s[i]) forKey:WRAPPED##KHELPER(keys[i])]; 638 //%DICTIONARY_VALIDATE_VALUE_##VHELPER(VNAME_VAR##s[i], ______)##DICTIONARY_VALI DATE_KEY_##KHELPER(keys[i], ______) [_dictionary setObject:WRAPPED##VHELP ER(VNAME_VAR##s[i]) forKey:WRAPPED##KHELPER(keys[i])];
630 //% } 639 //% }
631 //% } 640 //% }
632 //% } 641 //% }
633 //% return self; 642 //% return self;
634 //%} 643 //%}
635 //% 644 //%
636 //%- (instancetype)initWithDictionary:(GPB##KEY_NAME##VALUE_NAME##Dictionary *)d ictionary { 645 //%- (instancetype)initWithDictionary:(GPB##KEY_NAME##VALUE_NAME##Dictionary *)d ictionary {
637 //% self = [self initWith##VNAME$u##s:NULL forKeys:NULL count:0]; 646 //% self = [self initWith##VNAME##s:NULL forKeys:NULL count:0];
638 //% if (self) { 647 //% if (self) {
639 //% if (dictionary) { 648 //% if (dictionary) {
640 //% [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 649 //% [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
641 //% } 650 //% }
642 //% } 651 //% }
643 //% return self; 652 //% return self;
644 //%} 653 //%}
645 //% 654 //%
646 //%- (instancetype)initWithCapacity:(NSUInteger)numItems { 655 //%- (instancetype)initWithCapacity:(NSUInteger)numItems {
647 //% #pragma unused(numItems) 656 //% #pragma unused(numItems)
648 //% return [self initWith##VNAME$u##s:NULL forKeys:NULL count:0]; 657 //% return [self initWith##VNAME##s:NULL forKeys:NULL count:0];
649 //%} 658 //%}
650 //% 659 //%
651 //%DICTIONARY_IMMUTABLE_CORE(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, K HELPER, VHELPER, VNAME, ) 660 //%DICTIONARY_IMMUTABLE_CORE(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, K HELPER, VHELPER, VNAME, VNAME_VAR, )
652 //% 661 //%
653 //%VALUE_FOR_KEY_##VHELPER(KEY_TYPE##KisP$S##KisP, VALUE_NAME, VALUE_TYPE, KHELP ER) 662 //%VALUE_FOR_KEY_##VHELPER(KEY_TYPE##KisP$S##KisP, VALUE_NAME, VALUE_TYPE, KHELP ER)
654 //% 663 //%
655 //%DICTIONARY_MUTABLE_CORE(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, KHE LPER, VHELPER, VNAME, ) 664 //%DICTIONARY_MUTABLE_CORE(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, KHE LPER, VHELPER, VNAME, VNAME_VAR, )
656 //% 665 //%
657 //%@end 666 //%@end
658 //% 667 //%
659 668
660 //%PDDM-DEFINE DICTIONARY_KEY_TO_ENUM_IMPL(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, KHELPER) 669 //%PDDM-DEFINE DICTIONARY_KEY_TO_ENUM_IMPL(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, KHELPER)
661 //%DICTIONARY_KEY_TO_ENUM_IMPL2(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE , KHELPER, POD) 670 //%DICTIONARY_KEY_TO_ENUM_IMPL2(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE , KHELPER, POD)
662 //%PDDM-DEFINE DICTIONARY_KEY_TO_ENUM_IMPL2(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME , VALUE_TYPE, KHELPER, VHELPER) 671 //%PDDM-DEFINE DICTIONARY_KEY_TO_ENUM_IMPL2(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME , VALUE_TYPE, KHELPER, VHELPER)
663 //%#pragma mark - KEY_NAME -> VALUE_NAME 672 //%#pragma mark - KEY_NAME -> VALUE_NAME
664 //% 673 //%
665 //%@implementation GPB##KEY_NAME##VALUE_NAME##Dictionary { 674 //%@implementation GPB##KEY_NAME##VALUE_NAME##Dictionary {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 //% } 764 //% }
756 //% return self; 765 //% return self;
757 //%} 766 //%}
758 //% 767 //%
759 //%- (instancetype)initWithValidationFunction:(GPBEnumValidationFunc)func 768 //%- (instancetype)initWithValidationFunction:(GPBEnumValidationFunc)func
760 //% capacity:(NSUInteger)numItems { 769 //% capacity:(NSUInteger)numItems {
761 //% #pragma unused(numItems) 770 //% #pragma unused(numItems)
762 //% return [self initWithValidationFunction:func rawValues:NULL forKeys:NULL co unt:0]; 771 //% return [self initWithValidationFunction:func rawValues:NULL forKeys:NULL co unt:0];
763 //%} 772 //%}
764 //% 773 //%
765 //%DICTIONARY_IMMUTABLE_CORE(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, K HELPER, VHELPER, value, Raw) 774 //%DICTIONARY_IMMUTABLE_CORE(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, K HELPER, VHELPER, Value, value, Raw)
766 //% 775 //%
767 //%- (BOOL)valueForKey:(KEY_TYPE##KisP$S##KisP)key value:(VALUE_TYPE *)value { 776 //%- (BOOL)getEnum:(VALUE_TYPE *)value forKey:(KEY_TYPE##KisP$S##KisP)key {
768 //% NSNumber *wrapped = [_dictionary objectForKey:WRAPPED##KHELPER(key)]; 777 //% NSNumber *wrapped = [_dictionary objectForKey:WRAPPED##KHELPER(key)];
769 //% if (wrapped && value) { 778 //% if (wrapped && value) {
770 //% VALUE_TYPE result = UNWRAP##VALUE_NAME(wrapped); 779 //% VALUE_TYPE result = UNWRAP##VALUE_NAME(wrapped);
771 //% if (!_validationFunc(result)) { 780 //% if (!_validationFunc(result)) {
772 //% result = kGPBUnrecognizedEnumeratorValue; 781 //% result = kGPBUnrecognizedEnumeratorValue;
773 //% } 782 //% }
774 //% *value = result; 783 //% *value = result;
775 //% } 784 //% }
776 //% return (wrapped != NULL); 785 //% return (wrapped != NULL);
777 //%} 786 //%}
778 //% 787 //%
779 //%- (BOOL)valueForKey:(KEY_TYPE##KisP$S##KisP)key rawValue:(VALUE_TYPE *)rawVal ue { 788 //%- (BOOL)getRawValue:(VALUE_TYPE *)rawValue forKey:(KEY_TYPE##KisP$S##KisP)key {
780 //% NSNumber *wrapped = [_dictionary objectForKey:WRAPPED##KHELPER(key)]; 789 //% NSNumber *wrapped = [_dictionary objectForKey:WRAPPED##KHELPER(key)];
781 //% if (wrapped && rawValue) { 790 //% if (wrapped && rawValue) {
782 //% *rawValue = UNWRAP##VALUE_NAME(wrapped); 791 //% *rawValue = UNWRAP##VALUE_NAME(wrapped);
783 //% } 792 //% }
784 //% return (wrapped != NULL); 793 //% return (wrapped != NULL);
785 //%} 794 //%}
786 //% 795 //%
787 //%- (void)enumerateKeysAndValuesUsingBlock: 796 //%- (void)enumerateKeysAndEnumsUsingBlock:
788 //% (void (^)(KEY_TYPE KisP##key, VALUE_TYPE value, BOOL *stop))block { 797 //% (void (^)(KEY_TYPE KisP##key, VALUE_TYPE value, BOOL *stop))block {
789 //% GPBEnumValidationFunc func = _validationFunc; 798 //% GPBEnumValidationFunc func = _validationFunc;
790 //% [_dictionary enumerateKeysAndObjectsUsingBlock:^(ENUM_TYPE##KHELPER(KEY_TYP E)##aKey, 799 //% [_dictionary enumerateKeysAndObjectsUsingBlock:^(ENUM_TYPE##KHELPER(KEY_TYP E)##aKey,
791 //% ENUM_TYPE##VHELPER(VALUE_T YPE)##aValue, 800 //% ENUM_TYPE##VHELPER(VALUE_T YPE)##aValue,
792 //% BOOL *stop) { 801 //% BOOL *stop) {
793 //% VALUE_TYPE unwrapped = UNWRAP##VALUE_NAME(aValue); 802 //% VALUE_TYPE unwrapped = UNWRAP##VALUE_NAME(aValue);
794 //% if (!func(unwrapped)) { 803 //% if (!func(unwrapped)) {
795 //% unwrapped = kGPBUnrecognizedEnumeratorValue; 804 //% unwrapped = kGPBUnrecognizedEnumeratorValue;
796 //% } 805 //% }
797 //% block(UNWRAP##KEY_NAME(aKey), unwrapped, stop); 806 //% block(UNWRAP##KEY_NAME(aKey), unwrapped, stop);
798 //% }]; 807 //% }];
799 //%} 808 //%}
800 //% 809 //%
801 //%DICTIONARY_MUTABLE_CORE(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, KHE LPER, VHELPER, value, Raw) 810 //%DICTIONARY_MUTABLE_CORE2(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, KH ELPER, VHELPER, Value, Enum, value, Raw)
802 //% 811 //%
803 //%- (void)setValue:(VALUE_TYPE)value forKey:(KEY_TYPE##KisP$S##KisP)key { 812 //%- (void)setEnum:(VALUE_TYPE)value forKey:(KEY_TYPE##KisP$S##KisP)key {
804 //%DICTIONARY_VALIDATE_KEY_##KHELPER(key, ) if (!_validationFunc(value)) { 813 //%DICTIONARY_VALIDATE_KEY_##KHELPER(key, ) if (!_validationFunc(value)) {
805 //% [NSException raise:NSInvalidArgumentException 814 //% [NSException raise:NSInvalidArgumentException
806 //% format:@"GPB##KEY_NAME##VALUE_NAME##Dictionary: Attempt to se t an unknown enum value (%d)", 815 //% format:@"GPB##KEY_NAME##VALUE_NAME##Dictionary: Attempt to se t an unknown enum value (%d)",
807 //% value]; 816 //% value];
808 //% } 817 //% }
809 //% 818 //%
810 //% [_dictionary setObject:WRAPPED##VHELPER(value) forKey:WRAPPED##KHELPER(key) ]; 819 //% [_dictionary setObject:WRAPPED##VHELPER(value) forKey:WRAPPED##KHELPER(key) ];
811 //% if (_autocreator) { 820 //% if (_autocreator) {
812 //% GPBAutocreatedDictionaryModified(_autocreator, self); 821 //% GPBAutocreatedDictionaryModified(_autocreator, self);
813 //% } 822 //% }
814 //%} 823 //%}
815 //% 824 //%
816 //%@end 825 //%@end
817 //% 826 //%
818 827
819 //%PDDM-DEFINE DICTIONARY_IMMUTABLE_CORE(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, V ALUE_TYPE, KHELPER, VHELPER, VNAME, ACCESSOR_NAME) 828 //%PDDM-DEFINE DICTIONARY_IMMUTABLE_CORE(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, V ALUE_TYPE, KHELPER, VHELPER, VNAME, VNAME_VAR, ACCESSOR_NAME)
820 //%- (void)dealloc { 829 //%- (void)dealloc {
821 //% NSAssert(!_autocreator, 830 //% NSAssert(!_autocreator,
822 //% @"%@: Autocreator must be cleared before release, autocreator: %@" , 831 //% @"%@: Autocreator must be cleared before release, autocreator: %@" ,
823 //% [self class], _autocreator); 832 //% [self class], _autocreator);
824 //% [_dictionary release]; 833 //% [_dictionary release];
825 //% [super dealloc]; 834 //% [super dealloc];
826 //%} 835 //%}
827 //% 836 //%
828 //%- (instancetype)copyWithZone:(NSZone *)zone { 837 //%- (instancetype)copyWithZone:(NSZone *)zone {
829 //% return [[GPB##KEY_NAME##VALUE_NAME##Dictionary allocWithZone:zone] initWith Dictionary:self]; 838 //% return [[GPB##KEY_NAME##VALUE_NAME##Dictionary allocWithZone:zone] initWith Dictionary:self];
830 //%} 839 //%}
831 //% 840 //%
832 //%- (BOOL)isEqual:(GPB##KEY_NAME##VALUE_NAME##Dictionary *)other { 841 //%- (BOOL)isEqual:(id)other {
833 //% if (self == other) { 842 //% if (self == other) {
834 //% return YES; 843 //% return YES;
835 //% } 844 //% }
836 //% if (![other isKindOfClass:[GPB##KEY_NAME##VALUE_NAME##Dictionary class]]) { 845 //% if (![other isKindOfClass:[GPB##KEY_NAME##VALUE_NAME##Dictionary class]]) {
837 //% return NO; 846 //% return NO;
838 //% } 847 //% }
839 //% return [_dictionary isEqual:other->_dictionary]; 848 //% GPB##KEY_NAME##VALUE_NAME##Dictionary *otherDictionary = other;
849 //% return [_dictionary isEqual:otherDictionary->_dictionary];
840 //%} 850 //%}
841 //% 851 //%
842 //%- (NSUInteger)hash { 852 //%- (NSUInteger)hash {
843 //% return _dictionary.count; 853 //% return _dictionary.count;
844 //%} 854 //%}
845 //% 855 //%
846 //%- (NSString *)description { 856 //%- (NSString *)description {
847 //% return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _d ictionary]; 857 //% return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _d ictionary];
848 //%} 858 //%}
849 //% 859 //%
850 //%- (NSUInteger)count { 860 //%- (NSUInteger)count {
851 //% return _dictionary.count; 861 //% return _dictionary.count;
852 //%} 862 //%}
853 //% 863 //%
854 //%- (void)enumerateKeysAnd##ACCESSOR_NAME##VNAME$u##sUsingBlock: 864 //%- (void)enumerateKeysAnd##ACCESSOR_NAME##VNAME##sUsingBlock:
855 //% (void (^)(KEY_TYPE KisP##key, VALUE_TYPE VNAME, BOOL *stop))block { 865 //% (void (^)(KEY_TYPE KisP##key, VALUE_TYPE VNAME_VAR, BOOL *stop))block {
856 //% [_dictionary enumerateKeysAndObjectsUsingBlock:^(ENUM_TYPE##KHELPER(KEY_TYP E)##aKey, 866 //% [_dictionary enumerateKeysAndObjectsUsingBlock:^(ENUM_TYPE##KHELPER(KEY_TYP E)##aKey,
857 //% ENUM_TYPE##VHELPER(VALUE_T YPE)##a##VNAME$u, 867 //% ENUM_TYPE##VHELPER(VALUE_T YPE)##a##VNAME_VAR$u,
858 //% BOOL *stop) { 868 //% BOOL *stop) {
859 //% block(UNWRAP##KEY_NAME(aKey), UNWRAP##VALUE_NAME(a##VNAME$u), stop); 869 //% block(UNWRAP##KEY_NAME(aKey), UNWRAP##VALUE_NAME(a##VNAME_VAR$u), stop) ;
860 //% }]; 870 //% }];
861 //%} 871 //%}
862 //% 872 //%
863 //%EXTRA_METHODS_##VHELPER(KEY_NAME, VALUE_NAME)- (size_t)computeSerializedSizeA sField:(GPBFieldDescriptor *)field { 873 //%EXTRA_METHODS_##VHELPER(KEY_NAME, VALUE_NAME)- (size_t)computeSerializedSizeA sField:(GPBFieldDescriptor *)field {
864 //% NSUInteger count = _dictionary.count; 874 //% NSUInteger count = _dictionary.count;
865 //% if (count == 0) { 875 //% if (count == 0) {
866 //% return 0; 876 //% return 0;
867 //% } 877 //% }
868 //% 878 //%
869 //% GPBDataType valueDataType = GPBGetFieldDataType(field); 879 //% GPBDataType valueDataType = GPBGetFieldDataType(field);
870 //% GPBDataType keyDataType = field.mapKeyDataType; 880 //% GPBDataType keyDataType = field.mapKeyDataType;
871 //% __block size_t result = 0; 881 //% __block size_t result = 0;
872 //% [_dictionary enumerateKeysAndObjectsUsingBlock:^(ENUM_TYPE##KHELPER(KEY_TYP E)##aKey, 882 //% [_dictionary enumerateKeysAndObjectsUsingBlock:^(ENUM_TYPE##KHELPER(KEY_TYP E)##aKey,
873 //% ENUM_TYPE##VHELPER(VALUE_T YPE)##a##VNAME$u##, 883 //% ENUM_TYPE##VHELPER(VALUE_T YPE)##a##VNAME_VAR$u##,
874 //% BOOL *stop) { 884 //% BOOL *stop) {
875 //% #pragma unused(stop) 885 //% #pragma unused(stop)
876 //% size_t msgSize = ComputeDict##KEY_NAME##FieldSize(UNWRAP##KEY_NAME(aKey), kMapKeyFieldNumber, keyDataType); 886 //% size_t msgSize = ComputeDict##KEY_NAME##FieldSize(UNWRAP##KEY_NAME(aKey), kMapKeyFieldNumber, keyDataType);
877 //% msgSize += ComputeDict##VALUE_NAME##FieldSize(UNWRAP##VALUE_NAME(a##VNAME $u), kMapValueFieldNumber, valueDataType); 887 //% msgSize += ComputeDict##VALUE_NAME##FieldSize(UNWRAP##VALUE_NAME(a##VNAME _VAR$u), kMapValueFieldNumber, valueDataType);
878 //% result += GPBComputeRawVarint32SizeForInteger(msgSize) + msgSize; 888 //% result += GPBComputeRawVarint32SizeForInteger(msgSize) + msgSize;
879 //% }]; 889 //% }];
880 //% size_t tagSize = GPBComputeWireFormatTagSize(GPBFieldNumber(field), GPBData TypeMessage); 890 //% size_t tagSize = GPBComputeWireFormatTagSize(GPBFieldNumber(field), GPBData TypeMessage);
881 //% result += tagSize * count; 891 //% result += tagSize * count;
882 //% return result; 892 //% return result;
883 //%} 893 //%}
884 //% 894 //%
885 //%- (void)writeToCodedOutputStream:(GPBCodedOutputStream *)outputStream 895 //%- (void)writeToCodedOutputStream:(GPBCodedOutputStream *)outputStream
886 //% asField:(GPBFieldDescriptor *)field { 896 //% asField:(GPBFieldDescriptor *)field {
887 //% GPBDataType valueDataType = GPBGetFieldDataType(field); 897 //% GPBDataType valueDataType = GPBGetFieldDataType(field);
888 //% GPBDataType keyDataType = field.mapKeyDataType; 898 //% GPBDataType keyDataType = field.mapKeyDataType;
889 //% uint32_t tag = GPBWireFormatMakeTag(GPBFieldNumber(field), GPBWireFormatLen gthDelimited); 899 //% uint32_t tag = GPBWireFormatMakeTag(GPBFieldNumber(field), GPBWireFormatLen gthDelimited);
890 //% [_dictionary enumerateKeysAndObjectsUsingBlock:^(ENUM_TYPE##KHELPER(KEY_TYP E)##aKey, 900 //% [_dictionary enumerateKeysAndObjectsUsingBlock:^(ENUM_TYPE##KHELPER(KEY_TYP E)##aKey,
891 //% ENUM_TYPE##VHELPER(VALUE_T YPE)##a##VNAME$u, 901 //% ENUM_TYPE##VHELPER(VALUE_T YPE)##a##VNAME_VAR$u,
892 //% BOOL *stop) { 902 //% BOOL *stop) {
893 //% #pragma unused(stop) 903 //% #pragma unused(stop)
894 //% // Write the tag. 904 //% // Write the tag.
895 //% [outputStream writeInt32NoTag:tag]; 905 //% [outputStream writeInt32NoTag:tag];
896 //% // Write the size of the message. 906 //% // Write the size of the message.
897 //% size_t msgSize = ComputeDict##KEY_NAME##FieldSize(UNWRAP##KEY_NAME(aKey), kMapKeyFieldNumber, keyDataType); 907 //% size_t msgSize = ComputeDict##KEY_NAME##FieldSize(UNWRAP##KEY_NAME(aKey), kMapKeyFieldNumber, keyDataType);
898 //% msgSize += ComputeDict##VALUE_NAME##FieldSize(UNWRAP##VALUE_NAME(a##VNAME $u), kMapValueFieldNumber, valueDataType); 908 //% msgSize += ComputeDict##VALUE_NAME##FieldSize(UNWRAP##VALUE_NAME(a##VNAME _VAR$u), kMapValueFieldNumber, valueDataType);
899 //% [outputStream writeInt32NoTag:(int32_t)msgSize]; 909 //% [outputStream writeInt32NoTag:(int32_t)msgSize];
900 //% // Write the fields. 910 //% // Write the fields.
901 //% WriteDict##KEY_NAME##Field(outputStream, UNWRAP##KEY_NAME(aKey), kMapKeyF ieldNumber, keyDataType); 911 //% WriteDict##KEY_NAME##Field(outputStream, UNWRAP##KEY_NAME(aKey), kMapKeyF ieldNumber, keyDataType);
902 //% WriteDict##VALUE_NAME##Field(outputStream, UNWRAP##VALUE_NAME(a##VNAME$u) , kMapValueFieldNumber, valueDataType); 912 //% WriteDict##VALUE_NAME##Field(outputStream, UNWRAP##VALUE_NAME(a##VNAME_VA R$u), kMapValueFieldNumber, valueDataType);
903 //% }]; 913 //% }];
904 //%} 914 //%}
905 //% 915 //%
906 //%SERIAL_DATA_FOR_ENTRY_##VHELPER(KEY_NAME, VALUE_NAME)- (void)setGPBGenericVal ue:(GPBGenericValue *)value 916 //%SERIAL_DATA_FOR_ENTRY_##VHELPER(KEY_NAME, VALUE_NAME)- (void)setGPBGenericVal ue:(GPBGenericValue *)value
907 //% forGPBGenericValueKey:(GPBGenericValue *)key { 917 //% forGPBGenericValueKey:(GPBGenericValue *)key {
908 //% [_dictionary setObject:WRAPPED##VHELPER(value->##GPBVALUE_##VHELPER(VALUE_N AME)##) forKey:WRAPPED##KHELPER(key->value##KEY_NAME)]; 918 //% [_dictionary setObject:WRAPPED##VHELPER(value->##GPBVALUE_##VHELPER(VALUE_N AME)##) forKey:WRAPPED##KHELPER(key->value##KEY_NAME)];
909 //%} 919 //%}
910 //% 920 //%
911 //%- (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 921 //%- (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
912 //% [self enumerateKeysAnd##ACCESSOR_NAME##VNAME$u##sUsingBlock:^(KEY_TYPE KisP ##key, VALUE_TYPE VNAME, BOOL *stop) { 922 //% [self enumerateKeysAnd##ACCESSOR_NAME##VNAME##sUsingBlock:^(KEY_TYPE KisP## key, VALUE_TYPE VNAME_VAR, BOOL *stop) {
913 //% #pragma unused(stop) 923 //% #pragma unused(stop)
914 //% block(TEXT_FORMAT_OBJ##KEY_NAME(key), TEXT_FORMAT_OBJ##VALUE_NAME(VNAME )); 924 //% block(TEXT_FORMAT_OBJ##KEY_NAME(key), TEXT_FORMAT_OBJ##VALUE_NAME(VNAME _VAR));
915 //% }]; 925 //% }];
916 //%} 926 //%}
917 //%PDDM-DEFINE DICTIONARY_MUTABLE_CORE(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VAL UE_TYPE, KHELPER, VHELPER, VNAME, ACCESSOR_NAME) 927 //%PDDM-DEFINE DICTIONARY_MUTABLE_CORE(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VAL UE_TYPE, KHELPER, VHELPER, VNAME, VNAME_VAR, ACCESSOR_NAME)
928 //%DICTIONARY_MUTABLE_CORE2(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VALUE_TYPE, KH ELPER, VHELPER, VNAME, VNAME, VNAME_VAR, ACCESSOR_NAME)
929 //%PDDM-DEFINE DICTIONARY_MUTABLE_CORE2(KEY_NAME, KEY_TYPE, KisP, VALUE_NAME, VA LUE_TYPE, KHELPER, VHELPER, VNAME, VNAME_REMOVE, VNAME_VAR, ACCESSOR_NAME)
918 //%- (void)add##ACCESSOR_NAME##EntriesFromDictionary:(GPB##KEY_NAME##VALUE_NAME# #Dictionary *)otherDictionary { 930 //%- (void)add##ACCESSOR_NAME##EntriesFromDictionary:(GPB##KEY_NAME##VALUE_NAME# #Dictionary *)otherDictionary {
919 //% if (otherDictionary) { 931 //% if (otherDictionary) {
920 //% [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 932 //% [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
921 //% if (_autocreator) { 933 //% if (_autocreator) {
922 //% GPBAutocreatedDictionaryModified(_autocreator, self); 934 //% GPBAutocreatedDictionaryModified(_autocreator, self);
923 //% } 935 //% }
924 //% } 936 //% }
925 //%} 937 //%}
926 //% 938 //%
927 //%- (void)set##ACCESSOR_NAME##VNAME$u##:(VALUE_TYPE)VNAME forKey:(KEY_TYPE##Kis P$S##KisP)key { 939 //%- (void)set##ACCESSOR_NAME##VNAME##:(VALUE_TYPE)VNAME_VAR forKey:(KEY_TYPE##K isP$S##KisP)key {
928 //%DICTIONARY_VALIDATE_VALUE_##VHELPER(VNAME, )##DICTIONARY_VALIDATE_KEY_##KHELP ER(key, ) [_dictionary setObject:WRAPPED##VHELPER(VNAME) forKey:WRAPPED##KHELPE R(key)]; 940 //%DICTIONARY_VALIDATE_VALUE_##VHELPER(VNAME_VAR, )##DICTIONARY_VALIDATE_KEY_##K HELPER(key, ) [_dictionary setObject:WRAPPED##VHELPER(VNAME_VAR) forKey:WRAPPED ##KHELPER(key)];
929 //% if (_autocreator) { 941 //% if (_autocreator) {
930 //% GPBAutocreatedDictionaryModified(_autocreator, self); 942 //% GPBAutocreatedDictionaryModified(_autocreator, self);
931 //% } 943 //% }
932 //%} 944 //%}
933 //% 945 //%
934 //%- (void)remove##VNAME$u##ForKey:(KEY_TYPE##KisP$S##KisP)aKey { 946 //%- (void)remove##VNAME_REMOVE##ForKey:(KEY_TYPE##KisP$S##KisP)aKey {
935 //% [_dictionary removeObjectForKey:WRAPPED##KHELPER(aKey)]; 947 //% [_dictionary removeObjectForKey:WRAPPED##KHELPER(aKey)];
936 //%} 948 //%}
937 //% 949 //%
938 //%- (void)removeAll { 950 //%- (void)removeAll {
939 //% [_dictionary removeAllObjects]; 951 //% [_dictionary removeAllObjects];
940 //%} 952 //%}
941 953
942 // 954 //
943 // Custom Generation for Bool keys 955 // Custom Generation for Bool keys
944 // 956 //
945 957
946 //%PDDM-DEFINE DICTIONARY_BOOL_KEY_TO_POD_IMPL(VALUE_NAME, VALUE_TYPE) 958 //%PDDM-DEFINE DICTIONARY_BOOL_KEY_TO_POD_IMPL(VALUE_NAME, VALUE_TYPE)
947 //%DICTIONARY_BOOL_KEY_TO_VALUE_IMPL(VALUE_NAME, VALUE_TYPE, POD, value) 959 //%DICTIONARY_BOOL_KEY_TO_VALUE_IMPL(VALUE_NAME, VALUE_TYPE, POD, VALUE_NAME, va lue)
948 //%PDDM-DEFINE DICTIONARY_BOOL_KEY_TO_OBJECT_IMPL(VALUE_NAME, VALUE_TYPE) 960 //%PDDM-DEFINE DICTIONARY_BOOL_KEY_TO_OBJECT_IMPL(VALUE_NAME, VALUE_TYPE)
949 //%DICTIONARY_BOOL_KEY_TO_VALUE_IMPL(VALUE_NAME, VALUE_TYPE, OBJECT, object) 961 //%DICTIONARY_BOOL_KEY_TO_VALUE_IMPL(VALUE_NAME, VALUE_TYPE, OBJECT, Object, obj ect)
950 962
951 //%PDDM-DEFINE DICTIONARY_BOOL_KEY_TO_VALUE_IMPL(VALUE_NAME, VALUE_TYPE, HELPER, VNAME) 963 //%PDDM-DEFINE DICTIONARY_BOOL_KEY_TO_VALUE_IMPL(VALUE_NAME, VALUE_TYPE, HELPER, VNAME, VNAME_VAR)
952 //%#pragma mark - Bool -> VALUE_NAME 964 //%#pragma mark - Bool -> VALUE_NAME
953 //% 965 //%
954 //%@implementation GPBBool##VALUE_NAME##Dictionary { 966 //%@implementation GPBBool##VALUE_NAME##Dictionary {
955 //% @package 967 //% @package
956 //% VALUE_TYPE _values[2]; 968 //% VALUE_TYPE _values[2];
957 //%BOOL_DICT_HAS_STORAGE_##HELPER()} 969 //%BOOL_DICT_HAS_STORAGE_##HELPER()}
958 //% 970 //%
959 //%+ (instancetype)dictionary { 971 //%+ (instancetype)dictionary {
960 //% return [[[self alloc] initWith##VNAME$u##s:NULL forKeys:NULL count:0] autor elease]; 972 //% return [[[self alloc] initWith##VNAME##s:NULL forKeys:NULL count:0] autorel ease];
961 //%} 973 //%}
962 //% 974 //%
963 //%+ (instancetype)dictionaryWith##VNAME$u##:(VALUE_TYPE)VNAME 975 //%+ (instancetype)dictionaryWith##VNAME##:(VALUE_TYPE)VNAME_VAR
964 //% ##VNAME$S## forKey:(BOOL)key { 976 //% ##VNAME$S## forKey:(BOOL)key {
965 //% // Cast is needed so the compiler knows what class we are invoking initWith ##VNAME$u##s:forKeys:count: 977 //% // Cast is needed so the compiler knows what class we are invoking initWith ##VNAME##s:forKeys:count:
966 //% // on to get the type correct. 978 //% // on to get the type correct.
967 //% return [[(GPBBool##VALUE_NAME##Dictionary*)[self alloc] initWith##VNAME$u## s:&##VNAME 979 //% return [[(GPBBool##VALUE_NAME##Dictionary*)[self alloc] initWith##VNAME##s: &##VNAME_VAR
968 //% VALUE_NAME$S ##VNAME$S## forKeys: &key 980 //% VALUE_NAME$S ##VNAME$S## forKeys: &key
969 //% VALUE_NAME$S ##VNAME$S## count: 1] autorelease]; 981 //% VALUE_NAME$S ##VNAME$S## count: 1] autorelease];
970 //%} 982 //%}
971 //% 983 //%
972 //%+ (instancetype)dictionaryWith##VNAME$u##s:(const VALUE_TYPE [])##VNAME##s 984 //%+ (instancetype)dictionaryWith##VNAME##s:(const VALUE_TYPE [])##VNAME_VAR##s
973 //% ##VNAME$S## forKeys:(const BOOL [])keys 985 //% ##VNAME$S## forKeys:(const BOOL [])keys
974 //% ##VNAME$S## count:(NSUInteger)count { 986 //% ##VNAME$S## count:(NSUInteger)count {
975 //% // Cast is needed so the compiler knows what class we are invoking initWith ##VNAME$u##s:forKeys:count: 987 //% // Cast is needed so the compiler knows what class we are invoking initWith ##VNAME##s:forKeys:count:
976 //% // on to get the type correct. 988 //% // on to get the type correct.
977 //% return [[(GPBBool##VALUE_NAME##Dictionary*)[self alloc] initWith##VNAME$u## s:##VNAME##s 989 //% return [[(GPBBool##VALUE_NAME##Dictionary*)[self alloc] initWith##VNAME##s: ##VNAME_VAR##s
978 //% VALUE_NAME$S ##VNAME$S## forKeys: keys 990 //% VALUE_NAME$S ##VNAME$S## forKeys: keys
979 //% VALUE_NAME$S ##VNAME$S## count: count] autorelease]; 991 //% VALUE_NAME$S ##VNAME$S## count: count] autorelease];
980 //%} 992 //%}
981 //% 993 //%
982 //%+ (instancetype)dictionaryWithDictionary:(GPBBool##VALUE_NAME##Dictionary *)d ictionary { 994 //%+ (instancetype)dictionaryWithDictionary:(GPBBool##VALUE_NAME##Dictionary *)d ictionary {
983 //% // Cast is needed so the compiler knows what class we are invoking initWith Dictionary: 995 //% // Cast is needed so the compiler knows what class we are invoking initWith Dictionary:
984 //% // on to get the type correct. 996 //% // on to get the type correct.
985 //% return [[(GPBBool##VALUE_NAME##Dictionary*)[self alloc] initWithDictionary: dictionary] autorelease]; 997 //% return [[(GPBBool##VALUE_NAME##Dictionary*)[self alloc] initWithDictionary: dictionary] autorelease];
986 //%} 998 //%}
987 //% 999 //%
988 //%+ (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 1000 //%+ (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
989 //% return [[[self alloc] initWithCapacity:numItems] autorelease]; 1001 //% return [[[self alloc] initWithCapacity:numItems] autorelease];
990 //%} 1002 //%}
991 //% 1003 //%
992 //%- (instancetype)init { 1004 //%- (instancetype)init {
993 //% return [self initWith##VNAME$u##s:NULL forKeys:NULL count:0]; 1005 //% return [self initWith##VNAME##s:NULL forKeys:NULL count:0];
994 //%} 1006 //%}
995 //% 1007 //%
996 //%BOOL_DICT_INITS_##HELPER(VALUE_NAME, VALUE_TYPE) 1008 //%BOOL_DICT_INITS_##HELPER(VALUE_NAME, VALUE_TYPE)
997 //% 1009 //%
998 //%- (instancetype)initWithCapacity:(NSUInteger)numItems { 1010 //%- (instancetype)initWithCapacity:(NSUInteger)numItems {
999 //% #pragma unused(numItems) 1011 //% #pragma unused(numItems)
1000 //% return [self initWith##VNAME$u##s:NULL forKeys:NULL count:0]; 1012 //% return [self initWith##VNAME##s:NULL forKeys:NULL count:0];
1001 //%} 1013 //%}
1002 //% 1014 //%
1003 //%BOOL_DICT_DEALLOC##HELPER() 1015 //%BOOL_DICT_DEALLOC##HELPER()
1004 //% 1016 //%
1005 //%- (instancetype)copyWithZone:(NSZone *)zone { 1017 //%- (instancetype)copyWithZone:(NSZone *)zone {
1006 //% return [[GPBBool##VALUE_NAME##Dictionary allocWithZone:zone] initWithDictio nary:self]; 1018 //% return [[GPBBool##VALUE_NAME##Dictionary allocWithZone:zone] initWithDictio nary:self];
1007 //%} 1019 //%}
1008 //% 1020 //%
1009 //%- (BOOL)isEqual:(GPBBool##VALUE_NAME##Dictionary *)other { 1021 //%- (BOOL)isEqual:(id)other {
1010 //% if (self == other) { 1022 //% if (self == other) {
1011 //% return YES; 1023 //% return YES;
1012 //% } 1024 //% }
1013 //% if (![other isKindOfClass:[GPBBool##VALUE_NAME##Dictionary class]]) { 1025 //% if (![other isKindOfClass:[GPBBool##VALUE_NAME##Dictionary class]]) {
1014 //% return NO; 1026 //% return NO;
1015 //% } 1027 //% }
1016 //% if ((BOOL_DICT_W_HAS##HELPER(0, ) != BOOL_DICT_W_HAS##HELPER(0, other->)) | | 1028 //% GPBBool##VALUE_NAME##Dictionary *otherDictionary = other;
1017 //% (BOOL_DICT_W_HAS##HELPER(1, ) != BOOL_DICT_W_HAS##HELPER(1, other->))) { 1029 //% if ((BOOL_DICT_W_HAS##HELPER(0, ) != BOOL_DICT_W_HAS##HELPER(0, otherDictio nary->)) ||
1030 //% (BOOL_DICT_W_HAS##HELPER(1, ) != BOOL_DICT_W_HAS##HELPER(1, otherDictio nary->))) {
1018 //% return NO; 1031 //% return NO;
1019 //% } 1032 //% }
1020 //% if ((BOOL_DICT_W_HAS##HELPER(0, ) && (NEQ_##HELPER(_values[0], other->_valu es[0]))) || 1033 //% if ((BOOL_DICT_W_HAS##HELPER(0, ) && (NEQ_##HELPER(_values[0], otherDiction ary->_values[0]))) ||
1021 //% (BOOL_DICT_W_HAS##HELPER(1, ) && (NEQ_##HELPER(_values[1], other->_valu es[1])))) { 1034 //% (BOOL_DICT_W_HAS##HELPER(1, ) && (NEQ_##HELPER(_values[1], otherDiction ary->_values[1])))) {
1022 //% return NO; 1035 //% return NO;
1023 //% } 1036 //% }
1024 //% return YES; 1037 //% return YES;
1025 //%} 1038 //%}
1026 //% 1039 //%
1027 //%- (NSUInteger)hash { 1040 //%- (NSUInteger)hash {
1028 //% return (BOOL_DICT_W_HAS##HELPER(0, ) ? 1 : 0) + (BOOL_DICT_W_HAS##HELPER(1, ) ? 1 : 0); 1041 //% return (BOOL_DICT_W_HAS##HELPER(0, ) ? 1 : 0) + (BOOL_DICT_W_HAS##HELPER(1, ) ? 1 : 0);
1029 //%} 1042 //%}
1030 //% 1043 //%
1031 //%- (NSString *)description { 1044 //%- (NSString *)description {
1032 //% NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [ self class], self]; 1045 //% NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [ self class], self];
1033 //% if (BOOL_DICT_W_HAS##HELPER(0, )) { 1046 //% if (BOOL_DICT_W_HAS##HELPER(0, )) {
1034 //% [result appendFormat:@"NO: STR_FORMAT_##HELPER(VALUE_NAME)", _values[0]]; 1047 //% [result appendFormat:@"NO: STR_FORMAT_##HELPER(VALUE_NAME)", _values[0]];
1035 //% } 1048 //% }
1036 //% if (BOOL_DICT_W_HAS##HELPER(1, )) { 1049 //% if (BOOL_DICT_W_HAS##HELPER(1, )) {
1037 //% [result appendFormat:@"YES: STR_FORMAT_##HELPER(VALUE_NAME)", _values[1]] ; 1050 //% [result appendFormat:@"YES: STR_FORMAT_##HELPER(VALUE_NAME)", _values[1]] ;
1038 //% } 1051 //% }
1039 //% [result appendString:@" }"]; 1052 //% [result appendString:@" }"];
1040 //% return result; 1053 //% return result;
1041 //%} 1054 //%}
1042 //% 1055 //%
1043 //%- (NSUInteger)count { 1056 //%- (NSUInteger)count {
1044 //% return (BOOL_DICT_W_HAS##HELPER(0, ) ? 1 : 0) + (BOOL_DICT_W_HAS##HELPER(1, ) ? 1 : 0); 1057 //% return (BOOL_DICT_W_HAS##HELPER(0, ) ? 1 : 0) + (BOOL_DICT_W_HAS##HELPER(1, ) ? 1 : 0);
1045 //%} 1058 //%}
1046 //% 1059 //%
1047 //%BOOL_VALUE_FOR_KEY_##HELPER(VALUE_TYPE) 1060 //%BOOL_VALUE_FOR_KEY_##HELPER(VALUE_NAME, VALUE_TYPE)
1048 //% 1061 //%
1049 //%BOOL_SET_GPBVALUE_FOR_KEY_##HELPER(VALUE_NAME, VALUE_TYPE, VisP) 1062 //%BOOL_SET_GPBVALUE_FOR_KEY_##HELPER(VALUE_NAME, VALUE_TYPE, VisP)
1050 //% 1063 //%
1051 //%- (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 1064 //%- (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
1052 //% if (BOOL_DICT_HAS##HELPER(0, )) { 1065 //% if (BOOL_DICT_HAS##HELPER(0, )) {
1053 //% block(@"false", TEXT_FORMAT_OBJ##VALUE_NAME(_values[0])); 1066 //% block(@"false", TEXT_FORMAT_OBJ##VALUE_NAME(_values[0]));
1054 //% } 1067 //% }
1055 //% if (BOOL_DICT_W_HAS##HELPER(1, )) { 1068 //% if (BOOL_DICT_W_HAS##HELPER(1, )) {
1056 //% block(@"true", TEXT_FORMAT_OBJ##VALUE_NAME(_values[1])); 1069 //% block(@"true", TEXT_FORMAT_OBJ##VALUE_NAME(_values[1]));
1057 //% } 1070 //% }
1058 //%} 1071 //%}
1059 //% 1072 //%
1060 //%- (void)enumerateKeysAnd##VNAME$u##sUsingBlock: 1073 //%- (void)enumerateKeysAnd##VNAME##sUsingBlock:
1061 //% (void (^)(BOOL key, VALUE_TYPE VNAME, BOOL *stop))block { 1074 //% (void (^)(BOOL key, VALUE_TYPE VNAME_VAR, BOOL *stop))block {
1062 //% BOOL stop = NO; 1075 //% BOOL stop = NO;
1063 //% if (BOOL_DICT_HAS##HELPER(0, )) { 1076 //% if (BOOL_DICT_HAS##HELPER(0, )) {
1064 //% block(NO, _values[0], &stop); 1077 //% block(NO, _values[0], &stop);
1065 //% } 1078 //% }
1066 //% if (!stop && BOOL_DICT_W_HAS##HELPER(1, )) { 1079 //% if (!stop && BOOL_DICT_W_HAS##HELPER(1, )) {
1067 //% block(YES, _values[1], &stop); 1080 //% block(YES, _values[1], &stop);
1068 //% } 1081 //% }
1069 //%} 1082 //%}
1070 //% 1083 //%
1071 //%BOOL_EXTRA_METHODS_##HELPER(Bool, VALUE_NAME)- (size_t)computeSerializedSizeA sField:(GPBFieldDescriptor *)field { 1084 //%BOOL_EXTRA_METHODS_##HELPER(Bool, VALUE_NAME)- (size_t)computeSerializedSizeA sField:(GPBFieldDescriptor *)field {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1108 //% 1121 //%
1109 //%@end 1122 //%@end
1110 //% 1123 //%
1111 1124
1112 1125
1113 // 1126 //
1114 // Helpers for PODs 1127 // Helpers for PODs
1115 // 1128 //
1116 1129
1117 //%PDDM-DEFINE VALUE_FOR_KEY_POD(KEY_TYPE, VALUE_NAME, VALUE_TYPE, KHELPER) 1130 //%PDDM-DEFINE VALUE_FOR_KEY_POD(KEY_TYPE, VALUE_NAME, VALUE_TYPE, KHELPER)
1118 //%- (BOOL)valueForKey:(KEY_TYPE)key value:(VALUE_TYPE *)value { 1131 //%- (BOOL)get##VALUE_NAME##:(nullable VALUE_TYPE *)value forKey:(KEY_TYPE)key {
1119 //% NSNumber *wrapped = [_dictionary objectForKey:WRAPPED##KHELPER(key)]; 1132 //% NSNumber *wrapped = [_dictionary objectForKey:WRAPPED##KHELPER(key)];
1120 //% if (wrapped && value) { 1133 //% if (wrapped && value) {
1121 //% *value = UNWRAP##VALUE_NAME(wrapped); 1134 //% *value = UNWRAP##VALUE_NAME(wrapped);
1122 //% } 1135 //% }
1123 //% return (wrapped != NULL); 1136 //% return (wrapped != NULL);
1124 //%} 1137 //%}
1125 //%PDDM-DEFINE WRAPPEDPOD(VALUE) 1138 //%PDDM-DEFINE WRAPPEDPOD(VALUE)
1126 //%@(VALUE) 1139 //%@(VALUE)
1127 //%PDDM-DEFINE UNWRAPUInt32(VALUE) 1140 //%PDDM-DEFINE UNWRAPUInt32(VALUE)
1128 //%[VALUE unsignedIntValue] 1141 //%[VALUE unsignedIntValue]
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 //%value##VALUE_NAME 1211 //%value##VALUE_NAME
1199 //%PDDM-DEFINE DICTIONARY_VALIDATE_VALUE_POD(VALUE_NAME, EXTRA_INDENT) 1212 //%PDDM-DEFINE DICTIONARY_VALIDATE_VALUE_POD(VALUE_NAME, EXTRA_INDENT)
1200 // Empty 1213 // Empty
1201 //%PDDM-DEFINE DICTIONARY_VALIDATE_KEY_POD(KEY_NAME, EXTRA_INDENT) 1214 //%PDDM-DEFINE DICTIONARY_VALIDATE_KEY_POD(KEY_NAME, EXTRA_INDENT)
1202 // Empty 1215 // Empty
1203 1216
1204 //%PDDM-DEFINE BOOL_DICT_HAS_STORAGE_POD() 1217 //%PDDM-DEFINE BOOL_DICT_HAS_STORAGE_POD()
1205 //% BOOL _valueSet[2]; 1218 //% BOOL _valueSet[2];
1206 //% 1219 //%
1207 //%PDDM-DEFINE BOOL_DICT_INITS_POD(VALUE_NAME, VALUE_TYPE) 1220 //%PDDM-DEFINE BOOL_DICT_INITS_POD(VALUE_NAME, VALUE_TYPE)
1208 //%- (instancetype)initWithValues:(const VALUE_TYPE [])values 1221 //%- (instancetype)initWith##VALUE_NAME##s:(const VALUE_TYPE [])values
1209 //% forKeys:(const BOOL [])keys 1222 //% ##VALUE_NAME$S## forKeys:(const BOOL [])keys
1210 //% count:(NSUInteger)count { 1223 //% ##VALUE_NAME$S## count:(NSUInteger)count {
1211 //% self = [super init]; 1224 //% self = [super init];
1212 //% if (self) { 1225 //% if (self) {
1213 //% for (NSUInteger i = 0; i < count; ++i) { 1226 //% for (NSUInteger i = 0; i < count; ++i) {
1214 //% int idx = keys[i] ? 1 : 0; 1227 //% int idx = keys[i] ? 1 : 0;
1215 //% _values[idx] = values[i]; 1228 //% _values[idx] = values[i];
1216 //% _valueSet[idx] = YES; 1229 //% _valueSet[idx] = YES;
1217 //% } 1230 //% }
1218 //% } 1231 //% }
1219 //% return self; 1232 //% return self;
1220 //%} 1233 //%}
1221 //% 1234 //%
1222 //%- (instancetype)initWithDictionary:(GPBBool##VALUE_NAME##Dictionary *)diction ary { 1235 //%- (instancetype)initWithDictionary:(GPBBool##VALUE_NAME##Dictionary *)diction ary {
1223 //% self = [self initWithValues:NULL forKeys:NULL count:0]; 1236 //% self = [self initWith##VALUE_NAME##s:NULL forKeys:NULL count:0];
1224 //% if (self) { 1237 //% if (self) {
1225 //% if (dictionary) { 1238 //% if (dictionary) {
1226 //% for (int i = 0; i < 2; ++i) { 1239 //% for (int i = 0; i < 2; ++i) {
1227 //% if (dictionary->_valueSet[i]) { 1240 //% if (dictionary->_valueSet[i]) {
1228 //% _values[i] = dictionary->_values[i]; 1241 //% _values[i] = dictionary->_values[i];
1229 //% _valueSet[i] = YES; 1242 //% _valueSet[i] = YES;
1230 //% } 1243 //% }
1231 //% } 1244 //% }
1232 //% } 1245 //% }
1233 //% } 1246 //% }
1234 //% return self; 1247 //% return self;
1235 //%} 1248 //%}
1236 //%PDDM-DEFINE BOOL_DICT_DEALLOCPOD() 1249 //%PDDM-DEFINE BOOL_DICT_DEALLOCPOD()
1237 //%#if !defined(NS_BLOCK_ASSERTIONS) 1250 //%#if !defined(NS_BLOCK_ASSERTIONS)
1238 //%- (void)dealloc { 1251 //%- (void)dealloc {
1239 //% NSAssert(!_autocreator, 1252 //% NSAssert(!_autocreator,
1240 //% @"%@: Autocreator must be cleared before release, autocreator: %@" , 1253 //% @"%@: Autocreator must be cleared before release, autocreator: %@" ,
1241 //% [self class], _autocreator); 1254 //% [self class], _autocreator);
1242 //% [super dealloc]; 1255 //% [super dealloc];
1243 //%} 1256 //%}
1244 //%#endif // !defined(NS_BLOCK_ASSERTIONS) 1257 //%#endif // !defined(NS_BLOCK_ASSERTIONS)
1245 //%PDDM-DEFINE BOOL_DICT_W_HASPOD(IDX, REF) 1258 //%PDDM-DEFINE BOOL_DICT_W_HASPOD(IDX, REF)
1246 //%BOOL_DICT_HASPOD(IDX, REF) 1259 //%BOOL_DICT_HASPOD(IDX, REF)
1247 //%PDDM-DEFINE BOOL_DICT_HASPOD(IDX, REF) 1260 //%PDDM-DEFINE BOOL_DICT_HASPOD(IDX, REF)
1248 //%REF##_valueSet[IDX] 1261 //%REF##_valueSet[IDX]
1249 //%PDDM-DEFINE BOOL_VALUE_FOR_KEY_POD(VALUE_TYPE) 1262 //%PDDM-DEFINE BOOL_VALUE_FOR_KEY_POD(VALUE_NAME, VALUE_TYPE)
1250 //%- (BOOL)valueForKey:(BOOL)key value:(VALUE_TYPE *)value { 1263 //%- (BOOL)get##VALUE_NAME##:(VALUE_TYPE *)value forKey:(BOOL)key {
1251 //% int idx = (key ? 1 : 0); 1264 //% int idx = (key ? 1 : 0);
1252 //% if (_valueSet[idx]) { 1265 //% if (_valueSet[idx]) {
1253 //% if (value) { 1266 //% if (value) {
1254 //% *value = _values[idx]; 1267 //% *value = _values[idx];
1255 //% } 1268 //% }
1256 //% return YES; 1269 //% return YES;
1257 //% } 1270 //% }
1258 //% return NO; 1271 //% return NO;
1259 //%} 1272 //%}
1260 //%PDDM-DEFINE BOOL_SET_GPBVALUE_FOR_KEY_POD(VALUE_NAME, VALUE_TYPE, VisP) 1273 //%PDDM-DEFINE BOOL_SET_GPBVALUE_FOR_KEY_POD(VALUE_NAME, VALUE_TYPE, VisP)
(...skipping 11 matching lines...) Expand all
1272 //% _valueSet[i] = YES; 1285 //% _valueSet[i] = YES;
1273 //% _values[i] = otherDictionary->_values[i]; 1286 //% _values[i] = otherDictionary->_values[i];
1274 //% } 1287 //% }
1275 //% } 1288 //% }
1276 //% if (_autocreator) { 1289 //% if (_autocreator) {
1277 //% GPBAutocreatedDictionaryModified(_autocreator, self); 1290 //% GPBAutocreatedDictionaryModified(_autocreator, self);
1278 //% } 1291 //% }
1279 //% } 1292 //% }
1280 //%} 1293 //%}
1281 //% 1294 //%
1282 //%- (void)setValue:(VALUE_TYPE)value forKey:(BOOL)key { 1295 //%- (void)set##VALUE_NAME:(VALUE_TYPE)value forKey:(BOOL)key {
1283 //% int idx = (key ? 1 : 0); 1296 //% int idx = (key ? 1 : 0);
1284 //% _values[idx] = value; 1297 //% _values[idx] = value;
1285 //% _valueSet[idx] = YES; 1298 //% _valueSet[idx] = YES;
1286 //% if (_autocreator) { 1299 //% if (_autocreator) {
1287 //% GPBAutocreatedDictionaryModified(_autocreator, self); 1300 //% GPBAutocreatedDictionaryModified(_autocreator, self);
1288 //% } 1301 //% }
1289 //%} 1302 //%}
1290 //% 1303 //%
1291 //%- (void)removeValueForKey:(BOOL)aKey { 1304 //%- (void)remove##VALUE_NAME##ForKey:(BOOL)aKey {
1292 //% _valueSet[aKey ? 1 : 0] = NO; 1305 //% _valueSet[aKey ? 1 : 0] = NO;
1293 //%} 1306 //%}
1294 //% 1307 //%
1295 //%- (void)removeAll { 1308 //%- (void)removeAll {
1296 //% _valueSet[0] = NO; 1309 //% _valueSet[0] = NO;
1297 //% _valueSet[1] = NO; 1310 //% _valueSet[1] = NO;
1298 //%} 1311 //%}
1299 //%PDDM-DEFINE STR_FORMAT_POD(VALUE_NAME) 1312 //%PDDM-DEFINE STR_FORMAT_POD(VALUE_NAME)
1300 //%STR_FORMAT_##VALUE_NAME() 1313 //%STR_FORMAT_##VALUE_NAME()
1301 //%PDDM-DEFINE STR_FORMAT_UInt32() 1314 //%PDDM-DEFINE STR_FORMAT_UInt32()
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1442 //% @"%@: Autocreator must be cleared before release, autocreator: %@" , 1455 //% @"%@: Autocreator must be cleared before release, autocreator: %@" ,
1443 //% [self class], _autocreator); 1456 //% [self class], _autocreator);
1444 //% [_values[0] release]; 1457 //% [_values[0] release];
1445 //% [_values[1] release]; 1458 //% [_values[1] release];
1446 //% [super dealloc]; 1459 //% [super dealloc];
1447 //%} 1460 //%}
1448 //%PDDM-DEFINE BOOL_DICT_W_HASOBJECT(IDX, REF) 1461 //%PDDM-DEFINE BOOL_DICT_W_HASOBJECT(IDX, REF)
1449 //%(BOOL_DICT_HASOBJECT(IDX, REF)) 1462 //%(BOOL_DICT_HASOBJECT(IDX, REF))
1450 //%PDDM-DEFINE BOOL_DICT_HASOBJECT(IDX, REF) 1463 //%PDDM-DEFINE BOOL_DICT_HASOBJECT(IDX, REF)
1451 //%REF##_values[IDX] != nil 1464 //%REF##_values[IDX] != nil
1452 //%PDDM-DEFINE BOOL_VALUE_FOR_KEY_OBJECT(VALUE_TYPE) 1465 //%PDDM-DEFINE BOOL_VALUE_FOR_KEY_OBJECT(VALUE_NAME, VALUE_TYPE)
1453 //%- (VALUE_TYPE)objectForKey:(BOOL)key { 1466 //%- (VALUE_TYPE)objectForKey:(BOOL)key {
1454 //% return _values[key ? 1 : 0]; 1467 //% return _values[key ? 1 : 0];
1455 //%} 1468 //%}
1456 //%PDDM-DEFINE BOOL_SET_GPBVALUE_FOR_KEY_OBJECT(VALUE_NAME, VALUE_TYPE, VisP) 1469 //%PDDM-DEFINE BOOL_SET_GPBVALUE_FOR_KEY_OBJECT(VALUE_NAME, VALUE_TYPE, VisP)
1457 //%- (void)setGPBGenericValue:(GPBGenericValue *)value 1470 //%- (void)setGPBGenericValue:(GPBGenericValue *)value
1458 //% forGPBGenericValueKey:(GPBGenericValue *)key { 1471 //% forGPBGenericValueKey:(GPBGenericValue *)key {
1459 //% int idx = (key->valueBool ? 1 : 0); 1472 //% int idx = (key->valueBool ? 1 : 0);
1460 //% [_values[idx] release]; 1473 //% [_values[idx] release];
1461 //% _values[idx] = [value->valueString retain]; 1474 //% _values[idx] = [value->valueString retain];
1462 //%} 1475 //%}
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1509 // This block of code is generated, do not edit it directly. 1522 // This block of code is generated, do not edit it directly.
1510 1523
1511 #pragma mark - UInt32 -> UInt32 1524 #pragma mark - UInt32 -> UInt32
1512 1525
1513 @implementation GPBUInt32UInt32Dictionary { 1526 @implementation GPBUInt32UInt32Dictionary {
1514 @package 1527 @package
1515 NSMutableDictionary *_dictionary; 1528 NSMutableDictionary *_dictionary;
1516 } 1529 }
1517 1530
1518 + (instancetype)dictionary { 1531 + (instancetype)dictionary {
1519 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 1532 return [[[self alloc] initWithUInt32s:NULL forKeys:NULL count:0] autorelease];
1520 } 1533 }
1521 1534
1522 + (instancetype)dictionaryWithValue:(uint32_t)value 1535 + (instancetype)dictionaryWithUInt32:(uint32_t)value
1523 forKey:(uint32_t)key { 1536 forKey:(uint32_t)key {
1524 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 1537 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
1525 // on to get the type correct. 1538 // on to get the type correct.
1526 return [[(GPBUInt32UInt32Dictionary*)[self alloc] initWithValues:&value 1539 return [[(GPBUInt32UInt32Dictionary*)[self alloc] initWithUInt32s:&value
1527 forKeys:&key 1540 forKeys:&key
1528 count:1] autoreleas e]; 1541 count:1] autorelea se];
1529 } 1542 }
1530 1543
1531 + (instancetype)dictionaryWithValues:(const uint32_t [])values 1544 + (instancetype)dictionaryWithUInt32s:(const uint32_t [])values
1532 forKeys:(const uint32_t [])keys 1545 forKeys:(const uint32_t [])keys
1533 count:(NSUInteger)count { 1546 count:(NSUInteger)count {
1534 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 1547 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
1535 // on to get the type correct. 1548 // on to get the type correct.
1536 return [[(GPBUInt32UInt32Dictionary*)[self alloc] initWithValues:values 1549 return [[(GPBUInt32UInt32Dictionary*)[self alloc] initWithUInt32s:values
1537 forKeys:keys 1550 forKeys:keys
1538 count:count] autore lease]; 1551 count:count] autore lease];
1539 } 1552 }
1540 1553
1541 + (instancetype)dictionaryWithDictionary:(GPBUInt32UInt32Dictionary *)dictionary { 1554 + (instancetype)dictionaryWithDictionary:(GPBUInt32UInt32Dictionary *)dictionary {
1542 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 1555 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
1543 // on to get the type correct. 1556 // on to get the type correct.
1544 return [[(GPBUInt32UInt32Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease]; 1557 return [[(GPBUInt32UInt32Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease];
1545 } 1558 }
1546 1559
1547 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 1560 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
1548 return [[[self alloc] initWithCapacity:numItems] autorelease]; 1561 return [[[self alloc] initWithCapacity:numItems] autorelease];
1549 } 1562 }
1550 1563
1551 - (instancetype)init { 1564 - (instancetype)init {
1552 return [self initWithValues:NULL forKeys:NULL count:0]; 1565 return [self initWithUInt32s:NULL forKeys:NULL count:0];
1553 } 1566 }
1554 1567
1555 - (instancetype)initWithValues:(const uint32_t [])values 1568 - (instancetype)initWithUInt32s:(const uint32_t [])values
1556 forKeys:(const uint32_t [])keys 1569 forKeys:(const uint32_t [])keys
1557 count:(NSUInteger)count { 1570 count:(NSUInteger)count {
1558 self = [super init]; 1571 self = [super init];
1559 if (self) { 1572 if (self) {
1560 _dictionary = [[NSMutableDictionary alloc] init]; 1573 _dictionary = [[NSMutableDictionary alloc] init];
1561 if (count && values && keys) { 1574 if (count && values && keys) {
1562 for (NSUInteger i = 0; i < count; ++i) { 1575 for (NSUInteger i = 0; i < count; ++i) {
1563 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 1576 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
1564 } 1577 }
1565 } 1578 }
1566 } 1579 }
1567 return self; 1580 return self;
1568 } 1581 }
1569 1582
1570 - (instancetype)initWithDictionary:(GPBUInt32UInt32Dictionary *)dictionary { 1583 - (instancetype)initWithDictionary:(GPBUInt32UInt32Dictionary *)dictionary {
1571 self = [self initWithValues:NULL forKeys:NULL count:0]; 1584 self = [self initWithUInt32s:NULL forKeys:NULL count:0];
1572 if (self) { 1585 if (self) {
1573 if (dictionary) { 1586 if (dictionary) {
1574 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 1587 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
1575 } 1588 }
1576 } 1589 }
1577 return self; 1590 return self;
1578 } 1591 }
1579 1592
1580 - (instancetype)initWithCapacity:(NSUInteger)numItems { 1593 - (instancetype)initWithCapacity:(NSUInteger)numItems {
1581 #pragma unused(numItems) 1594 #pragma unused(numItems)
1582 return [self initWithValues:NULL forKeys:NULL count:0]; 1595 return [self initWithUInt32s:NULL forKeys:NULL count:0];
1583 } 1596 }
1584 1597
1585 - (void)dealloc { 1598 - (void)dealloc {
1586 NSAssert(!_autocreator, 1599 NSAssert(!_autocreator,
1587 @"%@: Autocreator must be cleared before release, autocreator: %@", 1600 @"%@: Autocreator must be cleared before release, autocreator: %@",
1588 [self class], _autocreator); 1601 [self class], _autocreator);
1589 [_dictionary release]; 1602 [_dictionary release];
1590 [super dealloc]; 1603 [super dealloc];
1591 } 1604 }
1592 1605
1593 - (instancetype)copyWithZone:(NSZone *)zone { 1606 - (instancetype)copyWithZone:(NSZone *)zone {
1594 return [[GPBUInt32UInt32Dictionary allocWithZone:zone] initWithDictionary:self ]; 1607 return [[GPBUInt32UInt32Dictionary allocWithZone:zone] initWithDictionary:self ];
1595 } 1608 }
1596 1609
1597 - (BOOL)isEqual:(GPBUInt32UInt32Dictionary *)other { 1610 - (BOOL)isEqual:(id)other {
1598 if (self == other) { 1611 if (self == other) {
1599 return YES; 1612 return YES;
1600 } 1613 }
1601 if (![other isKindOfClass:[GPBUInt32UInt32Dictionary class]]) { 1614 if (![other isKindOfClass:[GPBUInt32UInt32Dictionary class]]) {
1602 return NO; 1615 return NO;
1603 } 1616 }
1604 return [_dictionary isEqual:other->_dictionary]; 1617 GPBUInt32UInt32Dictionary *otherDictionary = other;
1618 return [_dictionary isEqual:otherDictionary->_dictionary];
1605 } 1619 }
1606 1620
1607 - (NSUInteger)hash { 1621 - (NSUInteger)hash {
1608 return _dictionary.count; 1622 return _dictionary.count;
1609 } 1623 }
1610 1624
1611 - (NSString *)description { 1625 - (NSString *)description {
1612 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 1626 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
1613 } 1627 }
1614 1628
1615 - (NSUInteger)count { 1629 - (NSUInteger)count {
1616 return _dictionary.count; 1630 return _dictionary.count;
1617 } 1631 }
1618 1632
1619 - (void)enumerateKeysAndValuesUsingBlock: 1633 - (void)enumerateKeysAndUInt32sUsingBlock:
1620 (void (^)(uint32_t key, uint32_t value, BOOL *stop))block { 1634 (void (^)(uint32_t key, uint32_t value, BOOL *stop))block {
1621 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 1635 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
1622 NSNumber *aValue, 1636 NSNumber *aValue,
1623 BOOL *stop) { 1637 BOOL *stop) {
1624 block([aKey unsignedIntValue], [aValue unsignedIntValue], stop); 1638 block([aKey unsignedIntValue], [aValue unsignedIntValue], stop);
1625 }]; 1639 }];
1626 } 1640 }
1627 1641
1628 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 1642 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
1629 NSUInteger count = _dictionary.count; 1643 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1667 WriteDictUInt32Field(outputStream, [aValue unsignedIntValue], kMapValueField Number, valueDataType); 1681 WriteDictUInt32Field(outputStream, [aValue unsignedIntValue], kMapValueField Number, valueDataType);
1668 }]; 1682 }];
1669 } 1683 }
1670 1684
1671 - (void)setGPBGenericValue:(GPBGenericValue *)value 1685 - (void)setGPBGenericValue:(GPBGenericValue *)value
1672 forGPBGenericValueKey:(GPBGenericValue *)key { 1686 forGPBGenericValueKey:(GPBGenericValue *)key {
1673 [_dictionary setObject:@(value->valueUInt32) forKey:@(key->valueUInt32)]; 1687 [_dictionary setObject:@(value->valueUInt32) forKey:@(key->valueUInt32)];
1674 } 1688 }
1675 1689
1676 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 1690 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
1677 [self enumerateKeysAndValuesUsingBlock:^(uint32_t key, uint32_t value, BOOL *s top) { 1691 [self enumerateKeysAndUInt32sUsingBlock:^(uint32_t key, uint32_t value, BOOL * stop) {
1678 #pragma unused(stop) 1692 #pragma unused(stop)
1679 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%u", value]); 1693 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%u", value]);
1680 }]; 1694 }];
1681 } 1695 }
1682 1696
1683 - (BOOL)valueForKey:(uint32_t)key value:(uint32_t *)value { 1697 - (BOOL)getUInt32:(nullable uint32_t *)value forKey:(uint32_t)key {
1684 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 1698 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
1685 if (wrapped && value) { 1699 if (wrapped && value) {
1686 *value = [wrapped unsignedIntValue]; 1700 *value = [wrapped unsignedIntValue];
1687 } 1701 }
1688 return (wrapped != NULL); 1702 return (wrapped != NULL);
1689 } 1703 }
1690 1704
1691 - (void)addEntriesFromDictionary:(GPBUInt32UInt32Dictionary *)otherDictionary { 1705 - (void)addEntriesFromDictionary:(GPBUInt32UInt32Dictionary *)otherDictionary {
1692 if (otherDictionary) { 1706 if (otherDictionary) {
1693 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 1707 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
1694 if (_autocreator) { 1708 if (_autocreator) {
1695 GPBAutocreatedDictionaryModified(_autocreator, self); 1709 GPBAutocreatedDictionaryModified(_autocreator, self);
1696 } 1710 }
1697 } 1711 }
1698 } 1712 }
1699 1713
1700 - (void)setValue:(uint32_t)value forKey:(uint32_t)key { 1714 - (void)setUInt32:(uint32_t)value forKey:(uint32_t)key {
1701 [_dictionary setObject:@(value) forKey:@(key)]; 1715 [_dictionary setObject:@(value) forKey:@(key)];
1702 if (_autocreator) { 1716 if (_autocreator) {
1703 GPBAutocreatedDictionaryModified(_autocreator, self); 1717 GPBAutocreatedDictionaryModified(_autocreator, self);
1704 } 1718 }
1705 } 1719 }
1706 1720
1707 - (void)removeValueForKey:(uint32_t)aKey { 1721 - (void)removeUInt32ForKey:(uint32_t)aKey {
1708 [_dictionary removeObjectForKey:@(aKey)]; 1722 [_dictionary removeObjectForKey:@(aKey)];
1709 } 1723 }
1710 1724
1711 - (void)removeAll { 1725 - (void)removeAll {
1712 [_dictionary removeAllObjects]; 1726 [_dictionary removeAllObjects];
1713 } 1727 }
1714 1728
1715 @end 1729 @end
1716 1730
1717 #pragma mark - UInt32 -> Int32 1731 #pragma mark - UInt32 -> Int32
1718 1732
1719 @implementation GPBUInt32Int32Dictionary { 1733 @implementation GPBUInt32Int32Dictionary {
1720 @package 1734 @package
1721 NSMutableDictionary *_dictionary; 1735 NSMutableDictionary *_dictionary;
1722 } 1736 }
1723 1737
1724 + (instancetype)dictionary { 1738 + (instancetype)dictionary {
1725 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 1739 return [[[self alloc] initWithInt32s:NULL forKeys:NULL count:0] autorelease];
1726 } 1740 }
1727 1741
1728 + (instancetype)dictionaryWithValue:(int32_t)value 1742 + (instancetype)dictionaryWithInt32:(int32_t)value
1729 forKey:(uint32_t)key { 1743 forKey:(uint32_t)key {
1730 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 1744 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
1731 // on to get the type correct. 1745 // on to get the type correct.
1732 return [[(GPBUInt32Int32Dictionary*)[self alloc] initWithValues:&value 1746 return [[(GPBUInt32Int32Dictionary*)[self alloc] initWithInt32s:&value
1733 forKeys:&key 1747 forKeys:&key
1734 count:1] autorelease ]; 1748 count:1] autorelease ];
1735 } 1749 }
1736 1750
1737 + (instancetype)dictionaryWithValues:(const int32_t [])values 1751 + (instancetype)dictionaryWithInt32s:(const int32_t [])values
1738 forKeys:(const uint32_t [])keys 1752 forKeys:(const uint32_t [])keys
1739 count:(NSUInteger)count { 1753 count:(NSUInteger)count {
1740 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 1754 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
1741 // on to get the type correct. 1755 // on to get the type correct.
1742 return [[(GPBUInt32Int32Dictionary*)[self alloc] initWithValues:values 1756 return [[(GPBUInt32Int32Dictionary*)[self alloc] initWithInt32s:values
1743 forKeys:keys 1757 forKeys:keys
1744 count:count] autorel ease]; 1758 count:count] autorel ease];
1745 } 1759 }
1746 1760
1747 + (instancetype)dictionaryWithDictionary:(GPBUInt32Int32Dictionary *)dictionary { 1761 + (instancetype)dictionaryWithDictionary:(GPBUInt32Int32Dictionary *)dictionary {
1748 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 1762 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
1749 // on to get the type correct. 1763 // on to get the type correct.
1750 return [[(GPBUInt32Int32Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 1764 return [[(GPBUInt32Int32Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
1751 } 1765 }
1752 1766
1753 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 1767 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
1754 return [[[self alloc] initWithCapacity:numItems] autorelease]; 1768 return [[[self alloc] initWithCapacity:numItems] autorelease];
1755 } 1769 }
1756 1770
1757 - (instancetype)init { 1771 - (instancetype)init {
1758 return [self initWithValues:NULL forKeys:NULL count:0]; 1772 return [self initWithInt32s:NULL forKeys:NULL count:0];
1759 } 1773 }
1760 1774
1761 - (instancetype)initWithValues:(const int32_t [])values 1775 - (instancetype)initWithInt32s:(const int32_t [])values
1762 forKeys:(const uint32_t [])keys 1776 forKeys:(const uint32_t [])keys
1763 count:(NSUInteger)count { 1777 count:(NSUInteger)count {
1764 self = [super init]; 1778 self = [super init];
1765 if (self) { 1779 if (self) {
1766 _dictionary = [[NSMutableDictionary alloc] init]; 1780 _dictionary = [[NSMutableDictionary alloc] init];
1767 if (count && values && keys) { 1781 if (count && values && keys) {
1768 for (NSUInteger i = 0; i < count; ++i) { 1782 for (NSUInteger i = 0; i < count; ++i) {
1769 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 1783 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
1770 } 1784 }
1771 } 1785 }
1772 } 1786 }
1773 return self; 1787 return self;
1774 } 1788 }
1775 1789
1776 - (instancetype)initWithDictionary:(GPBUInt32Int32Dictionary *)dictionary { 1790 - (instancetype)initWithDictionary:(GPBUInt32Int32Dictionary *)dictionary {
1777 self = [self initWithValues:NULL forKeys:NULL count:0]; 1791 self = [self initWithInt32s:NULL forKeys:NULL count:0];
1778 if (self) { 1792 if (self) {
1779 if (dictionary) { 1793 if (dictionary) {
1780 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 1794 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
1781 } 1795 }
1782 } 1796 }
1783 return self; 1797 return self;
1784 } 1798 }
1785 1799
1786 - (instancetype)initWithCapacity:(NSUInteger)numItems { 1800 - (instancetype)initWithCapacity:(NSUInteger)numItems {
1787 #pragma unused(numItems) 1801 #pragma unused(numItems)
1788 return [self initWithValues:NULL forKeys:NULL count:0]; 1802 return [self initWithInt32s:NULL forKeys:NULL count:0];
1789 } 1803 }
1790 1804
1791 - (void)dealloc { 1805 - (void)dealloc {
1792 NSAssert(!_autocreator, 1806 NSAssert(!_autocreator,
1793 @"%@: Autocreator must be cleared before release, autocreator: %@", 1807 @"%@: Autocreator must be cleared before release, autocreator: %@",
1794 [self class], _autocreator); 1808 [self class], _autocreator);
1795 [_dictionary release]; 1809 [_dictionary release];
1796 [super dealloc]; 1810 [super dealloc];
1797 } 1811 }
1798 1812
1799 - (instancetype)copyWithZone:(NSZone *)zone { 1813 - (instancetype)copyWithZone:(NSZone *)zone {
1800 return [[GPBUInt32Int32Dictionary allocWithZone:zone] initWithDictionary:self] ; 1814 return [[GPBUInt32Int32Dictionary allocWithZone:zone] initWithDictionary:self] ;
1801 } 1815 }
1802 1816
1803 - (BOOL)isEqual:(GPBUInt32Int32Dictionary *)other { 1817 - (BOOL)isEqual:(id)other {
1804 if (self == other) { 1818 if (self == other) {
1805 return YES; 1819 return YES;
1806 } 1820 }
1807 if (![other isKindOfClass:[GPBUInt32Int32Dictionary class]]) { 1821 if (![other isKindOfClass:[GPBUInt32Int32Dictionary class]]) {
1808 return NO; 1822 return NO;
1809 } 1823 }
1810 return [_dictionary isEqual:other->_dictionary]; 1824 GPBUInt32Int32Dictionary *otherDictionary = other;
1825 return [_dictionary isEqual:otherDictionary->_dictionary];
1811 } 1826 }
1812 1827
1813 - (NSUInteger)hash { 1828 - (NSUInteger)hash {
1814 return _dictionary.count; 1829 return _dictionary.count;
1815 } 1830 }
1816 1831
1817 - (NSString *)description { 1832 - (NSString *)description {
1818 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 1833 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
1819 } 1834 }
1820 1835
1821 - (NSUInteger)count { 1836 - (NSUInteger)count {
1822 return _dictionary.count; 1837 return _dictionary.count;
1823 } 1838 }
1824 1839
1825 - (void)enumerateKeysAndValuesUsingBlock: 1840 - (void)enumerateKeysAndInt32sUsingBlock:
1826 (void (^)(uint32_t key, int32_t value, BOOL *stop))block { 1841 (void (^)(uint32_t key, int32_t value, BOOL *stop))block {
1827 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 1842 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
1828 NSNumber *aValue, 1843 NSNumber *aValue,
1829 BOOL *stop) { 1844 BOOL *stop) {
1830 block([aKey unsignedIntValue], [aValue intValue], stop); 1845 block([aKey unsignedIntValue], [aValue intValue], stop);
1831 }]; 1846 }];
1832 } 1847 }
1833 1848
1834 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 1849 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
1835 NSUInteger count = _dictionary.count; 1850 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1873 WriteDictInt32Field(outputStream, [aValue intValue], kMapValueFieldNumber, v alueDataType); 1888 WriteDictInt32Field(outputStream, [aValue intValue], kMapValueFieldNumber, v alueDataType);
1874 }]; 1889 }];
1875 } 1890 }
1876 1891
1877 - (void)setGPBGenericValue:(GPBGenericValue *)value 1892 - (void)setGPBGenericValue:(GPBGenericValue *)value
1878 forGPBGenericValueKey:(GPBGenericValue *)key { 1893 forGPBGenericValueKey:(GPBGenericValue *)key {
1879 [_dictionary setObject:@(value->valueInt32) forKey:@(key->valueUInt32)]; 1894 [_dictionary setObject:@(value->valueInt32) forKey:@(key->valueUInt32)];
1880 } 1895 }
1881 1896
1882 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 1897 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
1883 [self enumerateKeysAndValuesUsingBlock:^(uint32_t key, int32_t value, BOOL *st op) { 1898 [self enumerateKeysAndInt32sUsingBlock:^(uint32_t key, int32_t value, BOOL *st op) {
1884 #pragma unused(stop) 1899 #pragma unused(stop)
1885 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%d", value]); 1900 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%d", value]);
1886 }]; 1901 }];
1887 } 1902 }
1888 1903
1889 - (BOOL)valueForKey:(uint32_t)key value:(int32_t *)value { 1904 - (BOOL)getInt32:(nullable int32_t *)value forKey:(uint32_t)key {
1890 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 1905 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
1891 if (wrapped && value) { 1906 if (wrapped && value) {
1892 *value = [wrapped intValue]; 1907 *value = [wrapped intValue];
1893 } 1908 }
1894 return (wrapped != NULL); 1909 return (wrapped != NULL);
1895 } 1910 }
1896 1911
1897 - (void)addEntriesFromDictionary:(GPBUInt32Int32Dictionary *)otherDictionary { 1912 - (void)addEntriesFromDictionary:(GPBUInt32Int32Dictionary *)otherDictionary {
1898 if (otherDictionary) { 1913 if (otherDictionary) {
1899 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 1914 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
1900 if (_autocreator) { 1915 if (_autocreator) {
1901 GPBAutocreatedDictionaryModified(_autocreator, self); 1916 GPBAutocreatedDictionaryModified(_autocreator, self);
1902 } 1917 }
1903 } 1918 }
1904 } 1919 }
1905 1920
1906 - (void)setValue:(int32_t)value forKey:(uint32_t)key { 1921 - (void)setInt32:(int32_t)value forKey:(uint32_t)key {
1907 [_dictionary setObject:@(value) forKey:@(key)]; 1922 [_dictionary setObject:@(value) forKey:@(key)];
1908 if (_autocreator) { 1923 if (_autocreator) {
1909 GPBAutocreatedDictionaryModified(_autocreator, self); 1924 GPBAutocreatedDictionaryModified(_autocreator, self);
1910 } 1925 }
1911 } 1926 }
1912 1927
1913 - (void)removeValueForKey:(uint32_t)aKey { 1928 - (void)removeInt32ForKey:(uint32_t)aKey {
1914 [_dictionary removeObjectForKey:@(aKey)]; 1929 [_dictionary removeObjectForKey:@(aKey)];
1915 } 1930 }
1916 1931
1917 - (void)removeAll { 1932 - (void)removeAll {
1918 [_dictionary removeAllObjects]; 1933 [_dictionary removeAllObjects];
1919 } 1934 }
1920 1935
1921 @end 1936 @end
1922 1937
1923 #pragma mark - UInt32 -> UInt64 1938 #pragma mark - UInt32 -> UInt64
1924 1939
1925 @implementation GPBUInt32UInt64Dictionary { 1940 @implementation GPBUInt32UInt64Dictionary {
1926 @package 1941 @package
1927 NSMutableDictionary *_dictionary; 1942 NSMutableDictionary *_dictionary;
1928 } 1943 }
1929 1944
1930 + (instancetype)dictionary { 1945 + (instancetype)dictionary {
1931 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 1946 return [[[self alloc] initWithUInt64s:NULL forKeys:NULL count:0] autorelease];
1932 } 1947 }
1933 1948
1934 + (instancetype)dictionaryWithValue:(uint64_t)value 1949 + (instancetype)dictionaryWithUInt64:(uint64_t)value
1935 forKey:(uint32_t)key { 1950 forKey:(uint32_t)key {
1936 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 1951 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
1937 // on to get the type correct. 1952 // on to get the type correct.
1938 return [[(GPBUInt32UInt64Dictionary*)[self alloc] initWithValues:&value 1953 return [[(GPBUInt32UInt64Dictionary*)[self alloc] initWithUInt64s:&value
1939 forKeys:&key 1954 forKeys:&key
1940 count:1] autoreleas e]; 1955 count:1] autorelea se];
1941 } 1956 }
1942 1957
1943 + (instancetype)dictionaryWithValues:(const uint64_t [])values 1958 + (instancetype)dictionaryWithUInt64s:(const uint64_t [])values
1944 forKeys:(const uint32_t [])keys 1959 forKeys:(const uint32_t [])keys
1945 count:(NSUInteger)count { 1960 count:(NSUInteger)count {
1946 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 1961 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
1947 // on to get the type correct. 1962 // on to get the type correct.
1948 return [[(GPBUInt32UInt64Dictionary*)[self alloc] initWithValues:values 1963 return [[(GPBUInt32UInt64Dictionary*)[self alloc] initWithUInt64s:values
1949 forKeys:keys 1964 forKeys:keys
1950 count:count] autore lease]; 1965 count:count] autore lease];
1951 } 1966 }
1952 1967
1953 + (instancetype)dictionaryWithDictionary:(GPBUInt32UInt64Dictionary *)dictionary { 1968 + (instancetype)dictionaryWithDictionary:(GPBUInt32UInt64Dictionary *)dictionary {
1954 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 1969 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
1955 // on to get the type correct. 1970 // on to get the type correct.
1956 return [[(GPBUInt32UInt64Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease]; 1971 return [[(GPBUInt32UInt64Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease];
1957 } 1972 }
1958 1973
1959 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 1974 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
1960 return [[[self alloc] initWithCapacity:numItems] autorelease]; 1975 return [[[self alloc] initWithCapacity:numItems] autorelease];
1961 } 1976 }
1962 1977
1963 - (instancetype)init { 1978 - (instancetype)init {
1964 return [self initWithValues:NULL forKeys:NULL count:0]; 1979 return [self initWithUInt64s:NULL forKeys:NULL count:0];
1965 } 1980 }
1966 1981
1967 - (instancetype)initWithValues:(const uint64_t [])values 1982 - (instancetype)initWithUInt64s:(const uint64_t [])values
1968 forKeys:(const uint32_t [])keys 1983 forKeys:(const uint32_t [])keys
1969 count:(NSUInteger)count { 1984 count:(NSUInteger)count {
1970 self = [super init]; 1985 self = [super init];
1971 if (self) { 1986 if (self) {
1972 _dictionary = [[NSMutableDictionary alloc] init]; 1987 _dictionary = [[NSMutableDictionary alloc] init];
1973 if (count && values && keys) { 1988 if (count && values && keys) {
1974 for (NSUInteger i = 0; i < count; ++i) { 1989 for (NSUInteger i = 0; i < count; ++i) {
1975 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 1990 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
1976 } 1991 }
1977 } 1992 }
1978 } 1993 }
1979 return self; 1994 return self;
1980 } 1995 }
1981 1996
1982 - (instancetype)initWithDictionary:(GPBUInt32UInt64Dictionary *)dictionary { 1997 - (instancetype)initWithDictionary:(GPBUInt32UInt64Dictionary *)dictionary {
1983 self = [self initWithValues:NULL forKeys:NULL count:0]; 1998 self = [self initWithUInt64s:NULL forKeys:NULL count:0];
1984 if (self) { 1999 if (self) {
1985 if (dictionary) { 2000 if (dictionary) {
1986 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 2001 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
1987 } 2002 }
1988 } 2003 }
1989 return self; 2004 return self;
1990 } 2005 }
1991 2006
1992 - (instancetype)initWithCapacity:(NSUInteger)numItems { 2007 - (instancetype)initWithCapacity:(NSUInteger)numItems {
1993 #pragma unused(numItems) 2008 #pragma unused(numItems)
1994 return [self initWithValues:NULL forKeys:NULL count:0]; 2009 return [self initWithUInt64s:NULL forKeys:NULL count:0];
1995 } 2010 }
1996 2011
1997 - (void)dealloc { 2012 - (void)dealloc {
1998 NSAssert(!_autocreator, 2013 NSAssert(!_autocreator,
1999 @"%@: Autocreator must be cleared before release, autocreator: %@", 2014 @"%@: Autocreator must be cleared before release, autocreator: %@",
2000 [self class], _autocreator); 2015 [self class], _autocreator);
2001 [_dictionary release]; 2016 [_dictionary release];
2002 [super dealloc]; 2017 [super dealloc];
2003 } 2018 }
2004 2019
2005 - (instancetype)copyWithZone:(NSZone *)zone { 2020 - (instancetype)copyWithZone:(NSZone *)zone {
2006 return [[GPBUInt32UInt64Dictionary allocWithZone:zone] initWithDictionary:self ]; 2021 return [[GPBUInt32UInt64Dictionary allocWithZone:zone] initWithDictionary:self ];
2007 } 2022 }
2008 2023
2009 - (BOOL)isEqual:(GPBUInt32UInt64Dictionary *)other { 2024 - (BOOL)isEqual:(id)other {
2010 if (self == other) { 2025 if (self == other) {
2011 return YES; 2026 return YES;
2012 } 2027 }
2013 if (![other isKindOfClass:[GPBUInt32UInt64Dictionary class]]) { 2028 if (![other isKindOfClass:[GPBUInt32UInt64Dictionary class]]) {
2014 return NO; 2029 return NO;
2015 } 2030 }
2016 return [_dictionary isEqual:other->_dictionary]; 2031 GPBUInt32UInt64Dictionary *otherDictionary = other;
2032 return [_dictionary isEqual:otherDictionary->_dictionary];
2017 } 2033 }
2018 2034
2019 - (NSUInteger)hash { 2035 - (NSUInteger)hash {
2020 return _dictionary.count; 2036 return _dictionary.count;
2021 } 2037 }
2022 2038
2023 - (NSString *)description { 2039 - (NSString *)description {
2024 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 2040 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
2025 } 2041 }
2026 2042
2027 - (NSUInteger)count { 2043 - (NSUInteger)count {
2028 return _dictionary.count; 2044 return _dictionary.count;
2029 } 2045 }
2030 2046
2031 - (void)enumerateKeysAndValuesUsingBlock: 2047 - (void)enumerateKeysAndUInt64sUsingBlock:
2032 (void (^)(uint32_t key, uint64_t value, BOOL *stop))block { 2048 (void (^)(uint32_t key, uint64_t value, BOOL *stop))block {
2033 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 2049 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
2034 NSNumber *aValue, 2050 NSNumber *aValue,
2035 BOOL *stop) { 2051 BOOL *stop) {
2036 block([aKey unsignedIntValue], [aValue unsignedLongLongValue], stop); 2052 block([aKey unsignedIntValue], [aValue unsignedLongLongValue], stop);
2037 }]; 2053 }];
2038 } 2054 }
2039 2055
2040 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 2056 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
2041 NSUInteger count = _dictionary.count; 2057 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2079 WriteDictUInt64Field(outputStream, [aValue unsignedLongLongValue], kMapValue FieldNumber, valueDataType); 2095 WriteDictUInt64Field(outputStream, [aValue unsignedLongLongValue], kMapValue FieldNumber, valueDataType);
2080 }]; 2096 }];
2081 } 2097 }
2082 2098
2083 - (void)setGPBGenericValue:(GPBGenericValue *)value 2099 - (void)setGPBGenericValue:(GPBGenericValue *)value
2084 forGPBGenericValueKey:(GPBGenericValue *)key { 2100 forGPBGenericValueKey:(GPBGenericValue *)key {
2085 [_dictionary setObject:@(value->valueUInt64) forKey:@(key->valueUInt32)]; 2101 [_dictionary setObject:@(value->valueUInt64) forKey:@(key->valueUInt32)];
2086 } 2102 }
2087 2103
2088 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 2104 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
2089 [self enumerateKeysAndValuesUsingBlock:^(uint32_t key, uint64_t value, BOOL *s top) { 2105 [self enumerateKeysAndUInt64sUsingBlock:^(uint32_t key, uint64_t value, BOOL * stop) {
2090 #pragma unused(stop) 2106 #pragma unused(stop)
2091 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%llu", value]); 2107 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%llu", value]);
2092 }]; 2108 }];
2093 } 2109 }
2094 2110
2095 - (BOOL)valueForKey:(uint32_t)key value:(uint64_t *)value { 2111 - (BOOL)getUInt64:(nullable uint64_t *)value forKey:(uint32_t)key {
2096 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 2112 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
2097 if (wrapped && value) { 2113 if (wrapped && value) {
2098 *value = [wrapped unsignedLongLongValue]; 2114 *value = [wrapped unsignedLongLongValue];
2099 } 2115 }
2100 return (wrapped != NULL); 2116 return (wrapped != NULL);
2101 } 2117 }
2102 2118
2103 - (void)addEntriesFromDictionary:(GPBUInt32UInt64Dictionary *)otherDictionary { 2119 - (void)addEntriesFromDictionary:(GPBUInt32UInt64Dictionary *)otherDictionary {
2104 if (otherDictionary) { 2120 if (otherDictionary) {
2105 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 2121 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
2106 if (_autocreator) { 2122 if (_autocreator) {
2107 GPBAutocreatedDictionaryModified(_autocreator, self); 2123 GPBAutocreatedDictionaryModified(_autocreator, self);
2108 } 2124 }
2109 } 2125 }
2110 } 2126 }
2111 2127
2112 - (void)setValue:(uint64_t)value forKey:(uint32_t)key { 2128 - (void)setUInt64:(uint64_t)value forKey:(uint32_t)key {
2113 [_dictionary setObject:@(value) forKey:@(key)]; 2129 [_dictionary setObject:@(value) forKey:@(key)];
2114 if (_autocreator) { 2130 if (_autocreator) {
2115 GPBAutocreatedDictionaryModified(_autocreator, self); 2131 GPBAutocreatedDictionaryModified(_autocreator, self);
2116 } 2132 }
2117 } 2133 }
2118 2134
2119 - (void)removeValueForKey:(uint32_t)aKey { 2135 - (void)removeUInt64ForKey:(uint32_t)aKey {
2120 [_dictionary removeObjectForKey:@(aKey)]; 2136 [_dictionary removeObjectForKey:@(aKey)];
2121 } 2137 }
2122 2138
2123 - (void)removeAll { 2139 - (void)removeAll {
2124 [_dictionary removeAllObjects]; 2140 [_dictionary removeAllObjects];
2125 } 2141 }
2126 2142
2127 @end 2143 @end
2128 2144
2129 #pragma mark - UInt32 -> Int64 2145 #pragma mark - UInt32 -> Int64
2130 2146
2131 @implementation GPBUInt32Int64Dictionary { 2147 @implementation GPBUInt32Int64Dictionary {
2132 @package 2148 @package
2133 NSMutableDictionary *_dictionary; 2149 NSMutableDictionary *_dictionary;
2134 } 2150 }
2135 2151
2136 + (instancetype)dictionary { 2152 + (instancetype)dictionary {
2137 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 2153 return [[[self alloc] initWithInt64s:NULL forKeys:NULL count:0] autorelease];
2138 } 2154 }
2139 2155
2140 + (instancetype)dictionaryWithValue:(int64_t)value 2156 + (instancetype)dictionaryWithInt64:(int64_t)value
2141 forKey:(uint32_t)key { 2157 forKey:(uint32_t)key {
2142 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 2158 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
2143 // on to get the type correct. 2159 // on to get the type correct.
2144 return [[(GPBUInt32Int64Dictionary*)[self alloc] initWithValues:&value 2160 return [[(GPBUInt32Int64Dictionary*)[self alloc] initWithInt64s:&value
2145 forKeys:&key 2161 forKeys:&key
2146 count:1] autorelease ]; 2162 count:1] autorelease ];
2147 } 2163 }
2148 2164
2149 + (instancetype)dictionaryWithValues:(const int64_t [])values 2165 + (instancetype)dictionaryWithInt64s:(const int64_t [])values
2150 forKeys:(const uint32_t [])keys 2166 forKeys:(const uint32_t [])keys
2151 count:(NSUInteger)count { 2167 count:(NSUInteger)count {
2152 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 2168 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
2153 // on to get the type correct. 2169 // on to get the type correct.
2154 return [[(GPBUInt32Int64Dictionary*)[self alloc] initWithValues:values 2170 return [[(GPBUInt32Int64Dictionary*)[self alloc] initWithInt64s:values
2155 forKeys:keys 2171 forKeys:keys
2156 count:count] autorel ease]; 2172 count:count] autorel ease];
2157 } 2173 }
2158 2174
2159 + (instancetype)dictionaryWithDictionary:(GPBUInt32Int64Dictionary *)dictionary { 2175 + (instancetype)dictionaryWithDictionary:(GPBUInt32Int64Dictionary *)dictionary {
2160 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 2176 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
2161 // on to get the type correct. 2177 // on to get the type correct.
2162 return [[(GPBUInt32Int64Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 2178 return [[(GPBUInt32Int64Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
2163 } 2179 }
2164 2180
2165 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 2181 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
2166 return [[[self alloc] initWithCapacity:numItems] autorelease]; 2182 return [[[self alloc] initWithCapacity:numItems] autorelease];
2167 } 2183 }
2168 2184
2169 - (instancetype)init { 2185 - (instancetype)init {
2170 return [self initWithValues:NULL forKeys:NULL count:0]; 2186 return [self initWithInt64s:NULL forKeys:NULL count:0];
2171 } 2187 }
2172 2188
2173 - (instancetype)initWithValues:(const int64_t [])values 2189 - (instancetype)initWithInt64s:(const int64_t [])values
2174 forKeys:(const uint32_t [])keys 2190 forKeys:(const uint32_t [])keys
2175 count:(NSUInteger)count { 2191 count:(NSUInteger)count {
2176 self = [super init]; 2192 self = [super init];
2177 if (self) { 2193 if (self) {
2178 _dictionary = [[NSMutableDictionary alloc] init]; 2194 _dictionary = [[NSMutableDictionary alloc] init];
2179 if (count && values && keys) { 2195 if (count && values && keys) {
2180 for (NSUInteger i = 0; i < count; ++i) { 2196 for (NSUInteger i = 0; i < count; ++i) {
2181 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 2197 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
2182 } 2198 }
2183 } 2199 }
2184 } 2200 }
2185 return self; 2201 return self;
2186 } 2202 }
2187 2203
2188 - (instancetype)initWithDictionary:(GPBUInt32Int64Dictionary *)dictionary { 2204 - (instancetype)initWithDictionary:(GPBUInt32Int64Dictionary *)dictionary {
2189 self = [self initWithValues:NULL forKeys:NULL count:0]; 2205 self = [self initWithInt64s:NULL forKeys:NULL count:0];
2190 if (self) { 2206 if (self) {
2191 if (dictionary) { 2207 if (dictionary) {
2192 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 2208 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
2193 } 2209 }
2194 } 2210 }
2195 return self; 2211 return self;
2196 } 2212 }
2197 2213
2198 - (instancetype)initWithCapacity:(NSUInteger)numItems { 2214 - (instancetype)initWithCapacity:(NSUInteger)numItems {
2199 #pragma unused(numItems) 2215 #pragma unused(numItems)
2200 return [self initWithValues:NULL forKeys:NULL count:0]; 2216 return [self initWithInt64s:NULL forKeys:NULL count:0];
2201 } 2217 }
2202 2218
2203 - (void)dealloc { 2219 - (void)dealloc {
2204 NSAssert(!_autocreator, 2220 NSAssert(!_autocreator,
2205 @"%@: Autocreator must be cleared before release, autocreator: %@", 2221 @"%@: Autocreator must be cleared before release, autocreator: %@",
2206 [self class], _autocreator); 2222 [self class], _autocreator);
2207 [_dictionary release]; 2223 [_dictionary release];
2208 [super dealloc]; 2224 [super dealloc];
2209 } 2225 }
2210 2226
2211 - (instancetype)copyWithZone:(NSZone *)zone { 2227 - (instancetype)copyWithZone:(NSZone *)zone {
2212 return [[GPBUInt32Int64Dictionary allocWithZone:zone] initWithDictionary:self] ; 2228 return [[GPBUInt32Int64Dictionary allocWithZone:zone] initWithDictionary:self] ;
2213 } 2229 }
2214 2230
2215 - (BOOL)isEqual:(GPBUInt32Int64Dictionary *)other { 2231 - (BOOL)isEqual:(id)other {
2216 if (self == other) { 2232 if (self == other) {
2217 return YES; 2233 return YES;
2218 } 2234 }
2219 if (![other isKindOfClass:[GPBUInt32Int64Dictionary class]]) { 2235 if (![other isKindOfClass:[GPBUInt32Int64Dictionary class]]) {
2220 return NO; 2236 return NO;
2221 } 2237 }
2222 return [_dictionary isEqual:other->_dictionary]; 2238 GPBUInt32Int64Dictionary *otherDictionary = other;
2239 return [_dictionary isEqual:otherDictionary->_dictionary];
2223 } 2240 }
2224 2241
2225 - (NSUInteger)hash { 2242 - (NSUInteger)hash {
2226 return _dictionary.count; 2243 return _dictionary.count;
2227 } 2244 }
2228 2245
2229 - (NSString *)description { 2246 - (NSString *)description {
2230 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 2247 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
2231 } 2248 }
2232 2249
2233 - (NSUInteger)count { 2250 - (NSUInteger)count {
2234 return _dictionary.count; 2251 return _dictionary.count;
2235 } 2252 }
2236 2253
2237 - (void)enumerateKeysAndValuesUsingBlock: 2254 - (void)enumerateKeysAndInt64sUsingBlock:
2238 (void (^)(uint32_t key, int64_t value, BOOL *stop))block { 2255 (void (^)(uint32_t key, int64_t value, BOOL *stop))block {
2239 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 2256 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
2240 NSNumber *aValue, 2257 NSNumber *aValue,
2241 BOOL *stop) { 2258 BOOL *stop) {
2242 block([aKey unsignedIntValue], [aValue longLongValue], stop); 2259 block([aKey unsignedIntValue], [aValue longLongValue], stop);
2243 }]; 2260 }];
2244 } 2261 }
2245 2262
2246 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 2263 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
2247 NSUInteger count = _dictionary.count; 2264 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2285 WriteDictInt64Field(outputStream, [aValue longLongValue], kMapValueFieldNumb er, valueDataType); 2302 WriteDictInt64Field(outputStream, [aValue longLongValue], kMapValueFieldNumb er, valueDataType);
2286 }]; 2303 }];
2287 } 2304 }
2288 2305
2289 - (void)setGPBGenericValue:(GPBGenericValue *)value 2306 - (void)setGPBGenericValue:(GPBGenericValue *)value
2290 forGPBGenericValueKey:(GPBGenericValue *)key { 2307 forGPBGenericValueKey:(GPBGenericValue *)key {
2291 [_dictionary setObject:@(value->valueInt64) forKey:@(key->valueUInt32)]; 2308 [_dictionary setObject:@(value->valueInt64) forKey:@(key->valueUInt32)];
2292 } 2309 }
2293 2310
2294 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 2311 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
2295 [self enumerateKeysAndValuesUsingBlock:^(uint32_t key, int64_t value, BOOL *st op) { 2312 [self enumerateKeysAndInt64sUsingBlock:^(uint32_t key, int64_t value, BOOL *st op) {
2296 #pragma unused(stop) 2313 #pragma unused(stop)
2297 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%lld", value]); 2314 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%lld", value]);
2298 }]; 2315 }];
2299 } 2316 }
2300 2317
2301 - (BOOL)valueForKey:(uint32_t)key value:(int64_t *)value { 2318 - (BOOL)getInt64:(nullable int64_t *)value forKey:(uint32_t)key {
2302 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 2319 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
2303 if (wrapped && value) { 2320 if (wrapped && value) {
2304 *value = [wrapped longLongValue]; 2321 *value = [wrapped longLongValue];
2305 } 2322 }
2306 return (wrapped != NULL); 2323 return (wrapped != NULL);
2307 } 2324 }
2308 2325
2309 - (void)addEntriesFromDictionary:(GPBUInt32Int64Dictionary *)otherDictionary { 2326 - (void)addEntriesFromDictionary:(GPBUInt32Int64Dictionary *)otherDictionary {
2310 if (otherDictionary) { 2327 if (otherDictionary) {
2311 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 2328 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
2312 if (_autocreator) { 2329 if (_autocreator) {
2313 GPBAutocreatedDictionaryModified(_autocreator, self); 2330 GPBAutocreatedDictionaryModified(_autocreator, self);
2314 } 2331 }
2315 } 2332 }
2316 } 2333 }
2317 2334
2318 - (void)setValue:(int64_t)value forKey:(uint32_t)key { 2335 - (void)setInt64:(int64_t)value forKey:(uint32_t)key {
2319 [_dictionary setObject:@(value) forKey:@(key)]; 2336 [_dictionary setObject:@(value) forKey:@(key)];
2320 if (_autocreator) { 2337 if (_autocreator) {
2321 GPBAutocreatedDictionaryModified(_autocreator, self); 2338 GPBAutocreatedDictionaryModified(_autocreator, self);
2322 } 2339 }
2323 } 2340 }
2324 2341
2325 - (void)removeValueForKey:(uint32_t)aKey { 2342 - (void)removeInt64ForKey:(uint32_t)aKey {
2326 [_dictionary removeObjectForKey:@(aKey)]; 2343 [_dictionary removeObjectForKey:@(aKey)];
2327 } 2344 }
2328 2345
2329 - (void)removeAll { 2346 - (void)removeAll {
2330 [_dictionary removeAllObjects]; 2347 [_dictionary removeAllObjects];
2331 } 2348 }
2332 2349
2333 @end 2350 @end
2334 2351
2335 #pragma mark - UInt32 -> Bool 2352 #pragma mark - UInt32 -> Bool
2336 2353
2337 @implementation GPBUInt32BoolDictionary { 2354 @implementation GPBUInt32BoolDictionary {
2338 @package 2355 @package
2339 NSMutableDictionary *_dictionary; 2356 NSMutableDictionary *_dictionary;
2340 } 2357 }
2341 2358
2342 + (instancetype)dictionary { 2359 + (instancetype)dictionary {
2343 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 2360 return [[[self alloc] initWithBools:NULL forKeys:NULL count:0] autorelease];
2344 } 2361 }
2345 2362
2346 + (instancetype)dictionaryWithValue:(BOOL)value 2363 + (instancetype)dictionaryWithBool:(BOOL)value
2347 forKey:(uint32_t)key { 2364 forKey:(uint32_t)key {
2348 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 2365 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
2349 // on to get the type correct. 2366 // on to get the type correct.
2350 return [[(GPBUInt32BoolDictionary*)[self alloc] initWithValues:&value 2367 return [[(GPBUInt32BoolDictionary*)[self alloc] initWithBools:&value
2351 forKeys:&key 2368 forKeys:&key
2352 count:1] autorelease] ; 2369 count:1] autorelease];
2353 } 2370 }
2354 2371
2355 + (instancetype)dictionaryWithValues:(const BOOL [])values 2372 + (instancetype)dictionaryWithBools:(const BOOL [])values
2356 forKeys:(const uint32_t [])keys 2373 forKeys:(const uint32_t [])keys
2357 count:(NSUInteger)count { 2374 count:(NSUInteger)count {
2358 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 2375 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
2359 // on to get the type correct. 2376 // on to get the type correct.
2360 return [[(GPBUInt32BoolDictionary*)[self alloc] initWithValues:values 2377 return [[(GPBUInt32BoolDictionary*)[self alloc] initWithBools:values
2361 forKeys:keys 2378 forKeys:keys
2362 count:count] autorele ase]; 2379 count:count] autorele ase];
2363 } 2380 }
2364 2381
2365 + (instancetype)dictionaryWithDictionary:(GPBUInt32BoolDictionary *)dictionary { 2382 + (instancetype)dictionaryWithDictionary:(GPBUInt32BoolDictionary *)dictionary {
2366 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 2383 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
2367 // on to get the type correct. 2384 // on to get the type correct.
2368 return [[(GPBUInt32BoolDictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 2385 return [[(GPBUInt32BoolDictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
2369 } 2386 }
2370 2387
2371 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 2388 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
2372 return [[[self alloc] initWithCapacity:numItems] autorelease]; 2389 return [[[self alloc] initWithCapacity:numItems] autorelease];
2373 } 2390 }
2374 2391
2375 - (instancetype)init { 2392 - (instancetype)init {
2376 return [self initWithValues:NULL forKeys:NULL count:0]; 2393 return [self initWithBools:NULL forKeys:NULL count:0];
2377 } 2394 }
2378 2395
2379 - (instancetype)initWithValues:(const BOOL [])values 2396 - (instancetype)initWithBools:(const BOOL [])values
2380 forKeys:(const uint32_t [])keys 2397 forKeys:(const uint32_t [])keys
2381 count:(NSUInteger)count { 2398 count:(NSUInteger)count {
2382 self = [super init]; 2399 self = [super init];
2383 if (self) { 2400 if (self) {
2384 _dictionary = [[NSMutableDictionary alloc] init]; 2401 _dictionary = [[NSMutableDictionary alloc] init];
2385 if (count && values && keys) { 2402 if (count && values && keys) {
2386 for (NSUInteger i = 0; i < count; ++i) { 2403 for (NSUInteger i = 0; i < count; ++i) {
2387 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 2404 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
2388 } 2405 }
2389 } 2406 }
2390 } 2407 }
2391 return self; 2408 return self;
2392 } 2409 }
2393 2410
2394 - (instancetype)initWithDictionary:(GPBUInt32BoolDictionary *)dictionary { 2411 - (instancetype)initWithDictionary:(GPBUInt32BoolDictionary *)dictionary {
2395 self = [self initWithValues:NULL forKeys:NULL count:0]; 2412 self = [self initWithBools:NULL forKeys:NULL count:0];
2396 if (self) { 2413 if (self) {
2397 if (dictionary) { 2414 if (dictionary) {
2398 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 2415 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
2399 } 2416 }
2400 } 2417 }
2401 return self; 2418 return self;
2402 } 2419 }
2403 2420
2404 - (instancetype)initWithCapacity:(NSUInteger)numItems { 2421 - (instancetype)initWithCapacity:(NSUInteger)numItems {
2405 #pragma unused(numItems) 2422 #pragma unused(numItems)
2406 return [self initWithValues:NULL forKeys:NULL count:0]; 2423 return [self initWithBools:NULL forKeys:NULL count:0];
2407 } 2424 }
2408 2425
2409 - (void)dealloc { 2426 - (void)dealloc {
2410 NSAssert(!_autocreator, 2427 NSAssert(!_autocreator,
2411 @"%@: Autocreator must be cleared before release, autocreator: %@", 2428 @"%@: Autocreator must be cleared before release, autocreator: %@",
2412 [self class], _autocreator); 2429 [self class], _autocreator);
2413 [_dictionary release]; 2430 [_dictionary release];
2414 [super dealloc]; 2431 [super dealloc];
2415 } 2432 }
2416 2433
2417 - (instancetype)copyWithZone:(NSZone *)zone { 2434 - (instancetype)copyWithZone:(NSZone *)zone {
2418 return [[GPBUInt32BoolDictionary allocWithZone:zone] initWithDictionary:self]; 2435 return [[GPBUInt32BoolDictionary allocWithZone:zone] initWithDictionary:self];
2419 } 2436 }
2420 2437
2421 - (BOOL)isEqual:(GPBUInt32BoolDictionary *)other { 2438 - (BOOL)isEqual:(id)other {
2422 if (self == other) { 2439 if (self == other) {
2423 return YES; 2440 return YES;
2424 } 2441 }
2425 if (![other isKindOfClass:[GPBUInt32BoolDictionary class]]) { 2442 if (![other isKindOfClass:[GPBUInt32BoolDictionary class]]) {
2426 return NO; 2443 return NO;
2427 } 2444 }
2428 return [_dictionary isEqual:other->_dictionary]; 2445 GPBUInt32BoolDictionary *otherDictionary = other;
2446 return [_dictionary isEqual:otherDictionary->_dictionary];
2429 } 2447 }
2430 2448
2431 - (NSUInteger)hash { 2449 - (NSUInteger)hash {
2432 return _dictionary.count; 2450 return _dictionary.count;
2433 } 2451 }
2434 2452
2435 - (NSString *)description { 2453 - (NSString *)description {
2436 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 2454 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
2437 } 2455 }
2438 2456
2439 - (NSUInteger)count { 2457 - (NSUInteger)count {
2440 return _dictionary.count; 2458 return _dictionary.count;
2441 } 2459 }
2442 2460
2443 - (void)enumerateKeysAndValuesUsingBlock: 2461 - (void)enumerateKeysAndBoolsUsingBlock:
2444 (void (^)(uint32_t key, BOOL value, BOOL *stop))block { 2462 (void (^)(uint32_t key, BOOL value, BOOL *stop))block {
2445 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 2463 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
2446 NSNumber *aValue, 2464 NSNumber *aValue,
2447 BOOL *stop) { 2465 BOOL *stop) {
2448 block([aKey unsignedIntValue], [aValue boolValue], stop); 2466 block([aKey unsignedIntValue], [aValue boolValue], stop);
2449 }]; 2467 }];
2450 } 2468 }
2451 2469
2452 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 2470 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
2453 NSUInteger count = _dictionary.count; 2471 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2491 WriteDictBoolField(outputStream, [aValue boolValue], kMapValueFieldNumber, v alueDataType); 2509 WriteDictBoolField(outputStream, [aValue boolValue], kMapValueFieldNumber, v alueDataType);
2492 }]; 2510 }];
2493 } 2511 }
2494 2512
2495 - (void)setGPBGenericValue:(GPBGenericValue *)value 2513 - (void)setGPBGenericValue:(GPBGenericValue *)value
2496 forGPBGenericValueKey:(GPBGenericValue *)key { 2514 forGPBGenericValueKey:(GPBGenericValue *)key {
2497 [_dictionary setObject:@(value->valueBool) forKey:@(key->valueUInt32)]; 2515 [_dictionary setObject:@(value->valueBool) forKey:@(key->valueUInt32)];
2498 } 2516 }
2499 2517
2500 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 2518 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
2501 [self enumerateKeysAndValuesUsingBlock:^(uint32_t key, BOOL value, BOOL *stop) { 2519 [self enumerateKeysAndBoolsUsingBlock:^(uint32_t key, BOOL value, BOOL *stop) {
2502 #pragma unused(stop) 2520 #pragma unused(stop)
2503 block([NSString stringWithFormat:@"%u", key], (value ? @"true" : @"false") ); 2521 block([NSString stringWithFormat:@"%u", key], (value ? @"true" : @"false") );
2504 }]; 2522 }];
2505 } 2523 }
2506 2524
2507 - (BOOL)valueForKey:(uint32_t)key value:(BOOL *)value { 2525 - (BOOL)getBool:(nullable BOOL *)value forKey:(uint32_t)key {
2508 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 2526 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
2509 if (wrapped && value) { 2527 if (wrapped && value) {
2510 *value = [wrapped boolValue]; 2528 *value = [wrapped boolValue];
2511 } 2529 }
2512 return (wrapped != NULL); 2530 return (wrapped != NULL);
2513 } 2531 }
2514 2532
2515 - (void)addEntriesFromDictionary:(GPBUInt32BoolDictionary *)otherDictionary { 2533 - (void)addEntriesFromDictionary:(GPBUInt32BoolDictionary *)otherDictionary {
2516 if (otherDictionary) { 2534 if (otherDictionary) {
2517 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 2535 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
2518 if (_autocreator) { 2536 if (_autocreator) {
2519 GPBAutocreatedDictionaryModified(_autocreator, self); 2537 GPBAutocreatedDictionaryModified(_autocreator, self);
2520 } 2538 }
2521 } 2539 }
2522 } 2540 }
2523 2541
2524 - (void)setValue:(BOOL)value forKey:(uint32_t)key { 2542 - (void)setBool:(BOOL)value forKey:(uint32_t)key {
2525 [_dictionary setObject:@(value) forKey:@(key)]; 2543 [_dictionary setObject:@(value) forKey:@(key)];
2526 if (_autocreator) { 2544 if (_autocreator) {
2527 GPBAutocreatedDictionaryModified(_autocreator, self); 2545 GPBAutocreatedDictionaryModified(_autocreator, self);
2528 } 2546 }
2529 } 2547 }
2530 2548
2531 - (void)removeValueForKey:(uint32_t)aKey { 2549 - (void)removeBoolForKey:(uint32_t)aKey {
2532 [_dictionary removeObjectForKey:@(aKey)]; 2550 [_dictionary removeObjectForKey:@(aKey)];
2533 } 2551 }
2534 2552
2535 - (void)removeAll { 2553 - (void)removeAll {
2536 [_dictionary removeAllObjects]; 2554 [_dictionary removeAllObjects];
2537 } 2555 }
2538 2556
2539 @end 2557 @end
2540 2558
2541 #pragma mark - UInt32 -> Float 2559 #pragma mark - UInt32 -> Float
2542 2560
2543 @implementation GPBUInt32FloatDictionary { 2561 @implementation GPBUInt32FloatDictionary {
2544 @package 2562 @package
2545 NSMutableDictionary *_dictionary; 2563 NSMutableDictionary *_dictionary;
2546 } 2564 }
2547 2565
2548 + (instancetype)dictionary { 2566 + (instancetype)dictionary {
2549 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 2567 return [[[self alloc] initWithFloats:NULL forKeys:NULL count:0] autorelease];
2550 } 2568 }
2551 2569
2552 + (instancetype)dictionaryWithValue:(float)value 2570 + (instancetype)dictionaryWithFloat:(float)value
2553 forKey:(uint32_t)key { 2571 forKey:(uint32_t)key {
2554 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 2572 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
2555 // on to get the type correct. 2573 // on to get the type correct.
2556 return [[(GPBUInt32FloatDictionary*)[self alloc] initWithValues:&value 2574 return [[(GPBUInt32FloatDictionary*)[self alloc] initWithFloats:&value
2557 forKeys:&key 2575 forKeys:&key
2558 count:1] autorelease ]; 2576 count:1] autorelease ];
2559 } 2577 }
2560 2578
2561 + (instancetype)dictionaryWithValues:(const float [])values 2579 + (instancetype)dictionaryWithFloats:(const float [])values
2562 forKeys:(const uint32_t [])keys 2580 forKeys:(const uint32_t [])keys
2563 count:(NSUInteger)count { 2581 count:(NSUInteger)count {
2564 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 2582 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
2565 // on to get the type correct. 2583 // on to get the type correct.
2566 return [[(GPBUInt32FloatDictionary*)[self alloc] initWithValues:values 2584 return [[(GPBUInt32FloatDictionary*)[self alloc] initWithFloats:values
2567 forKeys:keys 2585 forKeys:keys
2568 count:count] autorel ease]; 2586 count:count] autorel ease];
2569 } 2587 }
2570 2588
2571 + (instancetype)dictionaryWithDictionary:(GPBUInt32FloatDictionary *)dictionary { 2589 + (instancetype)dictionaryWithDictionary:(GPBUInt32FloatDictionary *)dictionary {
2572 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 2590 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
2573 // on to get the type correct. 2591 // on to get the type correct.
2574 return [[(GPBUInt32FloatDictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 2592 return [[(GPBUInt32FloatDictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
2575 } 2593 }
2576 2594
2577 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 2595 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
2578 return [[[self alloc] initWithCapacity:numItems] autorelease]; 2596 return [[[self alloc] initWithCapacity:numItems] autorelease];
2579 } 2597 }
2580 2598
2581 - (instancetype)init { 2599 - (instancetype)init {
2582 return [self initWithValues:NULL forKeys:NULL count:0]; 2600 return [self initWithFloats:NULL forKeys:NULL count:0];
2583 } 2601 }
2584 2602
2585 - (instancetype)initWithValues:(const float [])values 2603 - (instancetype)initWithFloats:(const float [])values
2586 forKeys:(const uint32_t [])keys 2604 forKeys:(const uint32_t [])keys
2587 count:(NSUInteger)count { 2605 count:(NSUInteger)count {
2588 self = [super init]; 2606 self = [super init];
2589 if (self) { 2607 if (self) {
2590 _dictionary = [[NSMutableDictionary alloc] init]; 2608 _dictionary = [[NSMutableDictionary alloc] init];
2591 if (count && values && keys) { 2609 if (count && values && keys) {
2592 for (NSUInteger i = 0; i < count; ++i) { 2610 for (NSUInteger i = 0; i < count; ++i) {
2593 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 2611 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
2594 } 2612 }
2595 } 2613 }
2596 } 2614 }
2597 return self; 2615 return self;
2598 } 2616 }
2599 2617
2600 - (instancetype)initWithDictionary:(GPBUInt32FloatDictionary *)dictionary { 2618 - (instancetype)initWithDictionary:(GPBUInt32FloatDictionary *)dictionary {
2601 self = [self initWithValues:NULL forKeys:NULL count:0]; 2619 self = [self initWithFloats:NULL forKeys:NULL count:0];
2602 if (self) { 2620 if (self) {
2603 if (dictionary) { 2621 if (dictionary) {
2604 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 2622 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
2605 } 2623 }
2606 } 2624 }
2607 return self; 2625 return self;
2608 } 2626 }
2609 2627
2610 - (instancetype)initWithCapacity:(NSUInteger)numItems { 2628 - (instancetype)initWithCapacity:(NSUInteger)numItems {
2611 #pragma unused(numItems) 2629 #pragma unused(numItems)
2612 return [self initWithValues:NULL forKeys:NULL count:0]; 2630 return [self initWithFloats:NULL forKeys:NULL count:0];
2613 } 2631 }
2614 2632
2615 - (void)dealloc { 2633 - (void)dealloc {
2616 NSAssert(!_autocreator, 2634 NSAssert(!_autocreator,
2617 @"%@: Autocreator must be cleared before release, autocreator: %@", 2635 @"%@: Autocreator must be cleared before release, autocreator: %@",
2618 [self class], _autocreator); 2636 [self class], _autocreator);
2619 [_dictionary release]; 2637 [_dictionary release];
2620 [super dealloc]; 2638 [super dealloc];
2621 } 2639 }
2622 2640
2623 - (instancetype)copyWithZone:(NSZone *)zone { 2641 - (instancetype)copyWithZone:(NSZone *)zone {
2624 return [[GPBUInt32FloatDictionary allocWithZone:zone] initWithDictionary:self] ; 2642 return [[GPBUInt32FloatDictionary allocWithZone:zone] initWithDictionary:self] ;
2625 } 2643 }
2626 2644
2627 - (BOOL)isEqual:(GPBUInt32FloatDictionary *)other { 2645 - (BOOL)isEqual:(id)other {
2628 if (self == other) { 2646 if (self == other) {
2629 return YES; 2647 return YES;
2630 } 2648 }
2631 if (![other isKindOfClass:[GPBUInt32FloatDictionary class]]) { 2649 if (![other isKindOfClass:[GPBUInt32FloatDictionary class]]) {
2632 return NO; 2650 return NO;
2633 } 2651 }
2634 return [_dictionary isEqual:other->_dictionary]; 2652 GPBUInt32FloatDictionary *otherDictionary = other;
2653 return [_dictionary isEqual:otherDictionary->_dictionary];
2635 } 2654 }
2636 2655
2637 - (NSUInteger)hash { 2656 - (NSUInteger)hash {
2638 return _dictionary.count; 2657 return _dictionary.count;
2639 } 2658 }
2640 2659
2641 - (NSString *)description { 2660 - (NSString *)description {
2642 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 2661 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
2643 } 2662 }
2644 2663
2645 - (NSUInteger)count { 2664 - (NSUInteger)count {
2646 return _dictionary.count; 2665 return _dictionary.count;
2647 } 2666 }
2648 2667
2649 - (void)enumerateKeysAndValuesUsingBlock: 2668 - (void)enumerateKeysAndFloatsUsingBlock:
2650 (void (^)(uint32_t key, float value, BOOL *stop))block { 2669 (void (^)(uint32_t key, float value, BOOL *stop))block {
2651 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 2670 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
2652 NSNumber *aValue, 2671 NSNumber *aValue,
2653 BOOL *stop) { 2672 BOOL *stop) {
2654 block([aKey unsignedIntValue], [aValue floatValue], stop); 2673 block([aKey unsignedIntValue], [aValue floatValue], stop);
2655 }]; 2674 }];
2656 } 2675 }
2657 2676
2658 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 2677 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
2659 NSUInteger count = _dictionary.count; 2678 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2697 WriteDictFloatField(outputStream, [aValue floatValue], kMapValueFieldNumber, valueDataType); 2716 WriteDictFloatField(outputStream, [aValue floatValue], kMapValueFieldNumber, valueDataType);
2698 }]; 2717 }];
2699 } 2718 }
2700 2719
2701 - (void)setGPBGenericValue:(GPBGenericValue *)value 2720 - (void)setGPBGenericValue:(GPBGenericValue *)value
2702 forGPBGenericValueKey:(GPBGenericValue *)key { 2721 forGPBGenericValueKey:(GPBGenericValue *)key {
2703 [_dictionary setObject:@(value->valueFloat) forKey:@(key->valueUInt32)]; 2722 [_dictionary setObject:@(value->valueFloat) forKey:@(key->valueUInt32)];
2704 } 2723 }
2705 2724
2706 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 2725 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
2707 [self enumerateKeysAndValuesUsingBlock:^(uint32_t key, float value, BOOL *stop ) { 2726 [self enumerateKeysAndFloatsUsingBlock:^(uint32_t key, float value, BOOL *stop ) {
2708 #pragma unused(stop) 2727 #pragma unused(stop)
2709 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%.*g", FLT_DIG, value]); 2728 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%.*g", FLT_DIG, value]);
2710 }]; 2729 }];
2711 } 2730 }
2712 2731
2713 - (BOOL)valueForKey:(uint32_t)key value:(float *)value { 2732 - (BOOL)getFloat:(nullable float *)value forKey:(uint32_t)key {
2714 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 2733 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
2715 if (wrapped && value) { 2734 if (wrapped && value) {
2716 *value = [wrapped floatValue]; 2735 *value = [wrapped floatValue];
2717 } 2736 }
2718 return (wrapped != NULL); 2737 return (wrapped != NULL);
2719 } 2738 }
2720 2739
2721 - (void)addEntriesFromDictionary:(GPBUInt32FloatDictionary *)otherDictionary { 2740 - (void)addEntriesFromDictionary:(GPBUInt32FloatDictionary *)otherDictionary {
2722 if (otherDictionary) { 2741 if (otherDictionary) {
2723 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 2742 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
2724 if (_autocreator) { 2743 if (_autocreator) {
2725 GPBAutocreatedDictionaryModified(_autocreator, self); 2744 GPBAutocreatedDictionaryModified(_autocreator, self);
2726 } 2745 }
2727 } 2746 }
2728 } 2747 }
2729 2748
2730 - (void)setValue:(float)value forKey:(uint32_t)key { 2749 - (void)setFloat:(float)value forKey:(uint32_t)key {
2731 [_dictionary setObject:@(value) forKey:@(key)]; 2750 [_dictionary setObject:@(value) forKey:@(key)];
2732 if (_autocreator) { 2751 if (_autocreator) {
2733 GPBAutocreatedDictionaryModified(_autocreator, self); 2752 GPBAutocreatedDictionaryModified(_autocreator, self);
2734 } 2753 }
2735 } 2754 }
2736 2755
2737 - (void)removeValueForKey:(uint32_t)aKey { 2756 - (void)removeFloatForKey:(uint32_t)aKey {
2738 [_dictionary removeObjectForKey:@(aKey)]; 2757 [_dictionary removeObjectForKey:@(aKey)];
2739 } 2758 }
2740 2759
2741 - (void)removeAll { 2760 - (void)removeAll {
2742 [_dictionary removeAllObjects]; 2761 [_dictionary removeAllObjects];
2743 } 2762 }
2744 2763
2745 @end 2764 @end
2746 2765
2747 #pragma mark - UInt32 -> Double 2766 #pragma mark - UInt32 -> Double
2748 2767
2749 @implementation GPBUInt32DoubleDictionary { 2768 @implementation GPBUInt32DoubleDictionary {
2750 @package 2769 @package
2751 NSMutableDictionary *_dictionary; 2770 NSMutableDictionary *_dictionary;
2752 } 2771 }
2753 2772
2754 + (instancetype)dictionary { 2773 + (instancetype)dictionary {
2755 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 2774 return [[[self alloc] initWithDoubles:NULL forKeys:NULL count:0] autorelease];
2756 } 2775 }
2757 2776
2758 + (instancetype)dictionaryWithValue:(double)value 2777 + (instancetype)dictionaryWithDouble:(double)value
2759 forKey:(uint32_t)key { 2778 forKey:(uint32_t)key {
2760 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 2779 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
2761 // on to get the type correct. 2780 // on to get the type correct.
2762 return [[(GPBUInt32DoubleDictionary*)[self alloc] initWithValues:&value 2781 return [[(GPBUInt32DoubleDictionary*)[self alloc] initWithDoubles:&value
2763 forKeys:&key 2782 forKeys:&key
2764 count:1] autoreleas e]; 2783 count:1] autorelea se];
2765 } 2784 }
2766 2785
2767 + (instancetype)dictionaryWithValues:(const double [])values 2786 + (instancetype)dictionaryWithDoubles:(const double [])values
2768 forKeys:(const uint32_t [])keys 2787 forKeys:(const uint32_t [])keys
2769 count:(NSUInteger)count { 2788 count:(NSUInteger)count {
2770 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 2789 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
2771 // on to get the type correct. 2790 // on to get the type correct.
2772 return [[(GPBUInt32DoubleDictionary*)[self alloc] initWithValues:values 2791 return [[(GPBUInt32DoubleDictionary*)[self alloc] initWithDoubles:values
2773 forKeys:keys 2792 forKeys:keys
2774 count:count] autore lease]; 2793 count:count] autore lease];
2775 } 2794 }
2776 2795
2777 + (instancetype)dictionaryWithDictionary:(GPBUInt32DoubleDictionary *)dictionary { 2796 + (instancetype)dictionaryWithDictionary:(GPBUInt32DoubleDictionary *)dictionary {
2778 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 2797 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
2779 // on to get the type correct. 2798 // on to get the type correct.
2780 return [[(GPBUInt32DoubleDictionary*)[self alloc] initWithDictionary:dictionar y] autorelease]; 2799 return [[(GPBUInt32DoubleDictionary*)[self alloc] initWithDictionary:dictionar y] autorelease];
2781 } 2800 }
2782 2801
2783 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 2802 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
2784 return [[[self alloc] initWithCapacity:numItems] autorelease]; 2803 return [[[self alloc] initWithCapacity:numItems] autorelease];
2785 } 2804 }
2786 2805
2787 - (instancetype)init { 2806 - (instancetype)init {
2788 return [self initWithValues:NULL forKeys:NULL count:0]; 2807 return [self initWithDoubles:NULL forKeys:NULL count:0];
2789 } 2808 }
2790 2809
2791 - (instancetype)initWithValues:(const double [])values 2810 - (instancetype)initWithDoubles:(const double [])values
2792 forKeys:(const uint32_t [])keys 2811 forKeys:(const uint32_t [])keys
2793 count:(NSUInteger)count { 2812 count:(NSUInteger)count {
2794 self = [super init]; 2813 self = [super init];
2795 if (self) { 2814 if (self) {
2796 _dictionary = [[NSMutableDictionary alloc] init]; 2815 _dictionary = [[NSMutableDictionary alloc] init];
2797 if (count && values && keys) { 2816 if (count && values && keys) {
2798 for (NSUInteger i = 0; i < count; ++i) { 2817 for (NSUInteger i = 0; i < count; ++i) {
2799 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 2818 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
2800 } 2819 }
2801 } 2820 }
2802 } 2821 }
2803 return self; 2822 return self;
2804 } 2823 }
2805 2824
2806 - (instancetype)initWithDictionary:(GPBUInt32DoubleDictionary *)dictionary { 2825 - (instancetype)initWithDictionary:(GPBUInt32DoubleDictionary *)dictionary {
2807 self = [self initWithValues:NULL forKeys:NULL count:0]; 2826 self = [self initWithDoubles:NULL forKeys:NULL count:0];
2808 if (self) { 2827 if (self) {
2809 if (dictionary) { 2828 if (dictionary) {
2810 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 2829 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
2811 } 2830 }
2812 } 2831 }
2813 return self; 2832 return self;
2814 } 2833 }
2815 2834
2816 - (instancetype)initWithCapacity:(NSUInteger)numItems { 2835 - (instancetype)initWithCapacity:(NSUInteger)numItems {
2817 #pragma unused(numItems) 2836 #pragma unused(numItems)
2818 return [self initWithValues:NULL forKeys:NULL count:0]; 2837 return [self initWithDoubles:NULL forKeys:NULL count:0];
2819 } 2838 }
2820 2839
2821 - (void)dealloc { 2840 - (void)dealloc {
2822 NSAssert(!_autocreator, 2841 NSAssert(!_autocreator,
2823 @"%@: Autocreator must be cleared before release, autocreator: %@", 2842 @"%@: Autocreator must be cleared before release, autocreator: %@",
2824 [self class], _autocreator); 2843 [self class], _autocreator);
2825 [_dictionary release]; 2844 [_dictionary release];
2826 [super dealloc]; 2845 [super dealloc];
2827 } 2846 }
2828 2847
2829 - (instancetype)copyWithZone:(NSZone *)zone { 2848 - (instancetype)copyWithZone:(NSZone *)zone {
2830 return [[GPBUInt32DoubleDictionary allocWithZone:zone] initWithDictionary:self ]; 2849 return [[GPBUInt32DoubleDictionary allocWithZone:zone] initWithDictionary:self ];
2831 } 2850 }
2832 2851
2833 - (BOOL)isEqual:(GPBUInt32DoubleDictionary *)other { 2852 - (BOOL)isEqual:(id)other {
2834 if (self == other) { 2853 if (self == other) {
2835 return YES; 2854 return YES;
2836 } 2855 }
2837 if (![other isKindOfClass:[GPBUInt32DoubleDictionary class]]) { 2856 if (![other isKindOfClass:[GPBUInt32DoubleDictionary class]]) {
2838 return NO; 2857 return NO;
2839 } 2858 }
2840 return [_dictionary isEqual:other->_dictionary]; 2859 GPBUInt32DoubleDictionary *otherDictionary = other;
2860 return [_dictionary isEqual:otherDictionary->_dictionary];
2841 } 2861 }
2842 2862
2843 - (NSUInteger)hash { 2863 - (NSUInteger)hash {
2844 return _dictionary.count; 2864 return _dictionary.count;
2845 } 2865 }
2846 2866
2847 - (NSString *)description { 2867 - (NSString *)description {
2848 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 2868 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
2849 } 2869 }
2850 2870
2851 - (NSUInteger)count { 2871 - (NSUInteger)count {
2852 return _dictionary.count; 2872 return _dictionary.count;
2853 } 2873 }
2854 2874
2855 - (void)enumerateKeysAndValuesUsingBlock: 2875 - (void)enumerateKeysAndDoublesUsingBlock:
2856 (void (^)(uint32_t key, double value, BOOL *stop))block { 2876 (void (^)(uint32_t key, double value, BOOL *stop))block {
2857 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 2877 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
2858 NSNumber *aValue, 2878 NSNumber *aValue,
2859 BOOL *stop) { 2879 BOOL *stop) {
2860 block([aKey unsignedIntValue], [aValue doubleValue], stop); 2880 block([aKey unsignedIntValue], [aValue doubleValue], stop);
2861 }]; 2881 }];
2862 } 2882 }
2863 2883
2864 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 2884 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
2865 NSUInteger count = _dictionary.count; 2885 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2903 WriteDictDoubleField(outputStream, [aValue doubleValue], kMapValueFieldNumbe r, valueDataType); 2923 WriteDictDoubleField(outputStream, [aValue doubleValue], kMapValueFieldNumbe r, valueDataType);
2904 }]; 2924 }];
2905 } 2925 }
2906 2926
2907 - (void)setGPBGenericValue:(GPBGenericValue *)value 2927 - (void)setGPBGenericValue:(GPBGenericValue *)value
2908 forGPBGenericValueKey:(GPBGenericValue *)key { 2928 forGPBGenericValueKey:(GPBGenericValue *)key {
2909 [_dictionary setObject:@(value->valueDouble) forKey:@(key->valueUInt32)]; 2929 [_dictionary setObject:@(value->valueDouble) forKey:@(key->valueUInt32)];
2910 } 2930 }
2911 2931
2912 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 2932 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
2913 [self enumerateKeysAndValuesUsingBlock:^(uint32_t key, double value, BOOL *sto p) { 2933 [self enumerateKeysAndDoublesUsingBlock:^(uint32_t key, double value, BOOL *st op) {
2914 #pragma unused(stop) 2934 #pragma unused(stop)
2915 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%.*lg", DBL_DIG, value]); 2935 block([NSString stringWithFormat:@"%u", key], [NSString stringWithFormat:@ "%.*lg", DBL_DIG, value]);
2916 }]; 2936 }];
2917 } 2937 }
2918 2938
2919 - (BOOL)valueForKey:(uint32_t)key value:(double *)value { 2939 - (BOOL)getDouble:(nullable double *)value forKey:(uint32_t)key {
2920 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 2940 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
2921 if (wrapped && value) { 2941 if (wrapped && value) {
2922 *value = [wrapped doubleValue]; 2942 *value = [wrapped doubleValue];
2923 } 2943 }
2924 return (wrapped != NULL); 2944 return (wrapped != NULL);
2925 } 2945 }
2926 2946
2927 - (void)addEntriesFromDictionary:(GPBUInt32DoubleDictionary *)otherDictionary { 2947 - (void)addEntriesFromDictionary:(GPBUInt32DoubleDictionary *)otherDictionary {
2928 if (otherDictionary) { 2948 if (otherDictionary) {
2929 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 2949 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
2930 if (_autocreator) { 2950 if (_autocreator) {
2931 GPBAutocreatedDictionaryModified(_autocreator, self); 2951 GPBAutocreatedDictionaryModified(_autocreator, self);
2932 } 2952 }
2933 } 2953 }
2934 } 2954 }
2935 2955
2936 - (void)setValue:(double)value forKey:(uint32_t)key { 2956 - (void)setDouble:(double)value forKey:(uint32_t)key {
2937 [_dictionary setObject:@(value) forKey:@(key)]; 2957 [_dictionary setObject:@(value) forKey:@(key)];
2938 if (_autocreator) { 2958 if (_autocreator) {
2939 GPBAutocreatedDictionaryModified(_autocreator, self); 2959 GPBAutocreatedDictionaryModified(_autocreator, self);
2940 } 2960 }
2941 } 2961 }
2942 2962
2943 - (void)removeValueForKey:(uint32_t)aKey { 2963 - (void)removeDoubleForKey:(uint32_t)aKey {
2944 [_dictionary removeObjectForKey:@(aKey)]; 2964 [_dictionary removeObjectForKey:@(aKey)];
2945 } 2965 }
2946 2966
2947 - (void)removeAll { 2967 - (void)removeAll {
2948 [_dictionary removeAllObjects]; 2968 [_dictionary removeAllObjects];
2949 } 2969 }
2950 2970
2951 @end 2971 @end
2952 2972
2953 #pragma mark - UInt32 -> Enum 2973 #pragma mark - UInt32 -> Enum
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
3057 @"%@: Autocreator must be cleared before release, autocreator: %@", 3077 @"%@: Autocreator must be cleared before release, autocreator: %@",
3058 [self class], _autocreator); 3078 [self class], _autocreator);
3059 [_dictionary release]; 3079 [_dictionary release];
3060 [super dealloc]; 3080 [super dealloc];
3061 } 3081 }
3062 3082
3063 - (instancetype)copyWithZone:(NSZone *)zone { 3083 - (instancetype)copyWithZone:(NSZone *)zone {
3064 return [[GPBUInt32EnumDictionary allocWithZone:zone] initWithDictionary:self]; 3084 return [[GPBUInt32EnumDictionary allocWithZone:zone] initWithDictionary:self];
3065 } 3085 }
3066 3086
3067 - (BOOL)isEqual:(GPBUInt32EnumDictionary *)other { 3087 - (BOOL)isEqual:(id)other {
3068 if (self == other) { 3088 if (self == other) {
3069 return YES; 3089 return YES;
3070 } 3090 }
3071 if (![other isKindOfClass:[GPBUInt32EnumDictionary class]]) { 3091 if (![other isKindOfClass:[GPBUInt32EnumDictionary class]]) {
3072 return NO; 3092 return NO;
3073 } 3093 }
3074 return [_dictionary isEqual:other->_dictionary]; 3094 GPBUInt32EnumDictionary *otherDictionary = other;
3095 return [_dictionary isEqual:otherDictionary->_dictionary];
3075 } 3096 }
3076 3097
3077 - (NSUInteger)hash { 3098 - (NSUInteger)hash {
3078 return _dictionary.count; 3099 return _dictionary.count;
3079 } 3100 }
3080 3101
3081 - (NSString *)description { 3102 - (NSString *)description {
3082 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 3103 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
3083 } 3104 }
3084 3105
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
3155 [_dictionary setObject:@(value->valueEnum) forKey:@(key->valueUInt32)]; 3176 [_dictionary setObject:@(value->valueEnum) forKey:@(key->valueUInt32)];
3156 } 3177 }
3157 3178
3158 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 3179 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
3159 [self enumerateKeysAndRawValuesUsingBlock:^(uint32_t key, int32_t value, BOOL *stop) { 3180 [self enumerateKeysAndRawValuesUsingBlock:^(uint32_t key, int32_t value, BOOL *stop) {
3160 #pragma unused(stop) 3181 #pragma unused(stop)
3161 block([NSString stringWithFormat:@"%u", key], @(value)); 3182 block([NSString stringWithFormat:@"%u", key], @(value));
3162 }]; 3183 }];
3163 } 3184 }
3164 3185
3165 - (BOOL)valueForKey:(uint32_t)key value:(int32_t *)value { 3186 - (BOOL)getEnum:(int32_t *)value forKey:(uint32_t)key {
3166 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 3187 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
3167 if (wrapped && value) { 3188 if (wrapped && value) {
3168 int32_t result = [wrapped intValue]; 3189 int32_t result = [wrapped intValue];
3169 if (!_validationFunc(result)) { 3190 if (!_validationFunc(result)) {
3170 result = kGPBUnrecognizedEnumeratorValue; 3191 result = kGPBUnrecognizedEnumeratorValue;
3171 } 3192 }
3172 *value = result; 3193 *value = result;
3173 } 3194 }
3174 return (wrapped != NULL); 3195 return (wrapped != NULL);
3175 } 3196 }
3176 3197
3177 - (BOOL)valueForKey:(uint32_t)key rawValue:(int32_t *)rawValue { 3198 - (BOOL)getRawValue:(int32_t *)rawValue forKey:(uint32_t)key {
3178 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 3199 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
3179 if (wrapped && rawValue) { 3200 if (wrapped && rawValue) {
3180 *rawValue = [wrapped intValue]; 3201 *rawValue = [wrapped intValue];
3181 } 3202 }
3182 return (wrapped != NULL); 3203 return (wrapped != NULL);
3183 } 3204 }
3184 3205
3185 - (void)enumerateKeysAndValuesUsingBlock: 3206 - (void)enumerateKeysAndEnumsUsingBlock:
3186 (void (^)(uint32_t key, int32_t value, BOOL *stop))block { 3207 (void (^)(uint32_t key, int32_t value, BOOL *stop))block {
3187 GPBEnumValidationFunc func = _validationFunc; 3208 GPBEnumValidationFunc func = _validationFunc;
3188 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 3209 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
3189 NSNumber *aValue, 3210 NSNumber *aValue,
3190 BOOL *stop) { 3211 BOOL *stop) {
3191 int32_t unwrapped = [aValue intValue]; 3212 int32_t unwrapped = [aValue intValue];
3192 if (!func(unwrapped)) { 3213 if (!func(unwrapped)) {
3193 unwrapped = kGPBUnrecognizedEnumeratorValue; 3214 unwrapped = kGPBUnrecognizedEnumeratorValue;
3194 } 3215 }
3195 block([aKey unsignedIntValue], unwrapped, stop); 3216 block([aKey unsignedIntValue], unwrapped, stop);
3196 }]; 3217 }];
3197 } 3218 }
3198 3219
3199 - (void)addRawEntriesFromDictionary:(GPBUInt32EnumDictionary *)otherDictionary { 3220 - (void)addRawEntriesFromDictionary:(GPBUInt32EnumDictionary *)otherDictionary {
3200 if (otherDictionary) { 3221 if (otherDictionary) {
3201 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 3222 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
3202 if (_autocreator) { 3223 if (_autocreator) {
3203 GPBAutocreatedDictionaryModified(_autocreator, self); 3224 GPBAutocreatedDictionaryModified(_autocreator, self);
3204 } 3225 }
3205 } 3226 }
3206 } 3227 }
3207 3228
3208 - (void)setRawValue:(int32_t)value forKey:(uint32_t)key { 3229 - (void)setRawValue:(int32_t)value forKey:(uint32_t)key {
3209 [_dictionary setObject:@(value) forKey:@(key)]; 3230 [_dictionary setObject:@(value) forKey:@(key)];
3210 if (_autocreator) { 3231 if (_autocreator) {
3211 GPBAutocreatedDictionaryModified(_autocreator, self); 3232 GPBAutocreatedDictionaryModified(_autocreator, self);
3212 } 3233 }
3213 } 3234 }
3214 3235
3215 - (void)removeValueForKey:(uint32_t)aKey { 3236 - (void)removeEnumForKey:(uint32_t)aKey {
3216 [_dictionary removeObjectForKey:@(aKey)]; 3237 [_dictionary removeObjectForKey:@(aKey)];
3217 } 3238 }
3218 3239
3219 - (void)removeAll { 3240 - (void)removeAll {
3220 [_dictionary removeAllObjects]; 3241 [_dictionary removeAllObjects];
3221 } 3242 }
3222 3243
3223 - (void)setValue:(int32_t)value forKey:(uint32_t)key { 3244 - (void)setEnum:(int32_t)value forKey:(uint32_t)key {
3224 if (!_validationFunc(value)) { 3245 if (!_validationFunc(value)) {
3225 [NSException raise:NSInvalidArgumentException 3246 [NSException raise:NSInvalidArgumentException
3226 format:@"GPBUInt32EnumDictionary: Attempt to set an unknown enum value (%d)", 3247 format:@"GPBUInt32EnumDictionary: Attempt to set an unknown enum value (%d)",
3227 value]; 3248 value];
3228 } 3249 }
3229 3250
3230 [_dictionary setObject:@(value) forKey:@(key)]; 3251 [_dictionary setObject:@(value) forKey:@(key)];
3231 if (_autocreator) { 3252 if (_autocreator) {
3232 GPBAutocreatedDictionaryModified(_autocreator, self); 3253 GPBAutocreatedDictionaryModified(_autocreator, self);
3233 } 3254 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
3318 @"%@: Autocreator must be cleared before release, autocreator: %@", 3339 @"%@: Autocreator must be cleared before release, autocreator: %@",
3319 [self class], _autocreator); 3340 [self class], _autocreator);
3320 [_dictionary release]; 3341 [_dictionary release];
3321 [super dealloc]; 3342 [super dealloc];
3322 } 3343 }
3323 3344
3324 - (instancetype)copyWithZone:(NSZone *)zone { 3345 - (instancetype)copyWithZone:(NSZone *)zone {
3325 return [[GPBUInt32ObjectDictionary allocWithZone:zone] initWithDictionary:self ]; 3346 return [[GPBUInt32ObjectDictionary allocWithZone:zone] initWithDictionary:self ];
3326 } 3347 }
3327 3348
3328 - (BOOL)isEqual:(GPBUInt32ObjectDictionary *)other { 3349 - (BOOL)isEqual:(id)other {
3329 if (self == other) { 3350 if (self == other) {
3330 return YES; 3351 return YES;
3331 } 3352 }
3332 if (![other isKindOfClass:[GPBUInt32ObjectDictionary class]]) { 3353 if (![other isKindOfClass:[GPBUInt32ObjectDictionary class]]) {
3333 return NO; 3354 return NO;
3334 } 3355 }
3335 return [_dictionary isEqual:other->_dictionary]; 3356 GPBUInt32ObjectDictionary *otherDictionary = other;
3357 return [_dictionary isEqual:otherDictionary->_dictionary];
3336 } 3358 }
3337 3359
3338 - (NSUInteger)hash { 3360 - (NSUInteger)hash {
3339 return _dictionary.count; 3361 return _dictionary.count;
3340 } 3362 }
3341 3363
3342 - (NSString *)description { 3364 - (NSString *)description {
3343 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 3365 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
3344 } 3366 }
3345 3367
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
3473 // This block of code is generated, do not edit it directly. 3495 // This block of code is generated, do not edit it directly.
3474 3496
3475 #pragma mark - Int32 -> UInt32 3497 #pragma mark - Int32 -> UInt32
3476 3498
3477 @implementation GPBInt32UInt32Dictionary { 3499 @implementation GPBInt32UInt32Dictionary {
3478 @package 3500 @package
3479 NSMutableDictionary *_dictionary; 3501 NSMutableDictionary *_dictionary;
3480 } 3502 }
3481 3503
3482 + (instancetype)dictionary { 3504 + (instancetype)dictionary {
3483 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 3505 return [[[self alloc] initWithUInt32s:NULL forKeys:NULL count:0] autorelease];
3484 } 3506 }
3485 3507
3486 + (instancetype)dictionaryWithValue:(uint32_t)value 3508 + (instancetype)dictionaryWithUInt32:(uint32_t)value
3487 forKey:(int32_t)key { 3509 forKey:(int32_t)key {
3488 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 3510 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
3489 // on to get the type correct. 3511 // on to get the type correct.
3490 return [[(GPBInt32UInt32Dictionary*)[self alloc] initWithValues:&value 3512 return [[(GPBInt32UInt32Dictionary*)[self alloc] initWithUInt32s:&value
3491 forKeys:&key 3513 forKeys:&key
3492 count:1] autorelease ]; 3514 count:1] autoreleas e];
3493 } 3515 }
3494 3516
3495 + (instancetype)dictionaryWithValues:(const uint32_t [])values 3517 + (instancetype)dictionaryWithUInt32s:(const uint32_t [])values
3496 forKeys:(const int32_t [])keys 3518 forKeys:(const int32_t [])keys
3497 count:(NSUInteger)count { 3519 count:(NSUInteger)count {
3498 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 3520 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
3499 // on to get the type correct. 3521 // on to get the type correct.
3500 return [[(GPBInt32UInt32Dictionary*)[self alloc] initWithValues:values 3522 return [[(GPBInt32UInt32Dictionary*)[self alloc] initWithUInt32s:values
3501 forKeys:keys 3523 forKeys:keys
3502 count:count] autorel ease]; 3524 count:count] autorel ease];
3503 } 3525 }
3504 3526
3505 + (instancetype)dictionaryWithDictionary:(GPBInt32UInt32Dictionary *)dictionary { 3527 + (instancetype)dictionaryWithDictionary:(GPBInt32UInt32Dictionary *)dictionary {
3506 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 3528 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
3507 // on to get the type correct. 3529 // on to get the type correct.
3508 return [[(GPBInt32UInt32Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 3530 return [[(GPBInt32UInt32Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
3509 } 3531 }
3510 3532
3511 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 3533 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
3512 return [[[self alloc] initWithCapacity:numItems] autorelease]; 3534 return [[[self alloc] initWithCapacity:numItems] autorelease];
3513 } 3535 }
3514 3536
3515 - (instancetype)init { 3537 - (instancetype)init {
3516 return [self initWithValues:NULL forKeys:NULL count:0]; 3538 return [self initWithUInt32s:NULL forKeys:NULL count:0];
3517 } 3539 }
3518 3540
3519 - (instancetype)initWithValues:(const uint32_t [])values 3541 - (instancetype)initWithUInt32s:(const uint32_t [])values
3520 forKeys:(const int32_t [])keys 3542 forKeys:(const int32_t [])keys
3521 count:(NSUInteger)count { 3543 count:(NSUInteger)count {
3522 self = [super init]; 3544 self = [super init];
3523 if (self) { 3545 if (self) {
3524 _dictionary = [[NSMutableDictionary alloc] init]; 3546 _dictionary = [[NSMutableDictionary alloc] init];
3525 if (count && values && keys) { 3547 if (count && values && keys) {
3526 for (NSUInteger i = 0; i < count; ++i) { 3548 for (NSUInteger i = 0; i < count; ++i) {
3527 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 3549 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
3528 } 3550 }
3529 } 3551 }
3530 } 3552 }
3531 return self; 3553 return self;
3532 } 3554 }
3533 3555
3534 - (instancetype)initWithDictionary:(GPBInt32UInt32Dictionary *)dictionary { 3556 - (instancetype)initWithDictionary:(GPBInt32UInt32Dictionary *)dictionary {
3535 self = [self initWithValues:NULL forKeys:NULL count:0]; 3557 self = [self initWithUInt32s:NULL forKeys:NULL count:0];
3536 if (self) { 3558 if (self) {
3537 if (dictionary) { 3559 if (dictionary) {
3538 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 3560 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
3539 } 3561 }
3540 } 3562 }
3541 return self; 3563 return self;
3542 } 3564 }
3543 3565
3544 - (instancetype)initWithCapacity:(NSUInteger)numItems { 3566 - (instancetype)initWithCapacity:(NSUInteger)numItems {
3545 #pragma unused(numItems) 3567 #pragma unused(numItems)
3546 return [self initWithValues:NULL forKeys:NULL count:0]; 3568 return [self initWithUInt32s:NULL forKeys:NULL count:0];
3547 } 3569 }
3548 3570
3549 - (void)dealloc { 3571 - (void)dealloc {
3550 NSAssert(!_autocreator, 3572 NSAssert(!_autocreator,
3551 @"%@: Autocreator must be cleared before release, autocreator: %@", 3573 @"%@: Autocreator must be cleared before release, autocreator: %@",
3552 [self class], _autocreator); 3574 [self class], _autocreator);
3553 [_dictionary release]; 3575 [_dictionary release];
3554 [super dealloc]; 3576 [super dealloc];
3555 } 3577 }
3556 3578
3557 - (instancetype)copyWithZone:(NSZone *)zone { 3579 - (instancetype)copyWithZone:(NSZone *)zone {
3558 return [[GPBInt32UInt32Dictionary allocWithZone:zone] initWithDictionary:self] ; 3580 return [[GPBInt32UInt32Dictionary allocWithZone:zone] initWithDictionary:self] ;
3559 } 3581 }
3560 3582
3561 - (BOOL)isEqual:(GPBInt32UInt32Dictionary *)other { 3583 - (BOOL)isEqual:(id)other {
3562 if (self == other) { 3584 if (self == other) {
3563 return YES; 3585 return YES;
3564 } 3586 }
3565 if (![other isKindOfClass:[GPBInt32UInt32Dictionary class]]) { 3587 if (![other isKindOfClass:[GPBInt32UInt32Dictionary class]]) {
3566 return NO; 3588 return NO;
3567 } 3589 }
3568 return [_dictionary isEqual:other->_dictionary]; 3590 GPBInt32UInt32Dictionary *otherDictionary = other;
3591 return [_dictionary isEqual:otherDictionary->_dictionary];
3569 } 3592 }
3570 3593
3571 - (NSUInteger)hash { 3594 - (NSUInteger)hash {
3572 return _dictionary.count; 3595 return _dictionary.count;
3573 } 3596 }
3574 3597
3575 - (NSString *)description { 3598 - (NSString *)description {
3576 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 3599 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
3577 } 3600 }
3578 3601
3579 - (NSUInteger)count { 3602 - (NSUInteger)count {
3580 return _dictionary.count; 3603 return _dictionary.count;
3581 } 3604 }
3582 3605
3583 - (void)enumerateKeysAndValuesUsingBlock: 3606 - (void)enumerateKeysAndUInt32sUsingBlock:
3584 (void (^)(int32_t key, uint32_t value, BOOL *stop))block { 3607 (void (^)(int32_t key, uint32_t value, BOOL *stop))block {
3585 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 3608 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
3586 NSNumber *aValue, 3609 NSNumber *aValue,
3587 BOOL *stop) { 3610 BOOL *stop) {
3588 block([aKey intValue], [aValue unsignedIntValue], stop); 3611 block([aKey intValue], [aValue unsignedIntValue], stop);
3589 }]; 3612 }];
3590 } 3613 }
3591 3614
3592 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 3615 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
3593 NSUInteger count = _dictionary.count; 3616 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3631 WriteDictUInt32Field(outputStream, [aValue unsignedIntValue], kMapValueField Number, valueDataType); 3654 WriteDictUInt32Field(outputStream, [aValue unsignedIntValue], kMapValueField Number, valueDataType);
3632 }]; 3655 }];
3633 } 3656 }
3634 3657
3635 - (void)setGPBGenericValue:(GPBGenericValue *)value 3658 - (void)setGPBGenericValue:(GPBGenericValue *)value
3636 forGPBGenericValueKey:(GPBGenericValue *)key { 3659 forGPBGenericValueKey:(GPBGenericValue *)key {
3637 [_dictionary setObject:@(value->valueUInt32) forKey:@(key->valueInt32)]; 3660 [_dictionary setObject:@(value->valueUInt32) forKey:@(key->valueInt32)];
3638 } 3661 }
3639 3662
3640 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 3663 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
3641 [self enumerateKeysAndValuesUsingBlock:^(int32_t key, uint32_t value, BOOL *st op) { 3664 [self enumerateKeysAndUInt32sUsingBlock:^(int32_t key, uint32_t value, BOOL *s top) {
3642 #pragma unused(stop) 3665 #pragma unused(stop)
3643 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%u", value]); 3666 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%u", value]);
3644 }]; 3667 }];
3645 } 3668 }
3646 3669
3647 - (BOOL)valueForKey:(int32_t)key value:(uint32_t *)value { 3670 - (BOOL)getUInt32:(nullable uint32_t *)value forKey:(int32_t)key {
3648 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 3671 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
3649 if (wrapped && value) { 3672 if (wrapped && value) {
3650 *value = [wrapped unsignedIntValue]; 3673 *value = [wrapped unsignedIntValue];
3651 } 3674 }
3652 return (wrapped != NULL); 3675 return (wrapped != NULL);
3653 } 3676 }
3654 3677
3655 - (void)addEntriesFromDictionary:(GPBInt32UInt32Dictionary *)otherDictionary { 3678 - (void)addEntriesFromDictionary:(GPBInt32UInt32Dictionary *)otherDictionary {
3656 if (otherDictionary) { 3679 if (otherDictionary) {
3657 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 3680 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
3658 if (_autocreator) { 3681 if (_autocreator) {
3659 GPBAutocreatedDictionaryModified(_autocreator, self); 3682 GPBAutocreatedDictionaryModified(_autocreator, self);
3660 } 3683 }
3661 } 3684 }
3662 } 3685 }
3663 3686
3664 - (void)setValue:(uint32_t)value forKey:(int32_t)key { 3687 - (void)setUInt32:(uint32_t)value forKey:(int32_t)key {
3665 [_dictionary setObject:@(value) forKey:@(key)]; 3688 [_dictionary setObject:@(value) forKey:@(key)];
3666 if (_autocreator) { 3689 if (_autocreator) {
3667 GPBAutocreatedDictionaryModified(_autocreator, self); 3690 GPBAutocreatedDictionaryModified(_autocreator, self);
3668 } 3691 }
3669 } 3692 }
3670 3693
3671 - (void)removeValueForKey:(int32_t)aKey { 3694 - (void)removeUInt32ForKey:(int32_t)aKey {
3672 [_dictionary removeObjectForKey:@(aKey)]; 3695 [_dictionary removeObjectForKey:@(aKey)];
3673 } 3696 }
3674 3697
3675 - (void)removeAll { 3698 - (void)removeAll {
3676 [_dictionary removeAllObjects]; 3699 [_dictionary removeAllObjects];
3677 } 3700 }
3678 3701
3679 @end 3702 @end
3680 3703
3681 #pragma mark - Int32 -> Int32 3704 #pragma mark - Int32 -> Int32
3682 3705
3683 @implementation GPBInt32Int32Dictionary { 3706 @implementation GPBInt32Int32Dictionary {
3684 @package 3707 @package
3685 NSMutableDictionary *_dictionary; 3708 NSMutableDictionary *_dictionary;
3686 } 3709 }
3687 3710
3688 + (instancetype)dictionary { 3711 + (instancetype)dictionary {
3689 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 3712 return [[[self alloc] initWithInt32s:NULL forKeys:NULL count:0] autorelease];
3690 } 3713 }
3691 3714
3692 + (instancetype)dictionaryWithValue:(int32_t)value 3715 + (instancetype)dictionaryWithInt32:(int32_t)value
3693 forKey:(int32_t)key { 3716 forKey:(int32_t)key {
3694 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 3717 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
3695 // on to get the type correct. 3718 // on to get the type correct.
3696 return [[(GPBInt32Int32Dictionary*)[self alloc] initWithValues:&value 3719 return [[(GPBInt32Int32Dictionary*)[self alloc] initWithInt32s:&value
3697 forKeys:&key 3720 forKeys:&key
3698 count:1] autorelease] ; 3721 count:1] autorelease] ;
3699 } 3722 }
3700 3723
3701 + (instancetype)dictionaryWithValues:(const int32_t [])values 3724 + (instancetype)dictionaryWithInt32s:(const int32_t [])values
3702 forKeys:(const int32_t [])keys 3725 forKeys:(const int32_t [])keys
3703 count:(NSUInteger)count { 3726 count:(NSUInteger)count {
3704 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 3727 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
3705 // on to get the type correct. 3728 // on to get the type correct.
3706 return [[(GPBInt32Int32Dictionary*)[self alloc] initWithValues:values 3729 return [[(GPBInt32Int32Dictionary*)[self alloc] initWithInt32s:values
3707 forKeys:keys 3730 forKeys:keys
3708 count:count] autorele ase]; 3731 count:count] autorele ase];
3709 } 3732 }
3710 3733
3711 + (instancetype)dictionaryWithDictionary:(GPBInt32Int32Dictionary *)dictionary { 3734 + (instancetype)dictionaryWithDictionary:(GPBInt32Int32Dictionary *)dictionary {
3712 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 3735 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
3713 // on to get the type correct. 3736 // on to get the type correct.
3714 return [[(GPBInt32Int32Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 3737 return [[(GPBInt32Int32Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
3715 } 3738 }
3716 3739
3717 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 3740 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
3718 return [[[self alloc] initWithCapacity:numItems] autorelease]; 3741 return [[[self alloc] initWithCapacity:numItems] autorelease];
3719 } 3742 }
3720 3743
3721 - (instancetype)init { 3744 - (instancetype)init {
3722 return [self initWithValues:NULL forKeys:NULL count:0]; 3745 return [self initWithInt32s:NULL forKeys:NULL count:0];
3723 } 3746 }
3724 3747
3725 - (instancetype)initWithValues:(const int32_t [])values 3748 - (instancetype)initWithInt32s:(const int32_t [])values
3726 forKeys:(const int32_t [])keys 3749 forKeys:(const int32_t [])keys
3727 count:(NSUInteger)count { 3750 count:(NSUInteger)count {
3728 self = [super init]; 3751 self = [super init];
3729 if (self) { 3752 if (self) {
3730 _dictionary = [[NSMutableDictionary alloc] init]; 3753 _dictionary = [[NSMutableDictionary alloc] init];
3731 if (count && values && keys) { 3754 if (count && values && keys) {
3732 for (NSUInteger i = 0; i < count; ++i) { 3755 for (NSUInteger i = 0; i < count; ++i) {
3733 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 3756 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
3734 } 3757 }
3735 } 3758 }
3736 } 3759 }
3737 return self; 3760 return self;
3738 } 3761 }
3739 3762
3740 - (instancetype)initWithDictionary:(GPBInt32Int32Dictionary *)dictionary { 3763 - (instancetype)initWithDictionary:(GPBInt32Int32Dictionary *)dictionary {
3741 self = [self initWithValues:NULL forKeys:NULL count:0]; 3764 self = [self initWithInt32s:NULL forKeys:NULL count:0];
3742 if (self) { 3765 if (self) {
3743 if (dictionary) { 3766 if (dictionary) {
3744 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 3767 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
3745 } 3768 }
3746 } 3769 }
3747 return self; 3770 return self;
3748 } 3771 }
3749 3772
3750 - (instancetype)initWithCapacity:(NSUInteger)numItems { 3773 - (instancetype)initWithCapacity:(NSUInteger)numItems {
3751 #pragma unused(numItems) 3774 #pragma unused(numItems)
3752 return [self initWithValues:NULL forKeys:NULL count:0]; 3775 return [self initWithInt32s:NULL forKeys:NULL count:0];
3753 } 3776 }
3754 3777
3755 - (void)dealloc { 3778 - (void)dealloc {
3756 NSAssert(!_autocreator, 3779 NSAssert(!_autocreator,
3757 @"%@: Autocreator must be cleared before release, autocreator: %@", 3780 @"%@: Autocreator must be cleared before release, autocreator: %@",
3758 [self class], _autocreator); 3781 [self class], _autocreator);
3759 [_dictionary release]; 3782 [_dictionary release];
3760 [super dealloc]; 3783 [super dealloc];
3761 } 3784 }
3762 3785
3763 - (instancetype)copyWithZone:(NSZone *)zone { 3786 - (instancetype)copyWithZone:(NSZone *)zone {
3764 return [[GPBInt32Int32Dictionary allocWithZone:zone] initWithDictionary:self]; 3787 return [[GPBInt32Int32Dictionary allocWithZone:zone] initWithDictionary:self];
3765 } 3788 }
3766 3789
3767 - (BOOL)isEqual:(GPBInt32Int32Dictionary *)other { 3790 - (BOOL)isEqual:(id)other {
3768 if (self == other) { 3791 if (self == other) {
3769 return YES; 3792 return YES;
3770 } 3793 }
3771 if (![other isKindOfClass:[GPBInt32Int32Dictionary class]]) { 3794 if (![other isKindOfClass:[GPBInt32Int32Dictionary class]]) {
3772 return NO; 3795 return NO;
3773 } 3796 }
3774 return [_dictionary isEqual:other->_dictionary]; 3797 GPBInt32Int32Dictionary *otherDictionary = other;
3798 return [_dictionary isEqual:otherDictionary->_dictionary];
3775 } 3799 }
3776 3800
3777 - (NSUInteger)hash { 3801 - (NSUInteger)hash {
3778 return _dictionary.count; 3802 return _dictionary.count;
3779 } 3803 }
3780 3804
3781 - (NSString *)description { 3805 - (NSString *)description {
3782 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 3806 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
3783 } 3807 }
3784 3808
3785 - (NSUInteger)count { 3809 - (NSUInteger)count {
3786 return _dictionary.count; 3810 return _dictionary.count;
3787 } 3811 }
3788 3812
3789 - (void)enumerateKeysAndValuesUsingBlock: 3813 - (void)enumerateKeysAndInt32sUsingBlock:
3790 (void (^)(int32_t key, int32_t value, BOOL *stop))block { 3814 (void (^)(int32_t key, int32_t value, BOOL *stop))block {
3791 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 3815 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
3792 NSNumber *aValue, 3816 NSNumber *aValue,
3793 BOOL *stop) { 3817 BOOL *stop) {
3794 block([aKey intValue], [aValue intValue], stop); 3818 block([aKey intValue], [aValue intValue], stop);
3795 }]; 3819 }];
3796 } 3820 }
3797 3821
3798 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 3822 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
3799 NSUInteger count = _dictionary.count; 3823 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3837 WriteDictInt32Field(outputStream, [aValue intValue], kMapValueFieldNumber, v alueDataType); 3861 WriteDictInt32Field(outputStream, [aValue intValue], kMapValueFieldNumber, v alueDataType);
3838 }]; 3862 }];
3839 } 3863 }
3840 3864
3841 - (void)setGPBGenericValue:(GPBGenericValue *)value 3865 - (void)setGPBGenericValue:(GPBGenericValue *)value
3842 forGPBGenericValueKey:(GPBGenericValue *)key { 3866 forGPBGenericValueKey:(GPBGenericValue *)key {
3843 [_dictionary setObject:@(value->valueInt32) forKey:@(key->valueInt32)]; 3867 [_dictionary setObject:@(value->valueInt32) forKey:@(key->valueInt32)];
3844 } 3868 }
3845 3869
3846 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 3870 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
3847 [self enumerateKeysAndValuesUsingBlock:^(int32_t key, int32_t value, BOOL *sto p) { 3871 [self enumerateKeysAndInt32sUsingBlock:^(int32_t key, int32_t value, BOOL *sto p) {
3848 #pragma unused(stop) 3872 #pragma unused(stop)
3849 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%d", value]); 3873 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%d", value]);
3850 }]; 3874 }];
3851 } 3875 }
3852 3876
3853 - (BOOL)valueForKey:(int32_t)key value:(int32_t *)value { 3877 - (BOOL)getInt32:(nullable int32_t *)value forKey:(int32_t)key {
3854 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 3878 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
3855 if (wrapped && value) { 3879 if (wrapped && value) {
3856 *value = [wrapped intValue]; 3880 *value = [wrapped intValue];
3857 } 3881 }
3858 return (wrapped != NULL); 3882 return (wrapped != NULL);
3859 } 3883 }
3860 3884
3861 - (void)addEntriesFromDictionary:(GPBInt32Int32Dictionary *)otherDictionary { 3885 - (void)addEntriesFromDictionary:(GPBInt32Int32Dictionary *)otherDictionary {
3862 if (otherDictionary) { 3886 if (otherDictionary) {
3863 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 3887 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
3864 if (_autocreator) { 3888 if (_autocreator) {
3865 GPBAutocreatedDictionaryModified(_autocreator, self); 3889 GPBAutocreatedDictionaryModified(_autocreator, self);
3866 } 3890 }
3867 } 3891 }
3868 } 3892 }
3869 3893
3870 - (void)setValue:(int32_t)value forKey:(int32_t)key { 3894 - (void)setInt32:(int32_t)value forKey:(int32_t)key {
3871 [_dictionary setObject:@(value) forKey:@(key)]; 3895 [_dictionary setObject:@(value) forKey:@(key)];
3872 if (_autocreator) { 3896 if (_autocreator) {
3873 GPBAutocreatedDictionaryModified(_autocreator, self); 3897 GPBAutocreatedDictionaryModified(_autocreator, self);
3874 } 3898 }
3875 } 3899 }
3876 3900
3877 - (void)removeValueForKey:(int32_t)aKey { 3901 - (void)removeInt32ForKey:(int32_t)aKey {
3878 [_dictionary removeObjectForKey:@(aKey)]; 3902 [_dictionary removeObjectForKey:@(aKey)];
3879 } 3903 }
3880 3904
3881 - (void)removeAll { 3905 - (void)removeAll {
3882 [_dictionary removeAllObjects]; 3906 [_dictionary removeAllObjects];
3883 } 3907 }
3884 3908
3885 @end 3909 @end
3886 3910
3887 #pragma mark - Int32 -> UInt64 3911 #pragma mark - Int32 -> UInt64
3888 3912
3889 @implementation GPBInt32UInt64Dictionary { 3913 @implementation GPBInt32UInt64Dictionary {
3890 @package 3914 @package
3891 NSMutableDictionary *_dictionary; 3915 NSMutableDictionary *_dictionary;
3892 } 3916 }
3893 3917
3894 + (instancetype)dictionary { 3918 + (instancetype)dictionary {
3895 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 3919 return [[[self alloc] initWithUInt64s:NULL forKeys:NULL count:0] autorelease];
3896 } 3920 }
3897 3921
3898 + (instancetype)dictionaryWithValue:(uint64_t)value 3922 + (instancetype)dictionaryWithUInt64:(uint64_t)value
3899 forKey:(int32_t)key { 3923 forKey:(int32_t)key {
3900 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 3924 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
3901 // on to get the type correct. 3925 // on to get the type correct.
3902 return [[(GPBInt32UInt64Dictionary*)[self alloc] initWithValues:&value 3926 return [[(GPBInt32UInt64Dictionary*)[self alloc] initWithUInt64s:&value
3903 forKeys:&key 3927 forKeys:&key
3904 count:1] autorelease ]; 3928 count:1] autoreleas e];
3905 } 3929 }
3906 3930
3907 + (instancetype)dictionaryWithValues:(const uint64_t [])values 3931 + (instancetype)dictionaryWithUInt64s:(const uint64_t [])values
3908 forKeys:(const int32_t [])keys 3932 forKeys:(const int32_t [])keys
3909 count:(NSUInteger)count { 3933 count:(NSUInteger)count {
3910 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 3934 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
3911 // on to get the type correct. 3935 // on to get the type correct.
3912 return [[(GPBInt32UInt64Dictionary*)[self alloc] initWithValues:values 3936 return [[(GPBInt32UInt64Dictionary*)[self alloc] initWithUInt64s:values
3913 forKeys:keys 3937 forKeys:keys
3914 count:count] autorel ease]; 3938 count:count] autorel ease];
3915 } 3939 }
3916 3940
3917 + (instancetype)dictionaryWithDictionary:(GPBInt32UInt64Dictionary *)dictionary { 3941 + (instancetype)dictionaryWithDictionary:(GPBInt32UInt64Dictionary *)dictionary {
3918 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 3942 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
3919 // on to get the type correct. 3943 // on to get the type correct.
3920 return [[(GPBInt32UInt64Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 3944 return [[(GPBInt32UInt64Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
3921 } 3945 }
3922 3946
3923 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 3947 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
3924 return [[[self alloc] initWithCapacity:numItems] autorelease]; 3948 return [[[self alloc] initWithCapacity:numItems] autorelease];
3925 } 3949 }
3926 3950
3927 - (instancetype)init { 3951 - (instancetype)init {
3928 return [self initWithValues:NULL forKeys:NULL count:0]; 3952 return [self initWithUInt64s:NULL forKeys:NULL count:0];
3929 } 3953 }
3930 3954
3931 - (instancetype)initWithValues:(const uint64_t [])values 3955 - (instancetype)initWithUInt64s:(const uint64_t [])values
3932 forKeys:(const int32_t [])keys 3956 forKeys:(const int32_t [])keys
3933 count:(NSUInteger)count { 3957 count:(NSUInteger)count {
3934 self = [super init]; 3958 self = [super init];
3935 if (self) { 3959 if (self) {
3936 _dictionary = [[NSMutableDictionary alloc] init]; 3960 _dictionary = [[NSMutableDictionary alloc] init];
3937 if (count && values && keys) { 3961 if (count && values && keys) {
3938 for (NSUInteger i = 0; i < count; ++i) { 3962 for (NSUInteger i = 0; i < count; ++i) {
3939 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 3963 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
3940 } 3964 }
3941 } 3965 }
3942 } 3966 }
3943 return self; 3967 return self;
3944 } 3968 }
3945 3969
3946 - (instancetype)initWithDictionary:(GPBInt32UInt64Dictionary *)dictionary { 3970 - (instancetype)initWithDictionary:(GPBInt32UInt64Dictionary *)dictionary {
3947 self = [self initWithValues:NULL forKeys:NULL count:0]; 3971 self = [self initWithUInt64s:NULL forKeys:NULL count:0];
3948 if (self) { 3972 if (self) {
3949 if (dictionary) { 3973 if (dictionary) {
3950 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 3974 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
3951 } 3975 }
3952 } 3976 }
3953 return self; 3977 return self;
3954 } 3978 }
3955 3979
3956 - (instancetype)initWithCapacity:(NSUInteger)numItems { 3980 - (instancetype)initWithCapacity:(NSUInteger)numItems {
3957 #pragma unused(numItems) 3981 #pragma unused(numItems)
3958 return [self initWithValues:NULL forKeys:NULL count:0]; 3982 return [self initWithUInt64s:NULL forKeys:NULL count:0];
3959 } 3983 }
3960 3984
3961 - (void)dealloc { 3985 - (void)dealloc {
3962 NSAssert(!_autocreator, 3986 NSAssert(!_autocreator,
3963 @"%@: Autocreator must be cleared before release, autocreator: %@", 3987 @"%@: Autocreator must be cleared before release, autocreator: %@",
3964 [self class], _autocreator); 3988 [self class], _autocreator);
3965 [_dictionary release]; 3989 [_dictionary release];
3966 [super dealloc]; 3990 [super dealloc];
3967 } 3991 }
3968 3992
3969 - (instancetype)copyWithZone:(NSZone *)zone { 3993 - (instancetype)copyWithZone:(NSZone *)zone {
3970 return [[GPBInt32UInt64Dictionary allocWithZone:zone] initWithDictionary:self] ; 3994 return [[GPBInt32UInt64Dictionary allocWithZone:zone] initWithDictionary:self] ;
3971 } 3995 }
3972 3996
3973 - (BOOL)isEqual:(GPBInt32UInt64Dictionary *)other { 3997 - (BOOL)isEqual:(id)other {
3974 if (self == other) { 3998 if (self == other) {
3975 return YES; 3999 return YES;
3976 } 4000 }
3977 if (![other isKindOfClass:[GPBInt32UInt64Dictionary class]]) { 4001 if (![other isKindOfClass:[GPBInt32UInt64Dictionary class]]) {
3978 return NO; 4002 return NO;
3979 } 4003 }
3980 return [_dictionary isEqual:other->_dictionary]; 4004 GPBInt32UInt64Dictionary *otherDictionary = other;
4005 return [_dictionary isEqual:otherDictionary->_dictionary];
3981 } 4006 }
3982 4007
3983 - (NSUInteger)hash { 4008 - (NSUInteger)hash {
3984 return _dictionary.count; 4009 return _dictionary.count;
3985 } 4010 }
3986 4011
3987 - (NSString *)description { 4012 - (NSString *)description {
3988 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 4013 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
3989 } 4014 }
3990 4015
3991 - (NSUInteger)count { 4016 - (NSUInteger)count {
3992 return _dictionary.count; 4017 return _dictionary.count;
3993 } 4018 }
3994 4019
3995 - (void)enumerateKeysAndValuesUsingBlock: 4020 - (void)enumerateKeysAndUInt64sUsingBlock:
3996 (void (^)(int32_t key, uint64_t value, BOOL *stop))block { 4021 (void (^)(int32_t key, uint64_t value, BOOL *stop))block {
3997 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 4022 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
3998 NSNumber *aValue, 4023 NSNumber *aValue,
3999 BOOL *stop) { 4024 BOOL *stop) {
4000 block([aKey intValue], [aValue unsignedLongLongValue], stop); 4025 block([aKey intValue], [aValue unsignedLongLongValue], stop);
4001 }]; 4026 }];
4002 } 4027 }
4003 4028
4004 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 4029 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
4005 NSUInteger count = _dictionary.count; 4030 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
4043 WriteDictUInt64Field(outputStream, [aValue unsignedLongLongValue], kMapValue FieldNumber, valueDataType); 4068 WriteDictUInt64Field(outputStream, [aValue unsignedLongLongValue], kMapValue FieldNumber, valueDataType);
4044 }]; 4069 }];
4045 } 4070 }
4046 4071
4047 - (void)setGPBGenericValue:(GPBGenericValue *)value 4072 - (void)setGPBGenericValue:(GPBGenericValue *)value
4048 forGPBGenericValueKey:(GPBGenericValue *)key { 4073 forGPBGenericValueKey:(GPBGenericValue *)key {
4049 [_dictionary setObject:@(value->valueUInt64) forKey:@(key->valueInt32)]; 4074 [_dictionary setObject:@(value->valueUInt64) forKey:@(key->valueInt32)];
4050 } 4075 }
4051 4076
4052 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 4077 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
4053 [self enumerateKeysAndValuesUsingBlock:^(int32_t key, uint64_t value, BOOL *st op) { 4078 [self enumerateKeysAndUInt64sUsingBlock:^(int32_t key, uint64_t value, BOOL *s top) {
4054 #pragma unused(stop) 4079 #pragma unused(stop)
4055 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%llu", value]); 4080 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%llu", value]);
4056 }]; 4081 }];
4057 } 4082 }
4058 4083
4059 - (BOOL)valueForKey:(int32_t)key value:(uint64_t *)value { 4084 - (BOOL)getUInt64:(nullable uint64_t *)value forKey:(int32_t)key {
4060 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 4085 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
4061 if (wrapped && value) { 4086 if (wrapped && value) {
4062 *value = [wrapped unsignedLongLongValue]; 4087 *value = [wrapped unsignedLongLongValue];
4063 } 4088 }
4064 return (wrapped != NULL); 4089 return (wrapped != NULL);
4065 } 4090 }
4066 4091
4067 - (void)addEntriesFromDictionary:(GPBInt32UInt64Dictionary *)otherDictionary { 4092 - (void)addEntriesFromDictionary:(GPBInt32UInt64Dictionary *)otherDictionary {
4068 if (otherDictionary) { 4093 if (otherDictionary) {
4069 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 4094 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
4070 if (_autocreator) { 4095 if (_autocreator) {
4071 GPBAutocreatedDictionaryModified(_autocreator, self); 4096 GPBAutocreatedDictionaryModified(_autocreator, self);
4072 } 4097 }
4073 } 4098 }
4074 } 4099 }
4075 4100
4076 - (void)setValue:(uint64_t)value forKey:(int32_t)key { 4101 - (void)setUInt64:(uint64_t)value forKey:(int32_t)key {
4077 [_dictionary setObject:@(value) forKey:@(key)]; 4102 [_dictionary setObject:@(value) forKey:@(key)];
4078 if (_autocreator) { 4103 if (_autocreator) {
4079 GPBAutocreatedDictionaryModified(_autocreator, self); 4104 GPBAutocreatedDictionaryModified(_autocreator, self);
4080 } 4105 }
4081 } 4106 }
4082 4107
4083 - (void)removeValueForKey:(int32_t)aKey { 4108 - (void)removeUInt64ForKey:(int32_t)aKey {
4084 [_dictionary removeObjectForKey:@(aKey)]; 4109 [_dictionary removeObjectForKey:@(aKey)];
4085 } 4110 }
4086 4111
4087 - (void)removeAll { 4112 - (void)removeAll {
4088 [_dictionary removeAllObjects]; 4113 [_dictionary removeAllObjects];
4089 } 4114 }
4090 4115
4091 @end 4116 @end
4092 4117
4093 #pragma mark - Int32 -> Int64 4118 #pragma mark - Int32 -> Int64
4094 4119
4095 @implementation GPBInt32Int64Dictionary { 4120 @implementation GPBInt32Int64Dictionary {
4096 @package 4121 @package
4097 NSMutableDictionary *_dictionary; 4122 NSMutableDictionary *_dictionary;
4098 } 4123 }
4099 4124
4100 + (instancetype)dictionary { 4125 + (instancetype)dictionary {
4101 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 4126 return [[[self alloc] initWithInt64s:NULL forKeys:NULL count:0] autorelease];
4102 } 4127 }
4103 4128
4104 + (instancetype)dictionaryWithValue:(int64_t)value 4129 + (instancetype)dictionaryWithInt64:(int64_t)value
4105 forKey:(int32_t)key { 4130 forKey:(int32_t)key {
4106 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 4131 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
4107 // on to get the type correct. 4132 // on to get the type correct.
4108 return [[(GPBInt32Int64Dictionary*)[self alloc] initWithValues:&value 4133 return [[(GPBInt32Int64Dictionary*)[self alloc] initWithInt64s:&value
4109 forKeys:&key 4134 forKeys:&key
4110 count:1] autorelease] ; 4135 count:1] autorelease] ;
4111 } 4136 }
4112 4137
4113 + (instancetype)dictionaryWithValues:(const int64_t [])values 4138 + (instancetype)dictionaryWithInt64s:(const int64_t [])values
4114 forKeys:(const int32_t [])keys 4139 forKeys:(const int32_t [])keys
4115 count:(NSUInteger)count { 4140 count:(NSUInteger)count {
4116 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 4141 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
4117 // on to get the type correct. 4142 // on to get the type correct.
4118 return [[(GPBInt32Int64Dictionary*)[self alloc] initWithValues:values 4143 return [[(GPBInt32Int64Dictionary*)[self alloc] initWithInt64s:values
4119 forKeys:keys 4144 forKeys:keys
4120 count:count] autorele ase]; 4145 count:count] autorele ase];
4121 } 4146 }
4122 4147
4123 + (instancetype)dictionaryWithDictionary:(GPBInt32Int64Dictionary *)dictionary { 4148 + (instancetype)dictionaryWithDictionary:(GPBInt32Int64Dictionary *)dictionary {
4124 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 4149 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
4125 // on to get the type correct. 4150 // on to get the type correct.
4126 return [[(GPBInt32Int64Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 4151 return [[(GPBInt32Int64Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
4127 } 4152 }
4128 4153
4129 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 4154 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
4130 return [[[self alloc] initWithCapacity:numItems] autorelease]; 4155 return [[[self alloc] initWithCapacity:numItems] autorelease];
4131 } 4156 }
4132 4157
4133 - (instancetype)init { 4158 - (instancetype)init {
4134 return [self initWithValues:NULL forKeys:NULL count:0]; 4159 return [self initWithInt64s:NULL forKeys:NULL count:0];
4135 } 4160 }
4136 4161
4137 - (instancetype)initWithValues:(const int64_t [])values 4162 - (instancetype)initWithInt64s:(const int64_t [])values
4138 forKeys:(const int32_t [])keys 4163 forKeys:(const int32_t [])keys
4139 count:(NSUInteger)count { 4164 count:(NSUInteger)count {
4140 self = [super init]; 4165 self = [super init];
4141 if (self) { 4166 if (self) {
4142 _dictionary = [[NSMutableDictionary alloc] init]; 4167 _dictionary = [[NSMutableDictionary alloc] init];
4143 if (count && values && keys) { 4168 if (count && values && keys) {
4144 for (NSUInteger i = 0; i < count; ++i) { 4169 for (NSUInteger i = 0; i < count; ++i) {
4145 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 4170 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
4146 } 4171 }
4147 } 4172 }
4148 } 4173 }
4149 return self; 4174 return self;
4150 } 4175 }
4151 4176
4152 - (instancetype)initWithDictionary:(GPBInt32Int64Dictionary *)dictionary { 4177 - (instancetype)initWithDictionary:(GPBInt32Int64Dictionary *)dictionary {
4153 self = [self initWithValues:NULL forKeys:NULL count:0]; 4178 self = [self initWithInt64s:NULL forKeys:NULL count:0];
4154 if (self) { 4179 if (self) {
4155 if (dictionary) { 4180 if (dictionary) {
4156 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 4181 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
4157 } 4182 }
4158 } 4183 }
4159 return self; 4184 return self;
4160 } 4185 }
4161 4186
4162 - (instancetype)initWithCapacity:(NSUInteger)numItems { 4187 - (instancetype)initWithCapacity:(NSUInteger)numItems {
4163 #pragma unused(numItems) 4188 #pragma unused(numItems)
4164 return [self initWithValues:NULL forKeys:NULL count:0]; 4189 return [self initWithInt64s:NULL forKeys:NULL count:0];
4165 } 4190 }
4166 4191
4167 - (void)dealloc { 4192 - (void)dealloc {
4168 NSAssert(!_autocreator, 4193 NSAssert(!_autocreator,
4169 @"%@: Autocreator must be cleared before release, autocreator: %@", 4194 @"%@: Autocreator must be cleared before release, autocreator: %@",
4170 [self class], _autocreator); 4195 [self class], _autocreator);
4171 [_dictionary release]; 4196 [_dictionary release];
4172 [super dealloc]; 4197 [super dealloc];
4173 } 4198 }
4174 4199
4175 - (instancetype)copyWithZone:(NSZone *)zone { 4200 - (instancetype)copyWithZone:(NSZone *)zone {
4176 return [[GPBInt32Int64Dictionary allocWithZone:zone] initWithDictionary:self]; 4201 return [[GPBInt32Int64Dictionary allocWithZone:zone] initWithDictionary:self];
4177 } 4202 }
4178 4203
4179 - (BOOL)isEqual:(GPBInt32Int64Dictionary *)other { 4204 - (BOOL)isEqual:(id)other {
4180 if (self == other) { 4205 if (self == other) {
4181 return YES; 4206 return YES;
4182 } 4207 }
4183 if (![other isKindOfClass:[GPBInt32Int64Dictionary class]]) { 4208 if (![other isKindOfClass:[GPBInt32Int64Dictionary class]]) {
4184 return NO; 4209 return NO;
4185 } 4210 }
4186 return [_dictionary isEqual:other->_dictionary]; 4211 GPBInt32Int64Dictionary *otherDictionary = other;
4212 return [_dictionary isEqual:otherDictionary->_dictionary];
4187 } 4213 }
4188 4214
4189 - (NSUInteger)hash { 4215 - (NSUInteger)hash {
4190 return _dictionary.count; 4216 return _dictionary.count;
4191 } 4217 }
4192 4218
4193 - (NSString *)description { 4219 - (NSString *)description {
4194 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 4220 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
4195 } 4221 }
4196 4222
4197 - (NSUInteger)count { 4223 - (NSUInteger)count {
4198 return _dictionary.count; 4224 return _dictionary.count;
4199 } 4225 }
4200 4226
4201 - (void)enumerateKeysAndValuesUsingBlock: 4227 - (void)enumerateKeysAndInt64sUsingBlock:
4202 (void (^)(int32_t key, int64_t value, BOOL *stop))block { 4228 (void (^)(int32_t key, int64_t value, BOOL *stop))block {
4203 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 4229 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
4204 NSNumber *aValue, 4230 NSNumber *aValue,
4205 BOOL *stop) { 4231 BOOL *stop) {
4206 block([aKey intValue], [aValue longLongValue], stop); 4232 block([aKey intValue], [aValue longLongValue], stop);
4207 }]; 4233 }];
4208 } 4234 }
4209 4235
4210 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 4236 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
4211 NSUInteger count = _dictionary.count; 4237 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
4249 WriteDictInt64Field(outputStream, [aValue longLongValue], kMapValueFieldNumb er, valueDataType); 4275 WriteDictInt64Field(outputStream, [aValue longLongValue], kMapValueFieldNumb er, valueDataType);
4250 }]; 4276 }];
4251 } 4277 }
4252 4278
4253 - (void)setGPBGenericValue:(GPBGenericValue *)value 4279 - (void)setGPBGenericValue:(GPBGenericValue *)value
4254 forGPBGenericValueKey:(GPBGenericValue *)key { 4280 forGPBGenericValueKey:(GPBGenericValue *)key {
4255 [_dictionary setObject:@(value->valueInt64) forKey:@(key->valueInt32)]; 4281 [_dictionary setObject:@(value->valueInt64) forKey:@(key->valueInt32)];
4256 } 4282 }
4257 4283
4258 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 4284 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
4259 [self enumerateKeysAndValuesUsingBlock:^(int32_t key, int64_t value, BOOL *sto p) { 4285 [self enumerateKeysAndInt64sUsingBlock:^(int32_t key, int64_t value, BOOL *sto p) {
4260 #pragma unused(stop) 4286 #pragma unused(stop)
4261 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%lld", value]); 4287 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%lld", value]);
4262 }]; 4288 }];
4263 } 4289 }
4264 4290
4265 - (BOOL)valueForKey:(int32_t)key value:(int64_t *)value { 4291 - (BOOL)getInt64:(nullable int64_t *)value forKey:(int32_t)key {
4266 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 4292 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
4267 if (wrapped && value) { 4293 if (wrapped && value) {
4268 *value = [wrapped longLongValue]; 4294 *value = [wrapped longLongValue];
4269 } 4295 }
4270 return (wrapped != NULL); 4296 return (wrapped != NULL);
4271 } 4297 }
4272 4298
4273 - (void)addEntriesFromDictionary:(GPBInt32Int64Dictionary *)otherDictionary { 4299 - (void)addEntriesFromDictionary:(GPBInt32Int64Dictionary *)otherDictionary {
4274 if (otherDictionary) { 4300 if (otherDictionary) {
4275 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 4301 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
4276 if (_autocreator) { 4302 if (_autocreator) {
4277 GPBAutocreatedDictionaryModified(_autocreator, self); 4303 GPBAutocreatedDictionaryModified(_autocreator, self);
4278 } 4304 }
4279 } 4305 }
4280 } 4306 }
4281 4307
4282 - (void)setValue:(int64_t)value forKey:(int32_t)key { 4308 - (void)setInt64:(int64_t)value forKey:(int32_t)key {
4283 [_dictionary setObject:@(value) forKey:@(key)]; 4309 [_dictionary setObject:@(value) forKey:@(key)];
4284 if (_autocreator) { 4310 if (_autocreator) {
4285 GPBAutocreatedDictionaryModified(_autocreator, self); 4311 GPBAutocreatedDictionaryModified(_autocreator, self);
4286 } 4312 }
4287 } 4313 }
4288 4314
4289 - (void)removeValueForKey:(int32_t)aKey { 4315 - (void)removeInt64ForKey:(int32_t)aKey {
4290 [_dictionary removeObjectForKey:@(aKey)]; 4316 [_dictionary removeObjectForKey:@(aKey)];
4291 } 4317 }
4292 4318
4293 - (void)removeAll { 4319 - (void)removeAll {
4294 [_dictionary removeAllObjects]; 4320 [_dictionary removeAllObjects];
4295 } 4321 }
4296 4322
4297 @end 4323 @end
4298 4324
4299 #pragma mark - Int32 -> Bool 4325 #pragma mark - Int32 -> Bool
4300 4326
4301 @implementation GPBInt32BoolDictionary { 4327 @implementation GPBInt32BoolDictionary {
4302 @package 4328 @package
4303 NSMutableDictionary *_dictionary; 4329 NSMutableDictionary *_dictionary;
4304 } 4330 }
4305 4331
4306 + (instancetype)dictionary { 4332 + (instancetype)dictionary {
4307 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 4333 return [[[self alloc] initWithBools:NULL forKeys:NULL count:0] autorelease];
4308 } 4334 }
4309 4335
4310 + (instancetype)dictionaryWithValue:(BOOL)value 4336 + (instancetype)dictionaryWithBool:(BOOL)value
4311 forKey:(int32_t)key { 4337 forKey:(int32_t)key {
4312 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 4338 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
4313 // on to get the type correct. 4339 // on to get the type correct.
4314 return [[(GPBInt32BoolDictionary*)[self alloc] initWithValues:&value 4340 return [[(GPBInt32BoolDictionary*)[self alloc] initWithBools:&value
4315 forKeys:&key 4341 forKeys:&key
4316 count:1] autorelease]; 4342 count:1] autorelease];
4317 } 4343 }
4318 4344
4319 + (instancetype)dictionaryWithValues:(const BOOL [])values 4345 + (instancetype)dictionaryWithBools:(const BOOL [])values
4320 forKeys:(const int32_t [])keys 4346 forKeys:(const int32_t [])keys
4321 count:(NSUInteger)count { 4347 count:(NSUInteger)count {
4322 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 4348 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
4323 // on to get the type correct. 4349 // on to get the type correct.
4324 return [[(GPBInt32BoolDictionary*)[self alloc] initWithValues:values 4350 return [[(GPBInt32BoolDictionary*)[self alloc] initWithBools:values
4325 forKeys:keys 4351 forKeys:keys
4326 count:count] autorelea se]; 4352 count:count] autorelea se];
4327 } 4353 }
4328 4354
4329 + (instancetype)dictionaryWithDictionary:(GPBInt32BoolDictionary *)dictionary { 4355 + (instancetype)dictionaryWithDictionary:(GPBInt32BoolDictionary *)dictionary {
4330 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 4356 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
4331 // on to get the type correct. 4357 // on to get the type correct.
4332 return [[(GPBInt32BoolDictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 4358 return [[(GPBInt32BoolDictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
4333 } 4359 }
4334 4360
4335 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 4361 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
4336 return [[[self alloc] initWithCapacity:numItems] autorelease]; 4362 return [[[self alloc] initWithCapacity:numItems] autorelease];
4337 } 4363 }
4338 4364
4339 - (instancetype)init { 4365 - (instancetype)init {
4340 return [self initWithValues:NULL forKeys:NULL count:0]; 4366 return [self initWithBools:NULL forKeys:NULL count:0];
4341 } 4367 }
4342 4368
4343 - (instancetype)initWithValues:(const BOOL [])values 4369 - (instancetype)initWithBools:(const BOOL [])values
4344 forKeys:(const int32_t [])keys 4370 forKeys:(const int32_t [])keys
4345 count:(NSUInteger)count { 4371 count:(NSUInteger)count {
4346 self = [super init]; 4372 self = [super init];
4347 if (self) { 4373 if (self) {
4348 _dictionary = [[NSMutableDictionary alloc] init]; 4374 _dictionary = [[NSMutableDictionary alloc] init];
4349 if (count && values && keys) { 4375 if (count && values && keys) {
4350 for (NSUInteger i = 0; i < count; ++i) { 4376 for (NSUInteger i = 0; i < count; ++i) {
4351 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 4377 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
4352 } 4378 }
4353 } 4379 }
4354 } 4380 }
4355 return self; 4381 return self;
4356 } 4382 }
4357 4383
4358 - (instancetype)initWithDictionary:(GPBInt32BoolDictionary *)dictionary { 4384 - (instancetype)initWithDictionary:(GPBInt32BoolDictionary *)dictionary {
4359 self = [self initWithValues:NULL forKeys:NULL count:0]; 4385 self = [self initWithBools:NULL forKeys:NULL count:0];
4360 if (self) { 4386 if (self) {
4361 if (dictionary) { 4387 if (dictionary) {
4362 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 4388 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
4363 } 4389 }
4364 } 4390 }
4365 return self; 4391 return self;
4366 } 4392 }
4367 4393
4368 - (instancetype)initWithCapacity:(NSUInteger)numItems { 4394 - (instancetype)initWithCapacity:(NSUInteger)numItems {
4369 #pragma unused(numItems) 4395 #pragma unused(numItems)
4370 return [self initWithValues:NULL forKeys:NULL count:0]; 4396 return [self initWithBools:NULL forKeys:NULL count:0];
4371 } 4397 }
4372 4398
4373 - (void)dealloc { 4399 - (void)dealloc {
4374 NSAssert(!_autocreator, 4400 NSAssert(!_autocreator,
4375 @"%@: Autocreator must be cleared before release, autocreator: %@", 4401 @"%@: Autocreator must be cleared before release, autocreator: %@",
4376 [self class], _autocreator); 4402 [self class], _autocreator);
4377 [_dictionary release]; 4403 [_dictionary release];
4378 [super dealloc]; 4404 [super dealloc];
4379 } 4405 }
4380 4406
4381 - (instancetype)copyWithZone:(NSZone *)zone { 4407 - (instancetype)copyWithZone:(NSZone *)zone {
4382 return [[GPBInt32BoolDictionary allocWithZone:zone] initWithDictionary:self]; 4408 return [[GPBInt32BoolDictionary allocWithZone:zone] initWithDictionary:self];
4383 } 4409 }
4384 4410
4385 - (BOOL)isEqual:(GPBInt32BoolDictionary *)other { 4411 - (BOOL)isEqual:(id)other {
4386 if (self == other) { 4412 if (self == other) {
4387 return YES; 4413 return YES;
4388 } 4414 }
4389 if (![other isKindOfClass:[GPBInt32BoolDictionary class]]) { 4415 if (![other isKindOfClass:[GPBInt32BoolDictionary class]]) {
4390 return NO; 4416 return NO;
4391 } 4417 }
4392 return [_dictionary isEqual:other->_dictionary]; 4418 GPBInt32BoolDictionary *otherDictionary = other;
4419 return [_dictionary isEqual:otherDictionary->_dictionary];
4393 } 4420 }
4394 4421
4395 - (NSUInteger)hash { 4422 - (NSUInteger)hash {
4396 return _dictionary.count; 4423 return _dictionary.count;
4397 } 4424 }
4398 4425
4399 - (NSString *)description { 4426 - (NSString *)description {
4400 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 4427 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
4401 } 4428 }
4402 4429
4403 - (NSUInteger)count { 4430 - (NSUInteger)count {
4404 return _dictionary.count; 4431 return _dictionary.count;
4405 } 4432 }
4406 4433
4407 - (void)enumerateKeysAndValuesUsingBlock: 4434 - (void)enumerateKeysAndBoolsUsingBlock:
4408 (void (^)(int32_t key, BOOL value, BOOL *stop))block { 4435 (void (^)(int32_t key, BOOL value, BOOL *stop))block {
4409 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 4436 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
4410 NSNumber *aValue, 4437 NSNumber *aValue,
4411 BOOL *stop) { 4438 BOOL *stop) {
4412 block([aKey intValue], [aValue boolValue], stop); 4439 block([aKey intValue], [aValue boolValue], stop);
4413 }]; 4440 }];
4414 } 4441 }
4415 4442
4416 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 4443 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
4417 NSUInteger count = _dictionary.count; 4444 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
4455 WriteDictBoolField(outputStream, [aValue boolValue], kMapValueFieldNumber, v alueDataType); 4482 WriteDictBoolField(outputStream, [aValue boolValue], kMapValueFieldNumber, v alueDataType);
4456 }]; 4483 }];
4457 } 4484 }
4458 4485
4459 - (void)setGPBGenericValue:(GPBGenericValue *)value 4486 - (void)setGPBGenericValue:(GPBGenericValue *)value
4460 forGPBGenericValueKey:(GPBGenericValue *)key { 4487 forGPBGenericValueKey:(GPBGenericValue *)key {
4461 [_dictionary setObject:@(value->valueBool) forKey:@(key->valueInt32)]; 4488 [_dictionary setObject:@(value->valueBool) forKey:@(key->valueInt32)];
4462 } 4489 }
4463 4490
4464 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 4491 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
4465 [self enumerateKeysAndValuesUsingBlock:^(int32_t key, BOOL value, BOOL *stop) { 4492 [self enumerateKeysAndBoolsUsingBlock:^(int32_t key, BOOL value, BOOL *stop) {
4466 #pragma unused(stop) 4493 #pragma unused(stop)
4467 block([NSString stringWithFormat:@"%d", key], (value ? @"true" : @"false") ); 4494 block([NSString stringWithFormat:@"%d", key], (value ? @"true" : @"false") );
4468 }]; 4495 }];
4469 } 4496 }
4470 4497
4471 - (BOOL)valueForKey:(int32_t)key value:(BOOL *)value { 4498 - (BOOL)getBool:(nullable BOOL *)value forKey:(int32_t)key {
4472 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 4499 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
4473 if (wrapped && value) { 4500 if (wrapped && value) {
4474 *value = [wrapped boolValue]; 4501 *value = [wrapped boolValue];
4475 } 4502 }
4476 return (wrapped != NULL); 4503 return (wrapped != NULL);
4477 } 4504 }
4478 4505
4479 - (void)addEntriesFromDictionary:(GPBInt32BoolDictionary *)otherDictionary { 4506 - (void)addEntriesFromDictionary:(GPBInt32BoolDictionary *)otherDictionary {
4480 if (otherDictionary) { 4507 if (otherDictionary) {
4481 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 4508 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
4482 if (_autocreator) { 4509 if (_autocreator) {
4483 GPBAutocreatedDictionaryModified(_autocreator, self); 4510 GPBAutocreatedDictionaryModified(_autocreator, self);
4484 } 4511 }
4485 } 4512 }
4486 } 4513 }
4487 4514
4488 - (void)setValue:(BOOL)value forKey:(int32_t)key { 4515 - (void)setBool:(BOOL)value forKey:(int32_t)key {
4489 [_dictionary setObject:@(value) forKey:@(key)]; 4516 [_dictionary setObject:@(value) forKey:@(key)];
4490 if (_autocreator) { 4517 if (_autocreator) {
4491 GPBAutocreatedDictionaryModified(_autocreator, self); 4518 GPBAutocreatedDictionaryModified(_autocreator, self);
4492 } 4519 }
4493 } 4520 }
4494 4521
4495 - (void)removeValueForKey:(int32_t)aKey { 4522 - (void)removeBoolForKey:(int32_t)aKey {
4496 [_dictionary removeObjectForKey:@(aKey)]; 4523 [_dictionary removeObjectForKey:@(aKey)];
4497 } 4524 }
4498 4525
4499 - (void)removeAll { 4526 - (void)removeAll {
4500 [_dictionary removeAllObjects]; 4527 [_dictionary removeAllObjects];
4501 } 4528 }
4502 4529
4503 @end 4530 @end
4504 4531
4505 #pragma mark - Int32 -> Float 4532 #pragma mark - Int32 -> Float
4506 4533
4507 @implementation GPBInt32FloatDictionary { 4534 @implementation GPBInt32FloatDictionary {
4508 @package 4535 @package
4509 NSMutableDictionary *_dictionary; 4536 NSMutableDictionary *_dictionary;
4510 } 4537 }
4511 4538
4512 + (instancetype)dictionary { 4539 + (instancetype)dictionary {
4513 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 4540 return [[[self alloc] initWithFloats:NULL forKeys:NULL count:0] autorelease];
4514 } 4541 }
4515 4542
4516 + (instancetype)dictionaryWithValue:(float)value 4543 + (instancetype)dictionaryWithFloat:(float)value
4517 forKey:(int32_t)key { 4544 forKey:(int32_t)key {
4518 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 4545 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
4519 // on to get the type correct. 4546 // on to get the type correct.
4520 return [[(GPBInt32FloatDictionary*)[self alloc] initWithValues:&value 4547 return [[(GPBInt32FloatDictionary*)[self alloc] initWithFloats:&value
4521 forKeys:&key 4548 forKeys:&key
4522 count:1] autorelease] ; 4549 count:1] autorelease] ;
4523 } 4550 }
4524 4551
4525 + (instancetype)dictionaryWithValues:(const float [])values 4552 + (instancetype)dictionaryWithFloats:(const float [])values
4526 forKeys:(const int32_t [])keys 4553 forKeys:(const int32_t [])keys
4527 count:(NSUInteger)count { 4554 count:(NSUInteger)count {
4528 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 4555 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
4529 // on to get the type correct. 4556 // on to get the type correct.
4530 return [[(GPBInt32FloatDictionary*)[self alloc] initWithValues:values 4557 return [[(GPBInt32FloatDictionary*)[self alloc] initWithFloats:values
4531 forKeys:keys 4558 forKeys:keys
4532 count:count] autorele ase]; 4559 count:count] autorele ase];
4533 } 4560 }
4534 4561
4535 + (instancetype)dictionaryWithDictionary:(GPBInt32FloatDictionary *)dictionary { 4562 + (instancetype)dictionaryWithDictionary:(GPBInt32FloatDictionary *)dictionary {
4536 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 4563 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
4537 // on to get the type correct. 4564 // on to get the type correct.
4538 return [[(GPBInt32FloatDictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 4565 return [[(GPBInt32FloatDictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
4539 } 4566 }
4540 4567
4541 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 4568 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
4542 return [[[self alloc] initWithCapacity:numItems] autorelease]; 4569 return [[[self alloc] initWithCapacity:numItems] autorelease];
4543 } 4570 }
4544 4571
4545 - (instancetype)init { 4572 - (instancetype)init {
4546 return [self initWithValues:NULL forKeys:NULL count:0]; 4573 return [self initWithFloats:NULL forKeys:NULL count:0];
4547 } 4574 }
4548 4575
4549 - (instancetype)initWithValues:(const float [])values 4576 - (instancetype)initWithFloats:(const float [])values
4550 forKeys:(const int32_t [])keys 4577 forKeys:(const int32_t [])keys
4551 count:(NSUInteger)count { 4578 count:(NSUInteger)count {
4552 self = [super init]; 4579 self = [super init];
4553 if (self) { 4580 if (self) {
4554 _dictionary = [[NSMutableDictionary alloc] init]; 4581 _dictionary = [[NSMutableDictionary alloc] init];
4555 if (count && values && keys) { 4582 if (count && values && keys) {
4556 for (NSUInteger i = 0; i < count; ++i) { 4583 for (NSUInteger i = 0; i < count; ++i) {
4557 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 4584 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
4558 } 4585 }
4559 } 4586 }
4560 } 4587 }
4561 return self; 4588 return self;
4562 } 4589 }
4563 4590
4564 - (instancetype)initWithDictionary:(GPBInt32FloatDictionary *)dictionary { 4591 - (instancetype)initWithDictionary:(GPBInt32FloatDictionary *)dictionary {
4565 self = [self initWithValues:NULL forKeys:NULL count:0]; 4592 self = [self initWithFloats:NULL forKeys:NULL count:0];
4566 if (self) { 4593 if (self) {
4567 if (dictionary) { 4594 if (dictionary) {
4568 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 4595 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
4569 } 4596 }
4570 } 4597 }
4571 return self; 4598 return self;
4572 } 4599 }
4573 4600
4574 - (instancetype)initWithCapacity:(NSUInteger)numItems { 4601 - (instancetype)initWithCapacity:(NSUInteger)numItems {
4575 #pragma unused(numItems) 4602 #pragma unused(numItems)
4576 return [self initWithValues:NULL forKeys:NULL count:0]; 4603 return [self initWithFloats:NULL forKeys:NULL count:0];
4577 } 4604 }
4578 4605
4579 - (void)dealloc { 4606 - (void)dealloc {
4580 NSAssert(!_autocreator, 4607 NSAssert(!_autocreator,
4581 @"%@: Autocreator must be cleared before release, autocreator: %@", 4608 @"%@: Autocreator must be cleared before release, autocreator: %@",
4582 [self class], _autocreator); 4609 [self class], _autocreator);
4583 [_dictionary release]; 4610 [_dictionary release];
4584 [super dealloc]; 4611 [super dealloc];
4585 } 4612 }
4586 4613
4587 - (instancetype)copyWithZone:(NSZone *)zone { 4614 - (instancetype)copyWithZone:(NSZone *)zone {
4588 return [[GPBInt32FloatDictionary allocWithZone:zone] initWithDictionary:self]; 4615 return [[GPBInt32FloatDictionary allocWithZone:zone] initWithDictionary:self];
4589 } 4616 }
4590 4617
4591 - (BOOL)isEqual:(GPBInt32FloatDictionary *)other { 4618 - (BOOL)isEqual:(id)other {
4592 if (self == other) { 4619 if (self == other) {
4593 return YES; 4620 return YES;
4594 } 4621 }
4595 if (![other isKindOfClass:[GPBInt32FloatDictionary class]]) { 4622 if (![other isKindOfClass:[GPBInt32FloatDictionary class]]) {
4596 return NO; 4623 return NO;
4597 } 4624 }
4598 return [_dictionary isEqual:other->_dictionary]; 4625 GPBInt32FloatDictionary *otherDictionary = other;
4626 return [_dictionary isEqual:otherDictionary->_dictionary];
4599 } 4627 }
4600 4628
4601 - (NSUInteger)hash { 4629 - (NSUInteger)hash {
4602 return _dictionary.count; 4630 return _dictionary.count;
4603 } 4631 }
4604 4632
4605 - (NSString *)description { 4633 - (NSString *)description {
4606 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 4634 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
4607 } 4635 }
4608 4636
4609 - (NSUInteger)count { 4637 - (NSUInteger)count {
4610 return _dictionary.count; 4638 return _dictionary.count;
4611 } 4639 }
4612 4640
4613 - (void)enumerateKeysAndValuesUsingBlock: 4641 - (void)enumerateKeysAndFloatsUsingBlock:
4614 (void (^)(int32_t key, float value, BOOL *stop))block { 4642 (void (^)(int32_t key, float value, BOOL *stop))block {
4615 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 4643 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
4616 NSNumber *aValue, 4644 NSNumber *aValue,
4617 BOOL *stop) { 4645 BOOL *stop) {
4618 block([aKey intValue], [aValue floatValue], stop); 4646 block([aKey intValue], [aValue floatValue], stop);
4619 }]; 4647 }];
4620 } 4648 }
4621 4649
4622 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 4650 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
4623 NSUInteger count = _dictionary.count; 4651 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
4661 WriteDictFloatField(outputStream, [aValue floatValue], kMapValueFieldNumber, valueDataType); 4689 WriteDictFloatField(outputStream, [aValue floatValue], kMapValueFieldNumber, valueDataType);
4662 }]; 4690 }];
4663 } 4691 }
4664 4692
4665 - (void)setGPBGenericValue:(GPBGenericValue *)value 4693 - (void)setGPBGenericValue:(GPBGenericValue *)value
4666 forGPBGenericValueKey:(GPBGenericValue *)key { 4694 forGPBGenericValueKey:(GPBGenericValue *)key {
4667 [_dictionary setObject:@(value->valueFloat) forKey:@(key->valueInt32)]; 4695 [_dictionary setObject:@(value->valueFloat) forKey:@(key->valueInt32)];
4668 } 4696 }
4669 4697
4670 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 4698 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
4671 [self enumerateKeysAndValuesUsingBlock:^(int32_t key, float value, BOOL *stop) { 4699 [self enumerateKeysAndFloatsUsingBlock:^(int32_t key, float value, BOOL *stop) {
4672 #pragma unused(stop) 4700 #pragma unused(stop)
4673 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%.*g", FLT_DIG, value]); 4701 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%.*g", FLT_DIG, value]);
4674 }]; 4702 }];
4675 } 4703 }
4676 4704
4677 - (BOOL)valueForKey:(int32_t)key value:(float *)value { 4705 - (BOOL)getFloat:(nullable float *)value forKey:(int32_t)key {
4678 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 4706 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
4679 if (wrapped && value) { 4707 if (wrapped && value) {
4680 *value = [wrapped floatValue]; 4708 *value = [wrapped floatValue];
4681 } 4709 }
4682 return (wrapped != NULL); 4710 return (wrapped != NULL);
4683 } 4711 }
4684 4712
4685 - (void)addEntriesFromDictionary:(GPBInt32FloatDictionary *)otherDictionary { 4713 - (void)addEntriesFromDictionary:(GPBInt32FloatDictionary *)otherDictionary {
4686 if (otherDictionary) { 4714 if (otherDictionary) {
4687 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 4715 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
4688 if (_autocreator) { 4716 if (_autocreator) {
4689 GPBAutocreatedDictionaryModified(_autocreator, self); 4717 GPBAutocreatedDictionaryModified(_autocreator, self);
4690 } 4718 }
4691 } 4719 }
4692 } 4720 }
4693 4721
4694 - (void)setValue:(float)value forKey:(int32_t)key { 4722 - (void)setFloat:(float)value forKey:(int32_t)key {
4695 [_dictionary setObject:@(value) forKey:@(key)]; 4723 [_dictionary setObject:@(value) forKey:@(key)];
4696 if (_autocreator) { 4724 if (_autocreator) {
4697 GPBAutocreatedDictionaryModified(_autocreator, self); 4725 GPBAutocreatedDictionaryModified(_autocreator, self);
4698 } 4726 }
4699 } 4727 }
4700 4728
4701 - (void)removeValueForKey:(int32_t)aKey { 4729 - (void)removeFloatForKey:(int32_t)aKey {
4702 [_dictionary removeObjectForKey:@(aKey)]; 4730 [_dictionary removeObjectForKey:@(aKey)];
4703 } 4731 }
4704 4732
4705 - (void)removeAll { 4733 - (void)removeAll {
4706 [_dictionary removeAllObjects]; 4734 [_dictionary removeAllObjects];
4707 } 4735 }
4708 4736
4709 @end 4737 @end
4710 4738
4711 #pragma mark - Int32 -> Double 4739 #pragma mark - Int32 -> Double
4712 4740
4713 @implementation GPBInt32DoubleDictionary { 4741 @implementation GPBInt32DoubleDictionary {
4714 @package 4742 @package
4715 NSMutableDictionary *_dictionary; 4743 NSMutableDictionary *_dictionary;
4716 } 4744 }
4717 4745
4718 + (instancetype)dictionary { 4746 + (instancetype)dictionary {
4719 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 4747 return [[[self alloc] initWithDoubles:NULL forKeys:NULL count:0] autorelease];
4720 } 4748 }
4721 4749
4722 + (instancetype)dictionaryWithValue:(double)value 4750 + (instancetype)dictionaryWithDouble:(double)value
4723 forKey:(int32_t)key { 4751 forKey:(int32_t)key {
4724 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 4752 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
4725 // on to get the type correct. 4753 // on to get the type correct.
4726 return [[(GPBInt32DoubleDictionary*)[self alloc] initWithValues:&value 4754 return [[(GPBInt32DoubleDictionary*)[self alloc] initWithDoubles:&value
4727 forKeys:&key 4755 forKeys:&key
4728 count:1] autorelease ]; 4756 count:1] autoreleas e];
4729 } 4757 }
4730 4758
4731 + (instancetype)dictionaryWithValues:(const double [])values 4759 + (instancetype)dictionaryWithDoubles:(const double [])values
4732 forKeys:(const int32_t [])keys 4760 forKeys:(const int32_t [])keys
4733 count:(NSUInteger)count { 4761 count:(NSUInteger)count {
4734 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 4762 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
4735 // on to get the type correct. 4763 // on to get the type correct.
4736 return [[(GPBInt32DoubleDictionary*)[self alloc] initWithValues:values 4764 return [[(GPBInt32DoubleDictionary*)[self alloc] initWithDoubles:values
4737 forKeys:keys 4765 forKeys:keys
4738 count:count] autorel ease]; 4766 count:count] autorel ease];
4739 } 4767 }
4740 4768
4741 + (instancetype)dictionaryWithDictionary:(GPBInt32DoubleDictionary *)dictionary { 4769 + (instancetype)dictionaryWithDictionary:(GPBInt32DoubleDictionary *)dictionary {
4742 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 4770 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
4743 // on to get the type correct. 4771 // on to get the type correct.
4744 return [[(GPBInt32DoubleDictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 4772 return [[(GPBInt32DoubleDictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
4745 } 4773 }
4746 4774
4747 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 4775 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
4748 return [[[self alloc] initWithCapacity:numItems] autorelease]; 4776 return [[[self alloc] initWithCapacity:numItems] autorelease];
4749 } 4777 }
4750 4778
4751 - (instancetype)init { 4779 - (instancetype)init {
4752 return [self initWithValues:NULL forKeys:NULL count:0]; 4780 return [self initWithDoubles:NULL forKeys:NULL count:0];
4753 } 4781 }
4754 4782
4755 - (instancetype)initWithValues:(const double [])values 4783 - (instancetype)initWithDoubles:(const double [])values
4756 forKeys:(const int32_t [])keys 4784 forKeys:(const int32_t [])keys
4757 count:(NSUInteger)count { 4785 count:(NSUInteger)count {
4758 self = [super init]; 4786 self = [super init];
4759 if (self) { 4787 if (self) {
4760 _dictionary = [[NSMutableDictionary alloc] init]; 4788 _dictionary = [[NSMutableDictionary alloc] init];
4761 if (count && values && keys) { 4789 if (count && values && keys) {
4762 for (NSUInteger i = 0; i < count; ++i) { 4790 for (NSUInteger i = 0; i < count; ++i) {
4763 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 4791 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
4764 } 4792 }
4765 } 4793 }
4766 } 4794 }
4767 return self; 4795 return self;
4768 } 4796 }
4769 4797
4770 - (instancetype)initWithDictionary:(GPBInt32DoubleDictionary *)dictionary { 4798 - (instancetype)initWithDictionary:(GPBInt32DoubleDictionary *)dictionary {
4771 self = [self initWithValues:NULL forKeys:NULL count:0]; 4799 self = [self initWithDoubles:NULL forKeys:NULL count:0];
4772 if (self) { 4800 if (self) {
4773 if (dictionary) { 4801 if (dictionary) {
4774 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 4802 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
4775 } 4803 }
4776 } 4804 }
4777 return self; 4805 return self;
4778 } 4806 }
4779 4807
4780 - (instancetype)initWithCapacity:(NSUInteger)numItems { 4808 - (instancetype)initWithCapacity:(NSUInteger)numItems {
4781 #pragma unused(numItems) 4809 #pragma unused(numItems)
4782 return [self initWithValues:NULL forKeys:NULL count:0]; 4810 return [self initWithDoubles:NULL forKeys:NULL count:0];
4783 } 4811 }
4784 4812
4785 - (void)dealloc { 4813 - (void)dealloc {
4786 NSAssert(!_autocreator, 4814 NSAssert(!_autocreator,
4787 @"%@: Autocreator must be cleared before release, autocreator: %@", 4815 @"%@: Autocreator must be cleared before release, autocreator: %@",
4788 [self class], _autocreator); 4816 [self class], _autocreator);
4789 [_dictionary release]; 4817 [_dictionary release];
4790 [super dealloc]; 4818 [super dealloc];
4791 } 4819 }
4792 4820
4793 - (instancetype)copyWithZone:(NSZone *)zone { 4821 - (instancetype)copyWithZone:(NSZone *)zone {
4794 return [[GPBInt32DoubleDictionary allocWithZone:zone] initWithDictionary:self] ; 4822 return [[GPBInt32DoubleDictionary allocWithZone:zone] initWithDictionary:self] ;
4795 } 4823 }
4796 4824
4797 - (BOOL)isEqual:(GPBInt32DoubleDictionary *)other { 4825 - (BOOL)isEqual:(id)other {
4798 if (self == other) { 4826 if (self == other) {
4799 return YES; 4827 return YES;
4800 } 4828 }
4801 if (![other isKindOfClass:[GPBInt32DoubleDictionary class]]) { 4829 if (![other isKindOfClass:[GPBInt32DoubleDictionary class]]) {
4802 return NO; 4830 return NO;
4803 } 4831 }
4804 return [_dictionary isEqual:other->_dictionary]; 4832 GPBInt32DoubleDictionary *otherDictionary = other;
4833 return [_dictionary isEqual:otherDictionary->_dictionary];
4805 } 4834 }
4806 4835
4807 - (NSUInteger)hash { 4836 - (NSUInteger)hash {
4808 return _dictionary.count; 4837 return _dictionary.count;
4809 } 4838 }
4810 4839
4811 - (NSString *)description { 4840 - (NSString *)description {
4812 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 4841 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
4813 } 4842 }
4814 4843
4815 - (NSUInteger)count { 4844 - (NSUInteger)count {
4816 return _dictionary.count; 4845 return _dictionary.count;
4817 } 4846 }
4818 4847
4819 - (void)enumerateKeysAndValuesUsingBlock: 4848 - (void)enumerateKeysAndDoublesUsingBlock:
4820 (void (^)(int32_t key, double value, BOOL *stop))block { 4849 (void (^)(int32_t key, double value, BOOL *stop))block {
4821 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 4850 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
4822 NSNumber *aValue, 4851 NSNumber *aValue,
4823 BOOL *stop) { 4852 BOOL *stop) {
4824 block([aKey intValue], [aValue doubleValue], stop); 4853 block([aKey intValue], [aValue doubleValue], stop);
4825 }]; 4854 }];
4826 } 4855 }
4827 4856
4828 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 4857 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
4829 NSUInteger count = _dictionary.count; 4858 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
4867 WriteDictDoubleField(outputStream, [aValue doubleValue], kMapValueFieldNumbe r, valueDataType); 4896 WriteDictDoubleField(outputStream, [aValue doubleValue], kMapValueFieldNumbe r, valueDataType);
4868 }]; 4897 }];
4869 } 4898 }
4870 4899
4871 - (void)setGPBGenericValue:(GPBGenericValue *)value 4900 - (void)setGPBGenericValue:(GPBGenericValue *)value
4872 forGPBGenericValueKey:(GPBGenericValue *)key { 4901 forGPBGenericValueKey:(GPBGenericValue *)key {
4873 [_dictionary setObject:@(value->valueDouble) forKey:@(key->valueInt32)]; 4902 [_dictionary setObject:@(value->valueDouble) forKey:@(key->valueInt32)];
4874 } 4903 }
4875 4904
4876 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 4905 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
4877 [self enumerateKeysAndValuesUsingBlock:^(int32_t key, double value, BOOL *stop ) { 4906 [self enumerateKeysAndDoublesUsingBlock:^(int32_t key, double value, BOOL *sto p) {
4878 #pragma unused(stop) 4907 #pragma unused(stop)
4879 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%.*lg", DBL_DIG, value]); 4908 block([NSString stringWithFormat:@"%d", key], [NSString stringWithFormat:@ "%.*lg", DBL_DIG, value]);
4880 }]; 4909 }];
4881 } 4910 }
4882 4911
4883 - (BOOL)valueForKey:(int32_t)key value:(double *)value { 4912 - (BOOL)getDouble:(nullable double *)value forKey:(int32_t)key {
4884 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 4913 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
4885 if (wrapped && value) { 4914 if (wrapped && value) {
4886 *value = [wrapped doubleValue]; 4915 *value = [wrapped doubleValue];
4887 } 4916 }
4888 return (wrapped != NULL); 4917 return (wrapped != NULL);
4889 } 4918 }
4890 4919
4891 - (void)addEntriesFromDictionary:(GPBInt32DoubleDictionary *)otherDictionary { 4920 - (void)addEntriesFromDictionary:(GPBInt32DoubleDictionary *)otherDictionary {
4892 if (otherDictionary) { 4921 if (otherDictionary) {
4893 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 4922 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
4894 if (_autocreator) { 4923 if (_autocreator) {
4895 GPBAutocreatedDictionaryModified(_autocreator, self); 4924 GPBAutocreatedDictionaryModified(_autocreator, self);
4896 } 4925 }
4897 } 4926 }
4898 } 4927 }
4899 4928
4900 - (void)setValue:(double)value forKey:(int32_t)key { 4929 - (void)setDouble:(double)value forKey:(int32_t)key {
4901 [_dictionary setObject:@(value) forKey:@(key)]; 4930 [_dictionary setObject:@(value) forKey:@(key)];
4902 if (_autocreator) { 4931 if (_autocreator) {
4903 GPBAutocreatedDictionaryModified(_autocreator, self); 4932 GPBAutocreatedDictionaryModified(_autocreator, self);
4904 } 4933 }
4905 } 4934 }
4906 4935
4907 - (void)removeValueForKey:(int32_t)aKey { 4936 - (void)removeDoubleForKey:(int32_t)aKey {
4908 [_dictionary removeObjectForKey:@(aKey)]; 4937 [_dictionary removeObjectForKey:@(aKey)];
4909 } 4938 }
4910 4939
4911 - (void)removeAll { 4940 - (void)removeAll {
4912 [_dictionary removeAllObjects]; 4941 [_dictionary removeAllObjects];
4913 } 4942 }
4914 4943
4915 @end 4944 @end
4916 4945
4917 #pragma mark - Int32 -> Enum 4946 #pragma mark - Int32 -> Enum
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
5021 @"%@: Autocreator must be cleared before release, autocreator: %@", 5050 @"%@: Autocreator must be cleared before release, autocreator: %@",
5022 [self class], _autocreator); 5051 [self class], _autocreator);
5023 [_dictionary release]; 5052 [_dictionary release];
5024 [super dealloc]; 5053 [super dealloc];
5025 } 5054 }
5026 5055
5027 - (instancetype)copyWithZone:(NSZone *)zone { 5056 - (instancetype)copyWithZone:(NSZone *)zone {
5028 return [[GPBInt32EnumDictionary allocWithZone:zone] initWithDictionary:self]; 5057 return [[GPBInt32EnumDictionary allocWithZone:zone] initWithDictionary:self];
5029 } 5058 }
5030 5059
5031 - (BOOL)isEqual:(GPBInt32EnumDictionary *)other { 5060 - (BOOL)isEqual:(id)other {
5032 if (self == other) { 5061 if (self == other) {
5033 return YES; 5062 return YES;
5034 } 5063 }
5035 if (![other isKindOfClass:[GPBInt32EnumDictionary class]]) { 5064 if (![other isKindOfClass:[GPBInt32EnumDictionary class]]) {
5036 return NO; 5065 return NO;
5037 } 5066 }
5038 return [_dictionary isEqual:other->_dictionary]; 5067 GPBInt32EnumDictionary *otherDictionary = other;
5068 return [_dictionary isEqual:otherDictionary->_dictionary];
5039 } 5069 }
5040 5070
5041 - (NSUInteger)hash { 5071 - (NSUInteger)hash {
5042 return _dictionary.count; 5072 return _dictionary.count;
5043 } 5073 }
5044 5074
5045 - (NSString *)description { 5075 - (NSString *)description {
5046 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 5076 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
5047 } 5077 }
5048 5078
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
5119 [_dictionary setObject:@(value->valueEnum) forKey:@(key->valueInt32)]; 5149 [_dictionary setObject:@(value->valueEnum) forKey:@(key->valueInt32)];
5120 } 5150 }
5121 5151
5122 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 5152 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
5123 [self enumerateKeysAndRawValuesUsingBlock:^(int32_t key, int32_t value, BOOL * stop) { 5153 [self enumerateKeysAndRawValuesUsingBlock:^(int32_t key, int32_t value, BOOL * stop) {
5124 #pragma unused(stop) 5154 #pragma unused(stop)
5125 block([NSString stringWithFormat:@"%d", key], @(value)); 5155 block([NSString stringWithFormat:@"%d", key], @(value));
5126 }]; 5156 }];
5127 } 5157 }
5128 5158
5129 - (BOOL)valueForKey:(int32_t)key value:(int32_t *)value { 5159 - (BOOL)getEnum:(int32_t *)value forKey:(int32_t)key {
5130 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 5160 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
5131 if (wrapped && value) { 5161 if (wrapped && value) {
5132 int32_t result = [wrapped intValue]; 5162 int32_t result = [wrapped intValue];
5133 if (!_validationFunc(result)) { 5163 if (!_validationFunc(result)) {
5134 result = kGPBUnrecognizedEnumeratorValue; 5164 result = kGPBUnrecognizedEnumeratorValue;
5135 } 5165 }
5136 *value = result; 5166 *value = result;
5137 } 5167 }
5138 return (wrapped != NULL); 5168 return (wrapped != NULL);
5139 } 5169 }
5140 5170
5141 - (BOOL)valueForKey:(int32_t)key rawValue:(int32_t *)rawValue { 5171 - (BOOL)getRawValue:(int32_t *)rawValue forKey:(int32_t)key {
5142 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 5172 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
5143 if (wrapped && rawValue) { 5173 if (wrapped && rawValue) {
5144 *rawValue = [wrapped intValue]; 5174 *rawValue = [wrapped intValue];
5145 } 5175 }
5146 return (wrapped != NULL); 5176 return (wrapped != NULL);
5147 } 5177 }
5148 5178
5149 - (void)enumerateKeysAndValuesUsingBlock: 5179 - (void)enumerateKeysAndEnumsUsingBlock:
5150 (void (^)(int32_t key, int32_t value, BOOL *stop))block { 5180 (void (^)(int32_t key, int32_t value, BOOL *stop))block {
5151 GPBEnumValidationFunc func = _validationFunc; 5181 GPBEnumValidationFunc func = _validationFunc;
5152 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 5182 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
5153 NSNumber *aValue, 5183 NSNumber *aValue,
5154 BOOL *stop) { 5184 BOOL *stop) {
5155 int32_t unwrapped = [aValue intValue]; 5185 int32_t unwrapped = [aValue intValue];
5156 if (!func(unwrapped)) { 5186 if (!func(unwrapped)) {
5157 unwrapped = kGPBUnrecognizedEnumeratorValue; 5187 unwrapped = kGPBUnrecognizedEnumeratorValue;
5158 } 5188 }
5159 block([aKey intValue], unwrapped, stop); 5189 block([aKey intValue], unwrapped, stop);
5160 }]; 5190 }];
5161 } 5191 }
5162 5192
5163 - (void)addRawEntriesFromDictionary:(GPBInt32EnumDictionary *)otherDictionary { 5193 - (void)addRawEntriesFromDictionary:(GPBInt32EnumDictionary *)otherDictionary {
5164 if (otherDictionary) { 5194 if (otherDictionary) {
5165 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 5195 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
5166 if (_autocreator) { 5196 if (_autocreator) {
5167 GPBAutocreatedDictionaryModified(_autocreator, self); 5197 GPBAutocreatedDictionaryModified(_autocreator, self);
5168 } 5198 }
5169 } 5199 }
5170 } 5200 }
5171 5201
5172 - (void)setRawValue:(int32_t)value forKey:(int32_t)key { 5202 - (void)setRawValue:(int32_t)value forKey:(int32_t)key {
5173 [_dictionary setObject:@(value) forKey:@(key)]; 5203 [_dictionary setObject:@(value) forKey:@(key)];
5174 if (_autocreator) { 5204 if (_autocreator) {
5175 GPBAutocreatedDictionaryModified(_autocreator, self); 5205 GPBAutocreatedDictionaryModified(_autocreator, self);
5176 } 5206 }
5177 } 5207 }
5178 5208
5179 - (void)removeValueForKey:(int32_t)aKey { 5209 - (void)removeEnumForKey:(int32_t)aKey {
5180 [_dictionary removeObjectForKey:@(aKey)]; 5210 [_dictionary removeObjectForKey:@(aKey)];
5181 } 5211 }
5182 5212
5183 - (void)removeAll { 5213 - (void)removeAll {
5184 [_dictionary removeAllObjects]; 5214 [_dictionary removeAllObjects];
5185 } 5215 }
5186 5216
5187 - (void)setValue:(int32_t)value forKey:(int32_t)key { 5217 - (void)setEnum:(int32_t)value forKey:(int32_t)key {
5188 if (!_validationFunc(value)) { 5218 if (!_validationFunc(value)) {
5189 [NSException raise:NSInvalidArgumentException 5219 [NSException raise:NSInvalidArgumentException
5190 format:@"GPBInt32EnumDictionary: Attempt to set an unknown enum value (%d)", 5220 format:@"GPBInt32EnumDictionary: Attempt to set an unknown enum value (%d)",
5191 value]; 5221 value];
5192 } 5222 }
5193 5223
5194 [_dictionary setObject:@(value) forKey:@(key)]; 5224 [_dictionary setObject:@(value) forKey:@(key)];
5195 if (_autocreator) { 5225 if (_autocreator) {
5196 GPBAutocreatedDictionaryModified(_autocreator, self); 5226 GPBAutocreatedDictionaryModified(_autocreator, self);
5197 } 5227 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
5282 @"%@: Autocreator must be cleared before release, autocreator: %@", 5312 @"%@: Autocreator must be cleared before release, autocreator: %@",
5283 [self class], _autocreator); 5313 [self class], _autocreator);
5284 [_dictionary release]; 5314 [_dictionary release];
5285 [super dealloc]; 5315 [super dealloc];
5286 } 5316 }
5287 5317
5288 - (instancetype)copyWithZone:(NSZone *)zone { 5318 - (instancetype)copyWithZone:(NSZone *)zone {
5289 return [[GPBInt32ObjectDictionary allocWithZone:zone] initWithDictionary:self] ; 5319 return [[GPBInt32ObjectDictionary allocWithZone:zone] initWithDictionary:self] ;
5290 } 5320 }
5291 5321
5292 - (BOOL)isEqual:(GPBInt32ObjectDictionary *)other { 5322 - (BOOL)isEqual:(id)other {
5293 if (self == other) { 5323 if (self == other) {
5294 return YES; 5324 return YES;
5295 } 5325 }
5296 if (![other isKindOfClass:[GPBInt32ObjectDictionary class]]) { 5326 if (![other isKindOfClass:[GPBInt32ObjectDictionary class]]) {
5297 return NO; 5327 return NO;
5298 } 5328 }
5299 return [_dictionary isEqual:other->_dictionary]; 5329 GPBInt32ObjectDictionary *otherDictionary = other;
5330 return [_dictionary isEqual:otherDictionary->_dictionary];
5300 } 5331 }
5301 5332
5302 - (NSUInteger)hash { 5333 - (NSUInteger)hash {
5303 return _dictionary.count; 5334 return _dictionary.count;
5304 } 5335 }
5305 5336
5306 - (NSString *)description { 5337 - (NSString *)description {
5307 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 5338 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
5308 } 5339 }
5309 5340
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
5437 // This block of code is generated, do not edit it directly. 5468 // This block of code is generated, do not edit it directly.
5438 5469
5439 #pragma mark - UInt64 -> UInt32 5470 #pragma mark - UInt64 -> UInt32
5440 5471
5441 @implementation GPBUInt64UInt32Dictionary { 5472 @implementation GPBUInt64UInt32Dictionary {
5442 @package 5473 @package
5443 NSMutableDictionary *_dictionary; 5474 NSMutableDictionary *_dictionary;
5444 } 5475 }
5445 5476
5446 + (instancetype)dictionary { 5477 + (instancetype)dictionary {
5447 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 5478 return [[[self alloc] initWithUInt32s:NULL forKeys:NULL count:0] autorelease];
5448 } 5479 }
5449 5480
5450 + (instancetype)dictionaryWithValue:(uint32_t)value 5481 + (instancetype)dictionaryWithUInt32:(uint32_t)value
5451 forKey:(uint64_t)key { 5482 forKey:(uint64_t)key {
5452 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 5483 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
5453 // on to get the type correct. 5484 // on to get the type correct.
5454 return [[(GPBUInt64UInt32Dictionary*)[self alloc] initWithValues:&value 5485 return [[(GPBUInt64UInt32Dictionary*)[self alloc] initWithUInt32s:&value
5455 forKeys:&key 5486 forKeys:&key
5456 count:1] autoreleas e]; 5487 count:1] autorelea se];
5457 } 5488 }
5458 5489
5459 + (instancetype)dictionaryWithValues:(const uint32_t [])values 5490 + (instancetype)dictionaryWithUInt32s:(const uint32_t [])values
5460 forKeys:(const uint64_t [])keys 5491 forKeys:(const uint64_t [])keys
5461 count:(NSUInteger)count { 5492 count:(NSUInteger)count {
5462 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 5493 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
5463 // on to get the type correct. 5494 // on to get the type correct.
5464 return [[(GPBUInt64UInt32Dictionary*)[self alloc] initWithValues:values 5495 return [[(GPBUInt64UInt32Dictionary*)[self alloc] initWithUInt32s:values
5465 forKeys:keys 5496 forKeys:keys
5466 count:count] autore lease]; 5497 count:count] autore lease];
5467 } 5498 }
5468 5499
5469 + (instancetype)dictionaryWithDictionary:(GPBUInt64UInt32Dictionary *)dictionary { 5500 + (instancetype)dictionaryWithDictionary:(GPBUInt64UInt32Dictionary *)dictionary {
5470 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 5501 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
5471 // on to get the type correct. 5502 // on to get the type correct.
5472 return [[(GPBUInt64UInt32Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease]; 5503 return [[(GPBUInt64UInt32Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease];
5473 } 5504 }
5474 5505
5475 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 5506 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
5476 return [[[self alloc] initWithCapacity:numItems] autorelease]; 5507 return [[[self alloc] initWithCapacity:numItems] autorelease];
5477 } 5508 }
5478 5509
5479 - (instancetype)init { 5510 - (instancetype)init {
5480 return [self initWithValues:NULL forKeys:NULL count:0]; 5511 return [self initWithUInt32s:NULL forKeys:NULL count:0];
5481 } 5512 }
5482 5513
5483 - (instancetype)initWithValues:(const uint32_t [])values 5514 - (instancetype)initWithUInt32s:(const uint32_t [])values
5484 forKeys:(const uint64_t [])keys 5515 forKeys:(const uint64_t [])keys
5485 count:(NSUInteger)count { 5516 count:(NSUInteger)count {
5486 self = [super init]; 5517 self = [super init];
5487 if (self) { 5518 if (self) {
5488 _dictionary = [[NSMutableDictionary alloc] init]; 5519 _dictionary = [[NSMutableDictionary alloc] init];
5489 if (count && values && keys) { 5520 if (count && values && keys) {
5490 for (NSUInteger i = 0; i < count; ++i) { 5521 for (NSUInteger i = 0; i < count; ++i) {
5491 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 5522 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
5492 } 5523 }
5493 } 5524 }
5494 } 5525 }
5495 return self; 5526 return self;
5496 } 5527 }
5497 5528
5498 - (instancetype)initWithDictionary:(GPBUInt64UInt32Dictionary *)dictionary { 5529 - (instancetype)initWithDictionary:(GPBUInt64UInt32Dictionary *)dictionary {
5499 self = [self initWithValues:NULL forKeys:NULL count:0]; 5530 self = [self initWithUInt32s:NULL forKeys:NULL count:0];
5500 if (self) { 5531 if (self) {
5501 if (dictionary) { 5532 if (dictionary) {
5502 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 5533 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
5503 } 5534 }
5504 } 5535 }
5505 return self; 5536 return self;
5506 } 5537 }
5507 5538
5508 - (instancetype)initWithCapacity:(NSUInteger)numItems { 5539 - (instancetype)initWithCapacity:(NSUInteger)numItems {
5509 #pragma unused(numItems) 5540 #pragma unused(numItems)
5510 return [self initWithValues:NULL forKeys:NULL count:0]; 5541 return [self initWithUInt32s:NULL forKeys:NULL count:0];
5511 } 5542 }
5512 5543
5513 - (void)dealloc { 5544 - (void)dealloc {
5514 NSAssert(!_autocreator, 5545 NSAssert(!_autocreator,
5515 @"%@: Autocreator must be cleared before release, autocreator: %@", 5546 @"%@: Autocreator must be cleared before release, autocreator: %@",
5516 [self class], _autocreator); 5547 [self class], _autocreator);
5517 [_dictionary release]; 5548 [_dictionary release];
5518 [super dealloc]; 5549 [super dealloc];
5519 } 5550 }
5520 5551
5521 - (instancetype)copyWithZone:(NSZone *)zone { 5552 - (instancetype)copyWithZone:(NSZone *)zone {
5522 return [[GPBUInt64UInt32Dictionary allocWithZone:zone] initWithDictionary:self ]; 5553 return [[GPBUInt64UInt32Dictionary allocWithZone:zone] initWithDictionary:self ];
5523 } 5554 }
5524 5555
5525 - (BOOL)isEqual:(GPBUInt64UInt32Dictionary *)other { 5556 - (BOOL)isEqual:(id)other {
5526 if (self == other) { 5557 if (self == other) {
5527 return YES; 5558 return YES;
5528 } 5559 }
5529 if (![other isKindOfClass:[GPBUInt64UInt32Dictionary class]]) { 5560 if (![other isKindOfClass:[GPBUInt64UInt32Dictionary class]]) {
5530 return NO; 5561 return NO;
5531 } 5562 }
5532 return [_dictionary isEqual:other->_dictionary]; 5563 GPBUInt64UInt32Dictionary *otherDictionary = other;
5564 return [_dictionary isEqual:otherDictionary->_dictionary];
5533 } 5565 }
5534 5566
5535 - (NSUInteger)hash { 5567 - (NSUInteger)hash {
5536 return _dictionary.count; 5568 return _dictionary.count;
5537 } 5569 }
5538 5570
5539 - (NSString *)description { 5571 - (NSString *)description {
5540 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 5572 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
5541 } 5573 }
5542 5574
5543 - (NSUInteger)count { 5575 - (NSUInteger)count {
5544 return _dictionary.count; 5576 return _dictionary.count;
5545 } 5577 }
5546 5578
5547 - (void)enumerateKeysAndValuesUsingBlock: 5579 - (void)enumerateKeysAndUInt32sUsingBlock:
5548 (void (^)(uint64_t key, uint32_t value, BOOL *stop))block { 5580 (void (^)(uint64_t key, uint32_t value, BOOL *stop))block {
5549 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 5581 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
5550 NSNumber *aValue, 5582 NSNumber *aValue,
5551 BOOL *stop) { 5583 BOOL *stop) {
5552 block([aKey unsignedLongLongValue], [aValue unsignedIntValue], stop); 5584 block([aKey unsignedLongLongValue], [aValue unsignedIntValue], stop);
5553 }]; 5585 }];
5554 } 5586 }
5555 5587
5556 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 5588 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
5557 NSUInteger count = _dictionary.count; 5589 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
5595 WriteDictUInt32Field(outputStream, [aValue unsignedIntValue], kMapValueField Number, valueDataType); 5627 WriteDictUInt32Field(outputStream, [aValue unsignedIntValue], kMapValueField Number, valueDataType);
5596 }]; 5628 }];
5597 } 5629 }
5598 5630
5599 - (void)setGPBGenericValue:(GPBGenericValue *)value 5631 - (void)setGPBGenericValue:(GPBGenericValue *)value
5600 forGPBGenericValueKey:(GPBGenericValue *)key { 5632 forGPBGenericValueKey:(GPBGenericValue *)key {
5601 [_dictionary setObject:@(value->valueUInt32) forKey:@(key->valueUInt64)]; 5633 [_dictionary setObject:@(value->valueUInt32) forKey:@(key->valueUInt64)];
5602 } 5634 }
5603 5635
5604 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 5636 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
5605 [self enumerateKeysAndValuesUsingBlock:^(uint64_t key, uint32_t value, BOOL *s top) { 5637 [self enumerateKeysAndUInt32sUsingBlock:^(uint64_t key, uint32_t value, BOOL * stop) {
5606 #pragma unused(stop) 5638 #pragma unused(stop)
5607 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%u", value]); 5639 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%u", value]);
5608 }]; 5640 }];
5609 } 5641 }
5610 5642
5611 - (BOOL)valueForKey:(uint64_t)key value:(uint32_t *)value { 5643 - (BOOL)getUInt32:(nullable uint32_t *)value forKey:(uint64_t)key {
5612 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 5644 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
5613 if (wrapped && value) { 5645 if (wrapped && value) {
5614 *value = [wrapped unsignedIntValue]; 5646 *value = [wrapped unsignedIntValue];
5615 } 5647 }
5616 return (wrapped != NULL); 5648 return (wrapped != NULL);
5617 } 5649 }
5618 5650
5619 - (void)addEntriesFromDictionary:(GPBUInt64UInt32Dictionary *)otherDictionary { 5651 - (void)addEntriesFromDictionary:(GPBUInt64UInt32Dictionary *)otherDictionary {
5620 if (otherDictionary) { 5652 if (otherDictionary) {
5621 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 5653 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
5622 if (_autocreator) { 5654 if (_autocreator) {
5623 GPBAutocreatedDictionaryModified(_autocreator, self); 5655 GPBAutocreatedDictionaryModified(_autocreator, self);
5624 } 5656 }
5625 } 5657 }
5626 } 5658 }
5627 5659
5628 - (void)setValue:(uint32_t)value forKey:(uint64_t)key { 5660 - (void)setUInt32:(uint32_t)value forKey:(uint64_t)key {
5629 [_dictionary setObject:@(value) forKey:@(key)]; 5661 [_dictionary setObject:@(value) forKey:@(key)];
5630 if (_autocreator) { 5662 if (_autocreator) {
5631 GPBAutocreatedDictionaryModified(_autocreator, self); 5663 GPBAutocreatedDictionaryModified(_autocreator, self);
5632 } 5664 }
5633 } 5665 }
5634 5666
5635 - (void)removeValueForKey:(uint64_t)aKey { 5667 - (void)removeUInt32ForKey:(uint64_t)aKey {
5636 [_dictionary removeObjectForKey:@(aKey)]; 5668 [_dictionary removeObjectForKey:@(aKey)];
5637 } 5669 }
5638 5670
5639 - (void)removeAll { 5671 - (void)removeAll {
5640 [_dictionary removeAllObjects]; 5672 [_dictionary removeAllObjects];
5641 } 5673 }
5642 5674
5643 @end 5675 @end
5644 5676
5645 #pragma mark - UInt64 -> Int32 5677 #pragma mark - UInt64 -> Int32
5646 5678
5647 @implementation GPBUInt64Int32Dictionary { 5679 @implementation GPBUInt64Int32Dictionary {
5648 @package 5680 @package
5649 NSMutableDictionary *_dictionary; 5681 NSMutableDictionary *_dictionary;
5650 } 5682 }
5651 5683
5652 + (instancetype)dictionary { 5684 + (instancetype)dictionary {
5653 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 5685 return [[[self alloc] initWithInt32s:NULL forKeys:NULL count:0] autorelease];
5654 } 5686 }
5655 5687
5656 + (instancetype)dictionaryWithValue:(int32_t)value 5688 + (instancetype)dictionaryWithInt32:(int32_t)value
5657 forKey:(uint64_t)key { 5689 forKey:(uint64_t)key {
5658 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 5690 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
5659 // on to get the type correct. 5691 // on to get the type correct.
5660 return [[(GPBUInt64Int32Dictionary*)[self alloc] initWithValues:&value 5692 return [[(GPBUInt64Int32Dictionary*)[self alloc] initWithInt32s:&value
5661 forKeys:&key 5693 forKeys:&key
5662 count:1] autorelease ]; 5694 count:1] autorelease ];
5663 } 5695 }
5664 5696
5665 + (instancetype)dictionaryWithValues:(const int32_t [])values 5697 + (instancetype)dictionaryWithInt32s:(const int32_t [])values
5666 forKeys:(const uint64_t [])keys 5698 forKeys:(const uint64_t [])keys
5667 count:(NSUInteger)count { 5699 count:(NSUInteger)count {
5668 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 5700 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
5669 // on to get the type correct. 5701 // on to get the type correct.
5670 return [[(GPBUInt64Int32Dictionary*)[self alloc] initWithValues:values 5702 return [[(GPBUInt64Int32Dictionary*)[self alloc] initWithInt32s:values
5671 forKeys:keys 5703 forKeys:keys
5672 count:count] autorel ease]; 5704 count:count] autorel ease];
5673 } 5705 }
5674 5706
5675 + (instancetype)dictionaryWithDictionary:(GPBUInt64Int32Dictionary *)dictionary { 5707 + (instancetype)dictionaryWithDictionary:(GPBUInt64Int32Dictionary *)dictionary {
5676 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 5708 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
5677 // on to get the type correct. 5709 // on to get the type correct.
5678 return [[(GPBUInt64Int32Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 5710 return [[(GPBUInt64Int32Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
5679 } 5711 }
5680 5712
5681 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 5713 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
5682 return [[[self alloc] initWithCapacity:numItems] autorelease]; 5714 return [[[self alloc] initWithCapacity:numItems] autorelease];
5683 } 5715 }
5684 5716
5685 - (instancetype)init { 5717 - (instancetype)init {
5686 return [self initWithValues:NULL forKeys:NULL count:0]; 5718 return [self initWithInt32s:NULL forKeys:NULL count:0];
5687 } 5719 }
5688 5720
5689 - (instancetype)initWithValues:(const int32_t [])values 5721 - (instancetype)initWithInt32s:(const int32_t [])values
5690 forKeys:(const uint64_t [])keys 5722 forKeys:(const uint64_t [])keys
5691 count:(NSUInteger)count { 5723 count:(NSUInteger)count {
5692 self = [super init]; 5724 self = [super init];
5693 if (self) { 5725 if (self) {
5694 _dictionary = [[NSMutableDictionary alloc] init]; 5726 _dictionary = [[NSMutableDictionary alloc] init];
5695 if (count && values && keys) { 5727 if (count && values && keys) {
5696 for (NSUInteger i = 0; i < count; ++i) { 5728 for (NSUInteger i = 0; i < count; ++i) {
5697 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 5729 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
5698 } 5730 }
5699 } 5731 }
5700 } 5732 }
5701 return self; 5733 return self;
5702 } 5734 }
5703 5735
5704 - (instancetype)initWithDictionary:(GPBUInt64Int32Dictionary *)dictionary { 5736 - (instancetype)initWithDictionary:(GPBUInt64Int32Dictionary *)dictionary {
5705 self = [self initWithValues:NULL forKeys:NULL count:0]; 5737 self = [self initWithInt32s:NULL forKeys:NULL count:0];
5706 if (self) { 5738 if (self) {
5707 if (dictionary) { 5739 if (dictionary) {
5708 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 5740 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
5709 } 5741 }
5710 } 5742 }
5711 return self; 5743 return self;
5712 } 5744 }
5713 5745
5714 - (instancetype)initWithCapacity:(NSUInteger)numItems { 5746 - (instancetype)initWithCapacity:(NSUInteger)numItems {
5715 #pragma unused(numItems) 5747 #pragma unused(numItems)
5716 return [self initWithValues:NULL forKeys:NULL count:0]; 5748 return [self initWithInt32s:NULL forKeys:NULL count:0];
5717 } 5749 }
5718 5750
5719 - (void)dealloc { 5751 - (void)dealloc {
5720 NSAssert(!_autocreator, 5752 NSAssert(!_autocreator,
5721 @"%@: Autocreator must be cleared before release, autocreator: %@", 5753 @"%@: Autocreator must be cleared before release, autocreator: %@",
5722 [self class], _autocreator); 5754 [self class], _autocreator);
5723 [_dictionary release]; 5755 [_dictionary release];
5724 [super dealloc]; 5756 [super dealloc];
5725 } 5757 }
5726 5758
5727 - (instancetype)copyWithZone:(NSZone *)zone { 5759 - (instancetype)copyWithZone:(NSZone *)zone {
5728 return [[GPBUInt64Int32Dictionary allocWithZone:zone] initWithDictionary:self] ; 5760 return [[GPBUInt64Int32Dictionary allocWithZone:zone] initWithDictionary:self] ;
5729 } 5761 }
5730 5762
5731 - (BOOL)isEqual:(GPBUInt64Int32Dictionary *)other { 5763 - (BOOL)isEqual:(id)other {
5732 if (self == other) { 5764 if (self == other) {
5733 return YES; 5765 return YES;
5734 } 5766 }
5735 if (![other isKindOfClass:[GPBUInt64Int32Dictionary class]]) { 5767 if (![other isKindOfClass:[GPBUInt64Int32Dictionary class]]) {
5736 return NO; 5768 return NO;
5737 } 5769 }
5738 return [_dictionary isEqual:other->_dictionary]; 5770 GPBUInt64Int32Dictionary *otherDictionary = other;
5771 return [_dictionary isEqual:otherDictionary->_dictionary];
5739 } 5772 }
5740 5773
5741 - (NSUInteger)hash { 5774 - (NSUInteger)hash {
5742 return _dictionary.count; 5775 return _dictionary.count;
5743 } 5776 }
5744 5777
5745 - (NSString *)description { 5778 - (NSString *)description {
5746 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 5779 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
5747 } 5780 }
5748 5781
5749 - (NSUInteger)count { 5782 - (NSUInteger)count {
5750 return _dictionary.count; 5783 return _dictionary.count;
5751 } 5784 }
5752 5785
5753 - (void)enumerateKeysAndValuesUsingBlock: 5786 - (void)enumerateKeysAndInt32sUsingBlock:
5754 (void (^)(uint64_t key, int32_t value, BOOL *stop))block { 5787 (void (^)(uint64_t key, int32_t value, BOOL *stop))block {
5755 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 5788 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
5756 NSNumber *aValue, 5789 NSNumber *aValue,
5757 BOOL *stop) { 5790 BOOL *stop) {
5758 block([aKey unsignedLongLongValue], [aValue intValue], stop); 5791 block([aKey unsignedLongLongValue], [aValue intValue], stop);
5759 }]; 5792 }];
5760 } 5793 }
5761 5794
5762 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 5795 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
5763 NSUInteger count = _dictionary.count; 5796 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
5801 WriteDictInt32Field(outputStream, [aValue intValue], kMapValueFieldNumber, v alueDataType); 5834 WriteDictInt32Field(outputStream, [aValue intValue], kMapValueFieldNumber, v alueDataType);
5802 }]; 5835 }];
5803 } 5836 }
5804 5837
5805 - (void)setGPBGenericValue:(GPBGenericValue *)value 5838 - (void)setGPBGenericValue:(GPBGenericValue *)value
5806 forGPBGenericValueKey:(GPBGenericValue *)key { 5839 forGPBGenericValueKey:(GPBGenericValue *)key {
5807 [_dictionary setObject:@(value->valueInt32) forKey:@(key->valueUInt64)]; 5840 [_dictionary setObject:@(value->valueInt32) forKey:@(key->valueUInt64)];
5808 } 5841 }
5809 5842
5810 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 5843 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
5811 [self enumerateKeysAndValuesUsingBlock:^(uint64_t key, int32_t value, BOOL *st op) { 5844 [self enumerateKeysAndInt32sUsingBlock:^(uint64_t key, int32_t value, BOOL *st op) {
5812 #pragma unused(stop) 5845 #pragma unused(stop)
5813 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%d", value]); 5846 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%d", value]);
5814 }]; 5847 }];
5815 } 5848 }
5816 5849
5817 - (BOOL)valueForKey:(uint64_t)key value:(int32_t *)value { 5850 - (BOOL)getInt32:(nullable int32_t *)value forKey:(uint64_t)key {
5818 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 5851 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
5819 if (wrapped && value) { 5852 if (wrapped && value) {
5820 *value = [wrapped intValue]; 5853 *value = [wrapped intValue];
5821 } 5854 }
5822 return (wrapped != NULL); 5855 return (wrapped != NULL);
5823 } 5856 }
5824 5857
5825 - (void)addEntriesFromDictionary:(GPBUInt64Int32Dictionary *)otherDictionary { 5858 - (void)addEntriesFromDictionary:(GPBUInt64Int32Dictionary *)otherDictionary {
5826 if (otherDictionary) { 5859 if (otherDictionary) {
5827 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 5860 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
5828 if (_autocreator) { 5861 if (_autocreator) {
5829 GPBAutocreatedDictionaryModified(_autocreator, self); 5862 GPBAutocreatedDictionaryModified(_autocreator, self);
5830 } 5863 }
5831 } 5864 }
5832 } 5865 }
5833 5866
5834 - (void)setValue:(int32_t)value forKey:(uint64_t)key { 5867 - (void)setInt32:(int32_t)value forKey:(uint64_t)key {
5835 [_dictionary setObject:@(value) forKey:@(key)]; 5868 [_dictionary setObject:@(value) forKey:@(key)];
5836 if (_autocreator) { 5869 if (_autocreator) {
5837 GPBAutocreatedDictionaryModified(_autocreator, self); 5870 GPBAutocreatedDictionaryModified(_autocreator, self);
5838 } 5871 }
5839 } 5872 }
5840 5873
5841 - (void)removeValueForKey:(uint64_t)aKey { 5874 - (void)removeInt32ForKey:(uint64_t)aKey {
5842 [_dictionary removeObjectForKey:@(aKey)]; 5875 [_dictionary removeObjectForKey:@(aKey)];
5843 } 5876 }
5844 5877
5845 - (void)removeAll { 5878 - (void)removeAll {
5846 [_dictionary removeAllObjects]; 5879 [_dictionary removeAllObjects];
5847 } 5880 }
5848 5881
5849 @end 5882 @end
5850 5883
5851 #pragma mark - UInt64 -> UInt64 5884 #pragma mark - UInt64 -> UInt64
5852 5885
5853 @implementation GPBUInt64UInt64Dictionary { 5886 @implementation GPBUInt64UInt64Dictionary {
5854 @package 5887 @package
5855 NSMutableDictionary *_dictionary; 5888 NSMutableDictionary *_dictionary;
5856 } 5889 }
5857 5890
5858 + (instancetype)dictionary { 5891 + (instancetype)dictionary {
5859 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 5892 return [[[self alloc] initWithUInt64s:NULL forKeys:NULL count:0] autorelease];
5860 } 5893 }
5861 5894
5862 + (instancetype)dictionaryWithValue:(uint64_t)value 5895 + (instancetype)dictionaryWithUInt64:(uint64_t)value
5863 forKey:(uint64_t)key { 5896 forKey:(uint64_t)key {
5864 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 5897 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
5865 // on to get the type correct. 5898 // on to get the type correct.
5866 return [[(GPBUInt64UInt64Dictionary*)[self alloc] initWithValues:&value 5899 return [[(GPBUInt64UInt64Dictionary*)[self alloc] initWithUInt64s:&value
5867 forKeys:&key 5900 forKeys:&key
5868 count:1] autoreleas e]; 5901 count:1] autorelea se];
5869 } 5902 }
5870 5903
5871 + (instancetype)dictionaryWithValues:(const uint64_t [])values 5904 + (instancetype)dictionaryWithUInt64s:(const uint64_t [])values
5872 forKeys:(const uint64_t [])keys 5905 forKeys:(const uint64_t [])keys
5873 count:(NSUInteger)count { 5906 count:(NSUInteger)count {
5874 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 5907 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
5875 // on to get the type correct. 5908 // on to get the type correct.
5876 return [[(GPBUInt64UInt64Dictionary*)[self alloc] initWithValues:values 5909 return [[(GPBUInt64UInt64Dictionary*)[self alloc] initWithUInt64s:values
5877 forKeys:keys 5910 forKeys:keys
5878 count:count] autore lease]; 5911 count:count] autore lease];
5879 } 5912 }
5880 5913
5881 + (instancetype)dictionaryWithDictionary:(GPBUInt64UInt64Dictionary *)dictionary { 5914 + (instancetype)dictionaryWithDictionary:(GPBUInt64UInt64Dictionary *)dictionary {
5882 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 5915 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
5883 // on to get the type correct. 5916 // on to get the type correct.
5884 return [[(GPBUInt64UInt64Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease]; 5917 return [[(GPBUInt64UInt64Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease];
5885 } 5918 }
5886 5919
5887 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 5920 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
5888 return [[[self alloc] initWithCapacity:numItems] autorelease]; 5921 return [[[self alloc] initWithCapacity:numItems] autorelease];
5889 } 5922 }
5890 5923
5891 - (instancetype)init { 5924 - (instancetype)init {
5892 return [self initWithValues:NULL forKeys:NULL count:0]; 5925 return [self initWithUInt64s:NULL forKeys:NULL count:0];
5893 } 5926 }
5894 5927
5895 - (instancetype)initWithValues:(const uint64_t [])values 5928 - (instancetype)initWithUInt64s:(const uint64_t [])values
5896 forKeys:(const uint64_t [])keys 5929 forKeys:(const uint64_t [])keys
5897 count:(NSUInteger)count { 5930 count:(NSUInteger)count {
5898 self = [super init]; 5931 self = [super init];
5899 if (self) { 5932 if (self) {
5900 _dictionary = [[NSMutableDictionary alloc] init]; 5933 _dictionary = [[NSMutableDictionary alloc] init];
5901 if (count && values && keys) { 5934 if (count && values && keys) {
5902 for (NSUInteger i = 0; i < count; ++i) { 5935 for (NSUInteger i = 0; i < count; ++i) {
5903 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 5936 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
5904 } 5937 }
5905 } 5938 }
5906 } 5939 }
5907 return self; 5940 return self;
5908 } 5941 }
5909 5942
5910 - (instancetype)initWithDictionary:(GPBUInt64UInt64Dictionary *)dictionary { 5943 - (instancetype)initWithDictionary:(GPBUInt64UInt64Dictionary *)dictionary {
5911 self = [self initWithValues:NULL forKeys:NULL count:0]; 5944 self = [self initWithUInt64s:NULL forKeys:NULL count:0];
5912 if (self) { 5945 if (self) {
5913 if (dictionary) { 5946 if (dictionary) {
5914 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 5947 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
5915 } 5948 }
5916 } 5949 }
5917 return self; 5950 return self;
5918 } 5951 }
5919 5952
5920 - (instancetype)initWithCapacity:(NSUInteger)numItems { 5953 - (instancetype)initWithCapacity:(NSUInteger)numItems {
5921 #pragma unused(numItems) 5954 #pragma unused(numItems)
5922 return [self initWithValues:NULL forKeys:NULL count:0]; 5955 return [self initWithUInt64s:NULL forKeys:NULL count:0];
5923 } 5956 }
5924 5957
5925 - (void)dealloc { 5958 - (void)dealloc {
5926 NSAssert(!_autocreator, 5959 NSAssert(!_autocreator,
5927 @"%@: Autocreator must be cleared before release, autocreator: %@", 5960 @"%@: Autocreator must be cleared before release, autocreator: %@",
5928 [self class], _autocreator); 5961 [self class], _autocreator);
5929 [_dictionary release]; 5962 [_dictionary release];
5930 [super dealloc]; 5963 [super dealloc];
5931 } 5964 }
5932 5965
5933 - (instancetype)copyWithZone:(NSZone *)zone { 5966 - (instancetype)copyWithZone:(NSZone *)zone {
5934 return [[GPBUInt64UInt64Dictionary allocWithZone:zone] initWithDictionary:self ]; 5967 return [[GPBUInt64UInt64Dictionary allocWithZone:zone] initWithDictionary:self ];
5935 } 5968 }
5936 5969
5937 - (BOOL)isEqual:(GPBUInt64UInt64Dictionary *)other { 5970 - (BOOL)isEqual:(id)other {
5938 if (self == other) { 5971 if (self == other) {
5939 return YES; 5972 return YES;
5940 } 5973 }
5941 if (![other isKindOfClass:[GPBUInt64UInt64Dictionary class]]) { 5974 if (![other isKindOfClass:[GPBUInt64UInt64Dictionary class]]) {
5942 return NO; 5975 return NO;
5943 } 5976 }
5944 return [_dictionary isEqual:other->_dictionary]; 5977 GPBUInt64UInt64Dictionary *otherDictionary = other;
5978 return [_dictionary isEqual:otherDictionary->_dictionary];
5945 } 5979 }
5946 5980
5947 - (NSUInteger)hash { 5981 - (NSUInteger)hash {
5948 return _dictionary.count; 5982 return _dictionary.count;
5949 } 5983 }
5950 5984
5951 - (NSString *)description { 5985 - (NSString *)description {
5952 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 5986 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
5953 } 5987 }
5954 5988
5955 - (NSUInteger)count { 5989 - (NSUInteger)count {
5956 return _dictionary.count; 5990 return _dictionary.count;
5957 } 5991 }
5958 5992
5959 - (void)enumerateKeysAndValuesUsingBlock: 5993 - (void)enumerateKeysAndUInt64sUsingBlock:
5960 (void (^)(uint64_t key, uint64_t value, BOOL *stop))block { 5994 (void (^)(uint64_t key, uint64_t value, BOOL *stop))block {
5961 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 5995 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
5962 NSNumber *aValue, 5996 NSNumber *aValue,
5963 BOOL *stop) { 5997 BOOL *stop) {
5964 block([aKey unsignedLongLongValue], [aValue unsignedLongLongValue], stop); 5998 block([aKey unsignedLongLongValue], [aValue unsignedLongLongValue], stop);
5965 }]; 5999 }];
5966 } 6000 }
5967 6001
5968 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 6002 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
5969 NSUInteger count = _dictionary.count; 6003 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
6007 WriteDictUInt64Field(outputStream, [aValue unsignedLongLongValue], kMapValue FieldNumber, valueDataType); 6041 WriteDictUInt64Field(outputStream, [aValue unsignedLongLongValue], kMapValue FieldNumber, valueDataType);
6008 }]; 6042 }];
6009 } 6043 }
6010 6044
6011 - (void)setGPBGenericValue:(GPBGenericValue *)value 6045 - (void)setGPBGenericValue:(GPBGenericValue *)value
6012 forGPBGenericValueKey:(GPBGenericValue *)key { 6046 forGPBGenericValueKey:(GPBGenericValue *)key {
6013 [_dictionary setObject:@(value->valueUInt64) forKey:@(key->valueUInt64)]; 6047 [_dictionary setObject:@(value->valueUInt64) forKey:@(key->valueUInt64)];
6014 } 6048 }
6015 6049
6016 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 6050 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
6017 [self enumerateKeysAndValuesUsingBlock:^(uint64_t key, uint64_t value, BOOL *s top) { 6051 [self enumerateKeysAndUInt64sUsingBlock:^(uint64_t key, uint64_t value, BOOL * stop) {
6018 #pragma unused(stop) 6052 #pragma unused(stop)
6019 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%llu", value]); 6053 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%llu", value]);
6020 }]; 6054 }];
6021 } 6055 }
6022 6056
6023 - (BOOL)valueForKey:(uint64_t)key value:(uint64_t *)value { 6057 - (BOOL)getUInt64:(nullable uint64_t *)value forKey:(uint64_t)key {
6024 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 6058 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
6025 if (wrapped && value) { 6059 if (wrapped && value) {
6026 *value = [wrapped unsignedLongLongValue]; 6060 *value = [wrapped unsignedLongLongValue];
6027 } 6061 }
6028 return (wrapped != NULL); 6062 return (wrapped != NULL);
6029 } 6063 }
6030 6064
6031 - (void)addEntriesFromDictionary:(GPBUInt64UInt64Dictionary *)otherDictionary { 6065 - (void)addEntriesFromDictionary:(GPBUInt64UInt64Dictionary *)otherDictionary {
6032 if (otherDictionary) { 6066 if (otherDictionary) {
6033 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 6067 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
6034 if (_autocreator) { 6068 if (_autocreator) {
6035 GPBAutocreatedDictionaryModified(_autocreator, self); 6069 GPBAutocreatedDictionaryModified(_autocreator, self);
6036 } 6070 }
6037 } 6071 }
6038 } 6072 }
6039 6073
6040 - (void)setValue:(uint64_t)value forKey:(uint64_t)key { 6074 - (void)setUInt64:(uint64_t)value forKey:(uint64_t)key {
6041 [_dictionary setObject:@(value) forKey:@(key)]; 6075 [_dictionary setObject:@(value) forKey:@(key)];
6042 if (_autocreator) { 6076 if (_autocreator) {
6043 GPBAutocreatedDictionaryModified(_autocreator, self); 6077 GPBAutocreatedDictionaryModified(_autocreator, self);
6044 } 6078 }
6045 } 6079 }
6046 6080
6047 - (void)removeValueForKey:(uint64_t)aKey { 6081 - (void)removeUInt64ForKey:(uint64_t)aKey {
6048 [_dictionary removeObjectForKey:@(aKey)]; 6082 [_dictionary removeObjectForKey:@(aKey)];
6049 } 6083 }
6050 6084
6051 - (void)removeAll { 6085 - (void)removeAll {
6052 [_dictionary removeAllObjects]; 6086 [_dictionary removeAllObjects];
6053 } 6087 }
6054 6088
6055 @end 6089 @end
6056 6090
6057 #pragma mark - UInt64 -> Int64 6091 #pragma mark - UInt64 -> Int64
6058 6092
6059 @implementation GPBUInt64Int64Dictionary { 6093 @implementation GPBUInt64Int64Dictionary {
6060 @package 6094 @package
6061 NSMutableDictionary *_dictionary; 6095 NSMutableDictionary *_dictionary;
6062 } 6096 }
6063 6097
6064 + (instancetype)dictionary { 6098 + (instancetype)dictionary {
6065 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 6099 return [[[self alloc] initWithInt64s:NULL forKeys:NULL count:0] autorelease];
6066 } 6100 }
6067 6101
6068 + (instancetype)dictionaryWithValue:(int64_t)value 6102 + (instancetype)dictionaryWithInt64:(int64_t)value
6069 forKey:(uint64_t)key { 6103 forKey:(uint64_t)key {
6070 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 6104 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
6071 // on to get the type correct. 6105 // on to get the type correct.
6072 return [[(GPBUInt64Int64Dictionary*)[self alloc] initWithValues:&value 6106 return [[(GPBUInt64Int64Dictionary*)[self alloc] initWithInt64s:&value
6073 forKeys:&key 6107 forKeys:&key
6074 count:1] autorelease ]; 6108 count:1] autorelease ];
6075 } 6109 }
6076 6110
6077 + (instancetype)dictionaryWithValues:(const int64_t [])values 6111 + (instancetype)dictionaryWithInt64s:(const int64_t [])values
6078 forKeys:(const uint64_t [])keys 6112 forKeys:(const uint64_t [])keys
6079 count:(NSUInteger)count { 6113 count:(NSUInteger)count {
6080 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 6114 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
6081 // on to get the type correct. 6115 // on to get the type correct.
6082 return [[(GPBUInt64Int64Dictionary*)[self alloc] initWithValues:values 6116 return [[(GPBUInt64Int64Dictionary*)[self alloc] initWithInt64s:values
6083 forKeys:keys 6117 forKeys:keys
6084 count:count] autorel ease]; 6118 count:count] autorel ease];
6085 } 6119 }
6086 6120
6087 + (instancetype)dictionaryWithDictionary:(GPBUInt64Int64Dictionary *)dictionary { 6121 + (instancetype)dictionaryWithDictionary:(GPBUInt64Int64Dictionary *)dictionary {
6088 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 6122 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
6089 // on to get the type correct. 6123 // on to get the type correct.
6090 return [[(GPBUInt64Int64Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 6124 return [[(GPBUInt64Int64Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
6091 } 6125 }
6092 6126
6093 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 6127 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
6094 return [[[self alloc] initWithCapacity:numItems] autorelease]; 6128 return [[[self alloc] initWithCapacity:numItems] autorelease];
6095 } 6129 }
6096 6130
6097 - (instancetype)init { 6131 - (instancetype)init {
6098 return [self initWithValues:NULL forKeys:NULL count:0]; 6132 return [self initWithInt64s:NULL forKeys:NULL count:0];
6099 } 6133 }
6100 6134
6101 - (instancetype)initWithValues:(const int64_t [])values 6135 - (instancetype)initWithInt64s:(const int64_t [])values
6102 forKeys:(const uint64_t [])keys 6136 forKeys:(const uint64_t [])keys
6103 count:(NSUInteger)count { 6137 count:(NSUInteger)count {
6104 self = [super init]; 6138 self = [super init];
6105 if (self) { 6139 if (self) {
6106 _dictionary = [[NSMutableDictionary alloc] init]; 6140 _dictionary = [[NSMutableDictionary alloc] init];
6107 if (count && values && keys) { 6141 if (count && values && keys) {
6108 for (NSUInteger i = 0; i < count; ++i) { 6142 for (NSUInteger i = 0; i < count; ++i) {
6109 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 6143 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
6110 } 6144 }
6111 } 6145 }
6112 } 6146 }
6113 return self; 6147 return self;
6114 } 6148 }
6115 6149
6116 - (instancetype)initWithDictionary:(GPBUInt64Int64Dictionary *)dictionary { 6150 - (instancetype)initWithDictionary:(GPBUInt64Int64Dictionary *)dictionary {
6117 self = [self initWithValues:NULL forKeys:NULL count:0]; 6151 self = [self initWithInt64s:NULL forKeys:NULL count:0];
6118 if (self) { 6152 if (self) {
6119 if (dictionary) { 6153 if (dictionary) {
6120 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 6154 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
6121 } 6155 }
6122 } 6156 }
6123 return self; 6157 return self;
6124 } 6158 }
6125 6159
6126 - (instancetype)initWithCapacity:(NSUInteger)numItems { 6160 - (instancetype)initWithCapacity:(NSUInteger)numItems {
6127 #pragma unused(numItems) 6161 #pragma unused(numItems)
6128 return [self initWithValues:NULL forKeys:NULL count:0]; 6162 return [self initWithInt64s:NULL forKeys:NULL count:0];
6129 } 6163 }
6130 6164
6131 - (void)dealloc { 6165 - (void)dealloc {
6132 NSAssert(!_autocreator, 6166 NSAssert(!_autocreator,
6133 @"%@: Autocreator must be cleared before release, autocreator: %@", 6167 @"%@: Autocreator must be cleared before release, autocreator: %@",
6134 [self class], _autocreator); 6168 [self class], _autocreator);
6135 [_dictionary release]; 6169 [_dictionary release];
6136 [super dealloc]; 6170 [super dealloc];
6137 } 6171 }
6138 6172
6139 - (instancetype)copyWithZone:(NSZone *)zone { 6173 - (instancetype)copyWithZone:(NSZone *)zone {
6140 return [[GPBUInt64Int64Dictionary allocWithZone:zone] initWithDictionary:self] ; 6174 return [[GPBUInt64Int64Dictionary allocWithZone:zone] initWithDictionary:self] ;
6141 } 6175 }
6142 6176
6143 - (BOOL)isEqual:(GPBUInt64Int64Dictionary *)other { 6177 - (BOOL)isEqual:(id)other {
6144 if (self == other) { 6178 if (self == other) {
6145 return YES; 6179 return YES;
6146 } 6180 }
6147 if (![other isKindOfClass:[GPBUInt64Int64Dictionary class]]) { 6181 if (![other isKindOfClass:[GPBUInt64Int64Dictionary class]]) {
6148 return NO; 6182 return NO;
6149 } 6183 }
6150 return [_dictionary isEqual:other->_dictionary]; 6184 GPBUInt64Int64Dictionary *otherDictionary = other;
6185 return [_dictionary isEqual:otherDictionary->_dictionary];
6151 } 6186 }
6152 6187
6153 - (NSUInteger)hash { 6188 - (NSUInteger)hash {
6154 return _dictionary.count; 6189 return _dictionary.count;
6155 } 6190 }
6156 6191
6157 - (NSString *)description { 6192 - (NSString *)description {
6158 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 6193 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
6159 } 6194 }
6160 6195
6161 - (NSUInteger)count { 6196 - (NSUInteger)count {
6162 return _dictionary.count; 6197 return _dictionary.count;
6163 } 6198 }
6164 6199
6165 - (void)enumerateKeysAndValuesUsingBlock: 6200 - (void)enumerateKeysAndInt64sUsingBlock:
6166 (void (^)(uint64_t key, int64_t value, BOOL *stop))block { 6201 (void (^)(uint64_t key, int64_t value, BOOL *stop))block {
6167 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 6202 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
6168 NSNumber *aValue, 6203 NSNumber *aValue,
6169 BOOL *stop) { 6204 BOOL *stop) {
6170 block([aKey unsignedLongLongValue], [aValue longLongValue], stop); 6205 block([aKey unsignedLongLongValue], [aValue longLongValue], stop);
6171 }]; 6206 }];
6172 } 6207 }
6173 6208
6174 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 6209 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
6175 NSUInteger count = _dictionary.count; 6210 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
6213 WriteDictInt64Field(outputStream, [aValue longLongValue], kMapValueFieldNumb er, valueDataType); 6248 WriteDictInt64Field(outputStream, [aValue longLongValue], kMapValueFieldNumb er, valueDataType);
6214 }]; 6249 }];
6215 } 6250 }
6216 6251
6217 - (void)setGPBGenericValue:(GPBGenericValue *)value 6252 - (void)setGPBGenericValue:(GPBGenericValue *)value
6218 forGPBGenericValueKey:(GPBGenericValue *)key { 6253 forGPBGenericValueKey:(GPBGenericValue *)key {
6219 [_dictionary setObject:@(value->valueInt64) forKey:@(key->valueUInt64)]; 6254 [_dictionary setObject:@(value->valueInt64) forKey:@(key->valueUInt64)];
6220 } 6255 }
6221 6256
6222 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 6257 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
6223 [self enumerateKeysAndValuesUsingBlock:^(uint64_t key, int64_t value, BOOL *st op) { 6258 [self enumerateKeysAndInt64sUsingBlock:^(uint64_t key, int64_t value, BOOL *st op) {
6224 #pragma unused(stop) 6259 #pragma unused(stop)
6225 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%lld", value]); 6260 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%lld", value]);
6226 }]; 6261 }];
6227 } 6262 }
6228 6263
6229 - (BOOL)valueForKey:(uint64_t)key value:(int64_t *)value { 6264 - (BOOL)getInt64:(nullable int64_t *)value forKey:(uint64_t)key {
6230 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 6265 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
6231 if (wrapped && value) { 6266 if (wrapped && value) {
6232 *value = [wrapped longLongValue]; 6267 *value = [wrapped longLongValue];
6233 } 6268 }
6234 return (wrapped != NULL); 6269 return (wrapped != NULL);
6235 } 6270 }
6236 6271
6237 - (void)addEntriesFromDictionary:(GPBUInt64Int64Dictionary *)otherDictionary { 6272 - (void)addEntriesFromDictionary:(GPBUInt64Int64Dictionary *)otherDictionary {
6238 if (otherDictionary) { 6273 if (otherDictionary) {
6239 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 6274 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
6240 if (_autocreator) { 6275 if (_autocreator) {
6241 GPBAutocreatedDictionaryModified(_autocreator, self); 6276 GPBAutocreatedDictionaryModified(_autocreator, self);
6242 } 6277 }
6243 } 6278 }
6244 } 6279 }
6245 6280
6246 - (void)setValue:(int64_t)value forKey:(uint64_t)key { 6281 - (void)setInt64:(int64_t)value forKey:(uint64_t)key {
6247 [_dictionary setObject:@(value) forKey:@(key)]; 6282 [_dictionary setObject:@(value) forKey:@(key)];
6248 if (_autocreator) { 6283 if (_autocreator) {
6249 GPBAutocreatedDictionaryModified(_autocreator, self); 6284 GPBAutocreatedDictionaryModified(_autocreator, self);
6250 } 6285 }
6251 } 6286 }
6252 6287
6253 - (void)removeValueForKey:(uint64_t)aKey { 6288 - (void)removeInt64ForKey:(uint64_t)aKey {
6254 [_dictionary removeObjectForKey:@(aKey)]; 6289 [_dictionary removeObjectForKey:@(aKey)];
6255 } 6290 }
6256 6291
6257 - (void)removeAll { 6292 - (void)removeAll {
6258 [_dictionary removeAllObjects]; 6293 [_dictionary removeAllObjects];
6259 } 6294 }
6260 6295
6261 @end 6296 @end
6262 6297
6263 #pragma mark - UInt64 -> Bool 6298 #pragma mark - UInt64 -> Bool
6264 6299
6265 @implementation GPBUInt64BoolDictionary { 6300 @implementation GPBUInt64BoolDictionary {
6266 @package 6301 @package
6267 NSMutableDictionary *_dictionary; 6302 NSMutableDictionary *_dictionary;
6268 } 6303 }
6269 6304
6270 + (instancetype)dictionary { 6305 + (instancetype)dictionary {
6271 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 6306 return [[[self alloc] initWithBools:NULL forKeys:NULL count:0] autorelease];
6272 } 6307 }
6273 6308
6274 + (instancetype)dictionaryWithValue:(BOOL)value 6309 + (instancetype)dictionaryWithBool:(BOOL)value
6275 forKey:(uint64_t)key { 6310 forKey:(uint64_t)key {
6276 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 6311 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
6277 // on to get the type correct. 6312 // on to get the type correct.
6278 return [[(GPBUInt64BoolDictionary*)[self alloc] initWithValues:&value 6313 return [[(GPBUInt64BoolDictionary*)[self alloc] initWithBools:&value
6279 forKeys:&key 6314 forKeys:&key
6280 count:1] autorelease] ; 6315 count:1] autorelease];
6281 } 6316 }
6282 6317
6283 + (instancetype)dictionaryWithValues:(const BOOL [])values 6318 + (instancetype)dictionaryWithBools:(const BOOL [])values
6284 forKeys:(const uint64_t [])keys 6319 forKeys:(const uint64_t [])keys
6285 count:(NSUInteger)count { 6320 count:(NSUInteger)count {
6286 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 6321 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
6287 // on to get the type correct. 6322 // on to get the type correct.
6288 return [[(GPBUInt64BoolDictionary*)[self alloc] initWithValues:values 6323 return [[(GPBUInt64BoolDictionary*)[self alloc] initWithBools:values
6289 forKeys:keys 6324 forKeys:keys
6290 count:count] autorele ase]; 6325 count:count] autorele ase];
6291 } 6326 }
6292 6327
6293 + (instancetype)dictionaryWithDictionary:(GPBUInt64BoolDictionary *)dictionary { 6328 + (instancetype)dictionaryWithDictionary:(GPBUInt64BoolDictionary *)dictionary {
6294 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 6329 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
6295 // on to get the type correct. 6330 // on to get the type correct.
6296 return [[(GPBUInt64BoolDictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 6331 return [[(GPBUInt64BoolDictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
6297 } 6332 }
6298 6333
6299 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 6334 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
6300 return [[[self alloc] initWithCapacity:numItems] autorelease]; 6335 return [[[self alloc] initWithCapacity:numItems] autorelease];
6301 } 6336 }
6302 6337
6303 - (instancetype)init { 6338 - (instancetype)init {
6304 return [self initWithValues:NULL forKeys:NULL count:0]; 6339 return [self initWithBools:NULL forKeys:NULL count:0];
6305 } 6340 }
6306 6341
6307 - (instancetype)initWithValues:(const BOOL [])values 6342 - (instancetype)initWithBools:(const BOOL [])values
6308 forKeys:(const uint64_t [])keys 6343 forKeys:(const uint64_t [])keys
6309 count:(NSUInteger)count { 6344 count:(NSUInteger)count {
6310 self = [super init]; 6345 self = [super init];
6311 if (self) { 6346 if (self) {
6312 _dictionary = [[NSMutableDictionary alloc] init]; 6347 _dictionary = [[NSMutableDictionary alloc] init];
6313 if (count && values && keys) { 6348 if (count && values && keys) {
6314 for (NSUInteger i = 0; i < count; ++i) { 6349 for (NSUInteger i = 0; i < count; ++i) {
6315 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 6350 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
6316 } 6351 }
6317 } 6352 }
6318 } 6353 }
6319 return self; 6354 return self;
6320 } 6355 }
6321 6356
6322 - (instancetype)initWithDictionary:(GPBUInt64BoolDictionary *)dictionary { 6357 - (instancetype)initWithDictionary:(GPBUInt64BoolDictionary *)dictionary {
6323 self = [self initWithValues:NULL forKeys:NULL count:0]; 6358 self = [self initWithBools:NULL forKeys:NULL count:0];
6324 if (self) { 6359 if (self) {
6325 if (dictionary) { 6360 if (dictionary) {
6326 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 6361 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
6327 } 6362 }
6328 } 6363 }
6329 return self; 6364 return self;
6330 } 6365 }
6331 6366
6332 - (instancetype)initWithCapacity:(NSUInteger)numItems { 6367 - (instancetype)initWithCapacity:(NSUInteger)numItems {
6333 #pragma unused(numItems) 6368 #pragma unused(numItems)
6334 return [self initWithValues:NULL forKeys:NULL count:0]; 6369 return [self initWithBools:NULL forKeys:NULL count:0];
6335 } 6370 }
6336 6371
6337 - (void)dealloc { 6372 - (void)dealloc {
6338 NSAssert(!_autocreator, 6373 NSAssert(!_autocreator,
6339 @"%@: Autocreator must be cleared before release, autocreator: %@", 6374 @"%@: Autocreator must be cleared before release, autocreator: %@",
6340 [self class], _autocreator); 6375 [self class], _autocreator);
6341 [_dictionary release]; 6376 [_dictionary release];
6342 [super dealloc]; 6377 [super dealloc];
6343 } 6378 }
6344 6379
6345 - (instancetype)copyWithZone:(NSZone *)zone { 6380 - (instancetype)copyWithZone:(NSZone *)zone {
6346 return [[GPBUInt64BoolDictionary allocWithZone:zone] initWithDictionary:self]; 6381 return [[GPBUInt64BoolDictionary allocWithZone:zone] initWithDictionary:self];
6347 } 6382 }
6348 6383
6349 - (BOOL)isEqual:(GPBUInt64BoolDictionary *)other { 6384 - (BOOL)isEqual:(id)other {
6350 if (self == other) { 6385 if (self == other) {
6351 return YES; 6386 return YES;
6352 } 6387 }
6353 if (![other isKindOfClass:[GPBUInt64BoolDictionary class]]) { 6388 if (![other isKindOfClass:[GPBUInt64BoolDictionary class]]) {
6354 return NO; 6389 return NO;
6355 } 6390 }
6356 return [_dictionary isEqual:other->_dictionary]; 6391 GPBUInt64BoolDictionary *otherDictionary = other;
6392 return [_dictionary isEqual:otherDictionary->_dictionary];
6357 } 6393 }
6358 6394
6359 - (NSUInteger)hash { 6395 - (NSUInteger)hash {
6360 return _dictionary.count; 6396 return _dictionary.count;
6361 } 6397 }
6362 6398
6363 - (NSString *)description { 6399 - (NSString *)description {
6364 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 6400 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
6365 } 6401 }
6366 6402
6367 - (NSUInteger)count { 6403 - (NSUInteger)count {
6368 return _dictionary.count; 6404 return _dictionary.count;
6369 } 6405 }
6370 6406
6371 - (void)enumerateKeysAndValuesUsingBlock: 6407 - (void)enumerateKeysAndBoolsUsingBlock:
6372 (void (^)(uint64_t key, BOOL value, BOOL *stop))block { 6408 (void (^)(uint64_t key, BOOL value, BOOL *stop))block {
6373 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 6409 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
6374 NSNumber *aValue, 6410 NSNumber *aValue,
6375 BOOL *stop) { 6411 BOOL *stop) {
6376 block([aKey unsignedLongLongValue], [aValue boolValue], stop); 6412 block([aKey unsignedLongLongValue], [aValue boolValue], stop);
6377 }]; 6413 }];
6378 } 6414 }
6379 6415
6380 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 6416 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
6381 NSUInteger count = _dictionary.count; 6417 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
6419 WriteDictBoolField(outputStream, [aValue boolValue], kMapValueFieldNumber, v alueDataType); 6455 WriteDictBoolField(outputStream, [aValue boolValue], kMapValueFieldNumber, v alueDataType);
6420 }]; 6456 }];
6421 } 6457 }
6422 6458
6423 - (void)setGPBGenericValue:(GPBGenericValue *)value 6459 - (void)setGPBGenericValue:(GPBGenericValue *)value
6424 forGPBGenericValueKey:(GPBGenericValue *)key { 6460 forGPBGenericValueKey:(GPBGenericValue *)key {
6425 [_dictionary setObject:@(value->valueBool) forKey:@(key->valueUInt64)]; 6461 [_dictionary setObject:@(value->valueBool) forKey:@(key->valueUInt64)];
6426 } 6462 }
6427 6463
6428 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 6464 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
6429 [self enumerateKeysAndValuesUsingBlock:^(uint64_t key, BOOL value, BOOL *stop) { 6465 [self enumerateKeysAndBoolsUsingBlock:^(uint64_t key, BOOL value, BOOL *stop) {
6430 #pragma unused(stop) 6466 #pragma unused(stop)
6431 block([NSString stringWithFormat:@"%llu", key], (value ? @"true" : @"false ")); 6467 block([NSString stringWithFormat:@"%llu", key], (value ? @"true" : @"false "));
6432 }]; 6468 }];
6433 } 6469 }
6434 6470
6435 - (BOOL)valueForKey:(uint64_t)key value:(BOOL *)value { 6471 - (BOOL)getBool:(nullable BOOL *)value forKey:(uint64_t)key {
6436 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 6472 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
6437 if (wrapped && value) { 6473 if (wrapped && value) {
6438 *value = [wrapped boolValue]; 6474 *value = [wrapped boolValue];
6439 } 6475 }
6440 return (wrapped != NULL); 6476 return (wrapped != NULL);
6441 } 6477 }
6442 6478
6443 - (void)addEntriesFromDictionary:(GPBUInt64BoolDictionary *)otherDictionary { 6479 - (void)addEntriesFromDictionary:(GPBUInt64BoolDictionary *)otherDictionary {
6444 if (otherDictionary) { 6480 if (otherDictionary) {
6445 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 6481 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
6446 if (_autocreator) { 6482 if (_autocreator) {
6447 GPBAutocreatedDictionaryModified(_autocreator, self); 6483 GPBAutocreatedDictionaryModified(_autocreator, self);
6448 } 6484 }
6449 } 6485 }
6450 } 6486 }
6451 6487
6452 - (void)setValue:(BOOL)value forKey:(uint64_t)key { 6488 - (void)setBool:(BOOL)value forKey:(uint64_t)key {
6453 [_dictionary setObject:@(value) forKey:@(key)]; 6489 [_dictionary setObject:@(value) forKey:@(key)];
6454 if (_autocreator) { 6490 if (_autocreator) {
6455 GPBAutocreatedDictionaryModified(_autocreator, self); 6491 GPBAutocreatedDictionaryModified(_autocreator, self);
6456 } 6492 }
6457 } 6493 }
6458 6494
6459 - (void)removeValueForKey:(uint64_t)aKey { 6495 - (void)removeBoolForKey:(uint64_t)aKey {
6460 [_dictionary removeObjectForKey:@(aKey)]; 6496 [_dictionary removeObjectForKey:@(aKey)];
6461 } 6497 }
6462 6498
6463 - (void)removeAll { 6499 - (void)removeAll {
6464 [_dictionary removeAllObjects]; 6500 [_dictionary removeAllObjects];
6465 } 6501 }
6466 6502
6467 @end 6503 @end
6468 6504
6469 #pragma mark - UInt64 -> Float 6505 #pragma mark - UInt64 -> Float
6470 6506
6471 @implementation GPBUInt64FloatDictionary { 6507 @implementation GPBUInt64FloatDictionary {
6472 @package 6508 @package
6473 NSMutableDictionary *_dictionary; 6509 NSMutableDictionary *_dictionary;
6474 } 6510 }
6475 6511
6476 + (instancetype)dictionary { 6512 + (instancetype)dictionary {
6477 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 6513 return [[[self alloc] initWithFloats:NULL forKeys:NULL count:0] autorelease];
6478 } 6514 }
6479 6515
6480 + (instancetype)dictionaryWithValue:(float)value 6516 + (instancetype)dictionaryWithFloat:(float)value
6481 forKey:(uint64_t)key { 6517 forKey:(uint64_t)key {
6482 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 6518 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
6483 // on to get the type correct. 6519 // on to get the type correct.
6484 return [[(GPBUInt64FloatDictionary*)[self alloc] initWithValues:&value 6520 return [[(GPBUInt64FloatDictionary*)[self alloc] initWithFloats:&value
6485 forKeys:&key 6521 forKeys:&key
6486 count:1] autorelease ]; 6522 count:1] autorelease ];
6487 } 6523 }
6488 6524
6489 + (instancetype)dictionaryWithValues:(const float [])values 6525 + (instancetype)dictionaryWithFloats:(const float [])values
6490 forKeys:(const uint64_t [])keys 6526 forKeys:(const uint64_t [])keys
6491 count:(NSUInteger)count { 6527 count:(NSUInteger)count {
6492 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 6528 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
6493 // on to get the type correct. 6529 // on to get the type correct.
6494 return [[(GPBUInt64FloatDictionary*)[self alloc] initWithValues:values 6530 return [[(GPBUInt64FloatDictionary*)[self alloc] initWithFloats:values
6495 forKeys:keys 6531 forKeys:keys
6496 count:count] autorel ease]; 6532 count:count] autorel ease];
6497 } 6533 }
6498 6534
6499 + (instancetype)dictionaryWithDictionary:(GPBUInt64FloatDictionary *)dictionary { 6535 + (instancetype)dictionaryWithDictionary:(GPBUInt64FloatDictionary *)dictionary {
6500 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 6536 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
6501 // on to get the type correct. 6537 // on to get the type correct.
6502 return [[(GPBUInt64FloatDictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 6538 return [[(GPBUInt64FloatDictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
6503 } 6539 }
6504 6540
6505 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 6541 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
6506 return [[[self alloc] initWithCapacity:numItems] autorelease]; 6542 return [[[self alloc] initWithCapacity:numItems] autorelease];
6507 } 6543 }
6508 6544
6509 - (instancetype)init { 6545 - (instancetype)init {
6510 return [self initWithValues:NULL forKeys:NULL count:0]; 6546 return [self initWithFloats:NULL forKeys:NULL count:0];
6511 } 6547 }
6512 6548
6513 - (instancetype)initWithValues:(const float [])values 6549 - (instancetype)initWithFloats:(const float [])values
6514 forKeys:(const uint64_t [])keys 6550 forKeys:(const uint64_t [])keys
6515 count:(NSUInteger)count { 6551 count:(NSUInteger)count {
6516 self = [super init]; 6552 self = [super init];
6517 if (self) { 6553 if (self) {
6518 _dictionary = [[NSMutableDictionary alloc] init]; 6554 _dictionary = [[NSMutableDictionary alloc] init];
6519 if (count && values && keys) { 6555 if (count && values && keys) {
6520 for (NSUInteger i = 0; i < count; ++i) { 6556 for (NSUInteger i = 0; i < count; ++i) {
6521 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 6557 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
6522 } 6558 }
6523 } 6559 }
6524 } 6560 }
6525 return self; 6561 return self;
6526 } 6562 }
6527 6563
6528 - (instancetype)initWithDictionary:(GPBUInt64FloatDictionary *)dictionary { 6564 - (instancetype)initWithDictionary:(GPBUInt64FloatDictionary *)dictionary {
6529 self = [self initWithValues:NULL forKeys:NULL count:0]; 6565 self = [self initWithFloats:NULL forKeys:NULL count:0];
6530 if (self) { 6566 if (self) {
6531 if (dictionary) { 6567 if (dictionary) {
6532 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 6568 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
6533 } 6569 }
6534 } 6570 }
6535 return self; 6571 return self;
6536 } 6572 }
6537 6573
6538 - (instancetype)initWithCapacity:(NSUInteger)numItems { 6574 - (instancetype)initWithCapacity:(NSUInteger)numItems {
6539 #pragma unused(numItems) 6575 #pragma unused(numItems)
6540 return [self initWithValues:NULL forKeys:NULL count:0]; 6576 return [self initWithFloats:NULL forKeys:NULL count:0];
6541 } 6577 }
6542 6578
6543 - (void)dealloc { 6579 - (void)dealloc {
6544 NSAssert(!_autocreator, 6580 NSAssert(!_autocreator,
6545 @"%@: Autocreator must be cleared before release, autocreator: %@", 6581 @"%@: Autocreator must be cleared before release, autocreator: %@",
6546 [self class], _autocreator); 6582 [self class], _autocreator);
6547 [_dictionary release]; 6583 [_dictionary release];
6548 [super dealloc]; 6584 [super dealloc];
6549 } 6585 }
6550 6586
6551 - (instancetype)copyWithZone:(NSZone *)zone { 6587 - (instancetype)copyWithZone:(NSZone *)zone {
6552 return [[GPBUInt64FloatDictionary allocWithZone:zone] initWithDictionary:self] ; 6588 return [[GPBUInt64FloatDictionary allocWithZone:zone] initWithDictionary:self] ;
6553 } 6589 }
6554 6590
6555 - (BOOL)isEqual:(GPBUInt64FloatDictionary *)other { 6591 - (BOOL)isEqual:(id)other {
6556 if (self == other) { 6592 if (self == other) {
6557 return YES; 6593 return YES;
6558 } 6594 }
6559 if (![other isKindOfClass:[GPBUInt64FloatDictionary class]]) { 6595 if (![other isKindOfClass:[GPBUInt64FloatDictionary class]]) {
6560 return NO; 6596 return NO;
6561 } 6597 }
6562 return [_dictionary isEqual:other->_dictionary]; 6598 GPBUInt64FloatDictionary *otherDictionary = other;
6599 return [_dictionary isEqual:otherDictionary->_dictionary];
6563 } 6600 }
6564 6601
6565 - (NSUInteger)hash { 6602 - (NSUInteger)hash {
6566 return _dictionary.count; 6603 return _dictionary.count;
6567 } 6604 }
6568 6605
6569 - (NSString *)description { 6606 - (NSString *)description {
6570 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 6607 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
6571 } 6608 }
6572 6609
6573 - (NSUInteger)count { 6610 - (NSUInteger)count {
6574 return _dictionary.count; 6611 return _dictionary.count;
6575 } 6612 }
6576 6613
6577 - (void)enumerateKeysAndValuesUsingBlock: 6614 - (void)enumerateKeysAndFloatsUsingBlock:
6578 (void (^)(uint64_t key, float value, BOOL *stop))block { 6615 (void (^)(uint64_t key, float value, BOOL *stop))block {
6579 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 6616 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
6580 NSNumber *aValue, 6617 NSNumber *aValue,
6581 BOOL *stop) { 6618 BOOL *stop) {
6582 block([aKey unsignedLongLongValue], [aValue floatValue], stop); 6619 block([aKey unsignedLongLongValue], [aValue floatValue], stop);
6583 }]; 6620 }];
6584 } 6621 }
6585 6622
6586 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 6623 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
6587 NSUInteger count = _dictionary.count; 6624 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
6625 WriteDictFloatField(outputStream, [aValue floatValue], kMapValueFieldNumber, valueDataType); 6662 WriteDictFloatField(outputStream, [aValue floatValue], kMapValueFieldNumber, valueDataType);
6626 }]; 6663 }];
6627 } 6664 }
6628 6665
6629 - (void)setGPBGenericValue:(GPBGenericValue *)value 6666 - (void)setGPBGenericValue:(GPBGenericValue *)value
6630 forGPBGenericValueKey:(GPBGenericValue *)key { 6667 forGPBGenericValueKey:(GPBGenericValue *)key {
6631 [_dictionary setObject:@(value->valueFloat) forKey:@(key->valueUInt64)]; 6668 [_dictionary setObject:@(value->valueFloat) forKey:@(key->valueUInt64)];
6632 } 6669 }
6633 6670
6634 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 6671 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
6635 [self enumerateKeysAndValuesUsingBlock:^(uint64_t key, float value, BOOL *stop ) { 6672 [self enumerateKeysAndFloatsUsingBlock:^(uint64_t key, float value, BOOL *stop ) {
6636 #pragma unused(stop) 6673 #pragma unused(stop)
6637 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%.*g", FLT_DIG, value]); 6674 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%.*g", FLT_DIG, value]);
6638 }]; 6675 }];
6639 } 6676 }
6640 6677
6641 - (BOOL)valueForKey:(uint64_t)key value:(float *)value { 6678 - (BOOL)getFloat:(nullable float *)value forKey:(uint64_t)key {
6642 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 6679 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
6643 if (wrapped && value) { 6680 if (wrapped && value) {
6644 *value = [wrapped floatValue]; 6681 *value = [wrapped floatValue];
6645 } 6682 }
6646 return (wrapped != NULL); 6683 return (wrapped != NULL);
6647 } 6684 }
6648 6685
6649 - (void)addEntriesFromDictionary:(GPBUInt64FloatDictionary *)otherDictionary { 6686 - (void)addEntriesFromDictionary:(GPBUInt64FloatDictionary *)otherDictionary {
6650 if (otherDictionary) { 6687 if (otherDictionary) {
6651 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 6688 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
6652 if (_autocreator) { 6689 if (_autocreator) {
6653 GPBAutocreatedDictionaryModified(_autocreator, self); 6690 GPBAutocreatedDictionaryModified(_autocreator, self);
6654 } 6691 }
6655 } 6692 }
6656 } 6693 }
6657 6694
6658 - (void)setValue:(float)value forKey:(uint64_t)key { 6695 - (void)setFloat:(float)value forKey:(uint64_t)key {
6659 [_dictionary setObject:@(value) forKey:@(key)]; 6696 [_dictionary setObject:@(value) forKey:@(key)];
6660 if (_autocreator) { 6697 if (_autocreator) {
6661 GPBAutocreatedDictionaryModified(_autocreator, self); 6698 GPBAutocreatedDictionaryModified(_autocreator, self);
6662 } 6699 }
6663 } 6700 }
6664 6701
6665 - (void)removeValueForKey:(uint64_t)aKey { 6702 - (void)removeFloatForKey:(uint64_t)aKey {
6666 [_dictionary removeObjectForKey:@(aKey)]; 6703 [_dictionary removeObjectForKey:@(aKey)];
6667 } 6704 }
6668 6705
6669 - (void)removeAll { 6706 - (void)removeAll {
6670 [_dictionary removeAllObjects]; 6707 [_dictionary removeAllObjects];
6671 } 6708 }
6672 6709
6673 @end 6710 @end
6674 6711
6675 #pragma mark - UInt64 -> Double 6712 #pragma mark - UInt64 -> Double
6676 6713
6677 @implementation GPBUInt64DoubleDictionary { 6714 @implementation GPBUInt64DoubleDictionary {
6678 @package 6715 @package
6679 NSMutableDictionary *_dictionary; 6716 NSMutableDictionary *_dictionary;
6680 } 6717 }
6681 6718
6682 + (instancetype)dictionary { 6719 + (instancetype)dictionary {
6683 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 6720 return [[[self alloc] initWithDoubles:NULL forKeys:NULL count:0] autorelease];
6684 } 6721 }
6685 6722
6686 + (instancetype)dictionaryWithValue:(double)value 6723 + (instancetype)dictionaryWithDouble:(double)value
6687 forKey:(uint64_t)key { 6724 forKey:(uint64_t)key {
6688 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 6725 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
6689 // on to get the type correct. 6726 // on to get the type correct.
6690 return [[(GPBUInt64DoubleDictionary*)[self alloc] initWithValues:&value 6727 return [[(GPBUInt64DoubleDictionary*)[self alloc] initWithDoubles:&value
6691 forKeys:&key 6728 forKeys:&key
6692 count:1] autoreleas e]; 6729 count:1] autorelea se];
6693 } 6730 }
6694 6731
6695 + (instancetype)dictionaryWithValues:(const double [])values 6732 + (instancetype)dictionaryWithDoubles:(const double [])values
6696 forKeys:(const uint64_t [])keys 6733 forKeys:(const uint64_t [])keys
6697 count:(NSUInteger)count { 6734 count:(NSUInteger)count {
6698 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 6735 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
6699 // on to get the type correct. 6736 // on to get the type correct.
6700 return [[(GPBUInt64DoubleDictionary*)[self alloc] initWithValues:values 6737 return [[(GPBUInt64DoubleDictionary*)[self alloc] initWithDoubles:values
6701 forKeys:keys 6738 forKeys:keys
6702 count:count] autore lease]; 6739 count:count] autore lease];
6703 } 6740 }
6704 6741
6705 + (instancetype)dictionaryWithDictionary:(GPBUInt64DoubleDictionary *)dictionary { 6742 + (instancetype)dictionaryWithDictionary:(GPBUInt64DoubleDictionary *)dictionary {
6706 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 6743 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
6707 // on to get the type correct. 6744 // on to get the type correct.
6708 return [[(GPBUInt64DoubleDictionary*)[self alloc] initWithDictionary:dictionar y] autorelease]; 6745 return [[(GPBUInt64DoubleDictionary*)[self alloc] initWithDictionary:dictionar y] autorelease];
6709 } 6746 }
6710 6747
6711 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 6748 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
6712 return [[[self alloc] initWithCapacity:numItems] autorelease]; 6749 return [[[self alloc] initWithCapacity:numItems] autorelease];
6713 } 6750 }
6714 6751
6715 - (instancetype)init { 6752 - (instancetype)init {
6716 return [self initWithValues:NULL forKeys:NULL count:0]; 6753 return [self initWithDoubles:NULL forKeys:NULL count:0];
6717 } 6754 }
6718 6755
6719 - (instancetype)initWithValues:(const double [])values 6756 - (instancetype)initWithDoubles:(const double [])values
6720 forKeys:(const uint64_t [])keys 6757 forKeys:(const uint64_t [])keys
6721 count:(NSUInteger)count { 6758 count:(NSUInteger)count {
6722 self = [super init]; 6759 self = [super init];
6723 if (self) { 6760 if (self) {
6724 _dictionary = [[NSMutableDictionary alloc] init]; 6761 _dictionary = [[NSMutableDictionary alloc] init];
6725 if (count && values && keys) { 6762 if (count && values && keys) {
6726 for (NSUInteger i = 0; i < count; ++i) { 6763 for (NSUInteger i = 0; i < count; ++i) {
6727 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 6764 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
6728 } 6765 }
6729 } 6766 }
6730 } 6767 }
6731 return self; 6768 return self;
6732 } 6769 }
6733 6770
6734 - (instancetype)initWithDictionary:(GPBUInt64DoubleDictionary *)dictionary { 6771 - (instancetype)initWithDictionary:(GPBUInt64DoubleDictionary *)dictionary {
6735 self = [self initWithValues:NULL forKeys:NULL count:0]; 6772 self = [self initWithDoubles:NULL forKeys:NULL count:0];
6736 if (self) { 6773 if (self) {
6737 if (dictionary) { 6774 if (dictionary) {
6738 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 6775 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
6739 } 6776 }
6740 } 6777 }
6741 return self; 6778 return self;
6742 } 6779 }
6743 6780
6744 - (instancetype)initWithCapacity:(NSUInteger)numItems { 6781 - (instancetype)initWithCapacity:(NSUInteger)numItems {
6745 #pragma unused(numItems) 6782 #pragma unused(numItems)
6746 return [self initWithValues:NULL forKeys:NULL count:0]; 6783 return [self initWithDoubles:NULL forKeys:NULL count:0];
6747 } 6784 }
6748 6785
6749 - (void)dealloc { 6786 - (void)dealloc {
6750 NSAssert(!_autocreator, 6787 NSAssert(!_autocreator,
6751 @"%@: Autocreator must be cleared before release, autocreator: %@", 6788 @"%@: Autocreator must be cleared before release, autocreator: %@",
6752 [self class], _autocreator); 6789 [self class], _autocreator);
6753 [_dictionary release]; 6790 [_dictionary release];
6754 [super dealloc]; 6791 [super dealloc];
6755 } 6792 }
6756 6793
6757 - (instancetype)copyWithZone:(NSZone *)zone { 6794 - (instancetype)copyWithZone:(NSZone *)zone {
6758 return [[GPBUInt64DoubleDictionary allocWithZone:zone] initWithDictionary:self ]; 6795 return [[GPBUInt64DoubleDictionary allocWithZone:zone] initWithDictionary:self ];
6759 } 6796 }
6760 6797
6761 - (BOOL)isEqual:(GPBUInt64DoubleDictionary *)other { 6798 - (BOOL)isEqual:(id)other {
6762 if (self == other) { 6799 if (self == other) {
6763 return YES; 6800 return YES;
6764 } 6801 }
6765 if (![other isKindOfClass:[GPBUInt64DoubleDictionary class]]) { 6802 if (![other isKindOfClass:[GPBUInt64DoubleDictionary class]]) {
6766 return NO; 6803 return NO;
6767 } 6804 }
6768 return [_dictionary isEqual:other->_dictionary]; 6805 GPBUInt64DoubleDictionary *otherDictionary = other;
6806 return [_dictionary isEqual:otherDictionary->_dictionary];
6769 } 6807 }
6770 6808
6771 - (NSUInteger)hash { 6809 - (NSUInteger)hash {
6772 return _dictionary.count; 6810 return _dictionary.count;
6773 } 6811 }
6774 6812
6775 - (NSString *)description { 6813 - (NSString *)description {
6776 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 6814 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
6777 } 6815 }
6778 6816
6779 - (NSUInteger)count { 6817 - (NSUInteger)count {
6780 return _dictionary.count; 6818 return _dictionary.count;
6781 } 6819 }
6782 6820
6783 - (void)enumerateKeysAndValuesUsingBlock: 6821 - (void)enumerateKeysAndDoublesUsingBlock:
6784 (void (^)(uint64_t key, double value, BOOL *stop))block { 6822 (void (^)(uint64_t key, double value, BOOL *stop))block {
6785 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 6823 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
6786 NSNumber *aValue, 6824 NSNumber *aValue,
6787 BOOL *stop) { 6825 BOOL *stop) {
6788 block([aKey unsignedLongLongValue], [aValue doubleValue], stop); 6826 block([aKey unsignedLongLongValue], [aValue doubleValue], stop);
6789 }]; 6827 }];
6790 } 6828 }
6791 6829
6792 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 6830 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
6793 NSUInteger count = _dictionary.count; 6831 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
6831 WriteDictDoubleField(outputStream, [aValue doubleValue], kMapValueFieldNumbe r, valueDataType); 6869 WriteDictDoubleField(outputStream, [aValue doubleValue], kMapValueFieldNumbe r, valueDataType);
6832 }]; 6870 }];
6833 } 6871 }
6834 6872
6835 - (void)setGPBGenericValue:(GPBGenericValue *)value 6873 - (void)setGPBGenericValue:(GPBGenericValue *)value
6836 forGPBGenericValueKey:(GPBGenericValue *)key { 6874 forGPBGenericValueKey:(GPBGenericValue *)key {
6837 [_dictionary setObject:@(value->valueDouble) forKey:@(key->valueUInt64)]; 6875 [_dictionary setObject:@(value->valueDouble) forKey:@(key->valueUInt64)];
6838 } 6876 }
6839 6877
6840 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 6878 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
6841 [self enumerateKeysAndValuesUsingBlock:^(uint64_t key, double value, BOOL *sto p) { 6879 [self enumerateKeysAndDoublesUsingBlock:^(uint64_t key, double value, BOOL *st op) {
6842 #pragma unused(stop) 6880 #pragma unused(stop)
6843 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%.*lg", DBL_DIG, value]); 6881 block([NSString stringWithFormat:@"%llu", key], [NSString stringWithFormat :@"%.*lg", DBL_DIG, value]);
6844 }]; 6882 }];
6845 } 6883 }
6846 6884
6847 - (BOOL)valueForKey:(uint64_t)key value:(double *)value { 6885 - (BOOL)getDouble:(nullable double *)value forKey:(uint64_t)key {
6848 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 6886 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
6849 if (wrapped && value) { 6887 if (wrapped && value) {
6850 *value = [wrapped doubleValue]; 6888 *value = [wrapped doubleValue];
6851 } 6889 }
6852 return (wrapped != NULL); 6890 return (wrapped != NULL);
6853 } 6891 }
6854 6892
6855 - (void)addEntriesFromDictionary:(GPBUInt64DoubleDictionary *)otherDictionary { 6893 - (void)addEntriesFromDictionary:(GPBUInt64DoubleDictionary *)otherDictionary {
6856 if (otherDictionary) { 6894 if (otherDictionary) {
6857 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 6895 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
6858 if (_autocreator) { 6896 if (_autocreator) {
6859 GPBAutocreatedDictionaryModified(_autocreator, self); 6897 GPBAutocreatedDictionaryModified(_autocreator, self);
6860 } 6898 }
6861 } 6899 }
6862 } 6900 }
6863 6901
6864 - (void)setValue:(double)value forKey:(uint64_t)key { 6902 - (void)setDouble:(double)value forKey:(uint64_t)key {
6865 [_dictionary setObject:@(value) forKey:@(key)]; 6903 [_dictionary setObject:@(value) forKey:@(key)];
6866 if (_autocreator) { 6904 if (_autocreator) {
6867 GPBAutocreatedDictionaryModified(_autocreator, self); 6905 GPBAutocreatedDictionaryModified(_autocreator, self);
6868 } 6906 }
6869 } 6907 }
6870 6908
6871 - (void)removeValueForKey:(uint64_t)aKey { 6909 - (void)removeDoubleForKey:(uint64_t)aKey {
6872 [_dictionary removeObjectForKey:@(aKey)]; 6910 [_dictionary removeObjectForKey:@(aKey)];
6873 } 6911 }
6874 6912
6875 - (void)removeAll { 6913 - (void)removeAll {
6876 [_dictionary removeAllObjects]; 6914 [_dictionary removeAllObjects];
6877 } 6915 }
6878 6916
6879 @end 6917 @end
6880 6918
6881 #pragma mark - UInt64 -> Enum 6919 #pragma mark - UInt64 -> Enum
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
6985 @"%@: Autocreator must be cleared before release, autocreator: %@", 7023 @"%@: Autocreator must be cleared before release, autocreator: %@",
6986 [self class], _autocreator); 7024 [self class], _autocreator);
6987 [_dictionary release]; 7025 [_dictionary release];
6988 [super dealloc]; 7026 [super dealloc];
6989 } 7027 }
6990 7028
6991 - (instancetype)copyWithZone:(NSZone *)zone { 7029 - (instancetype)copyWithZone:(NSZone *)zone {
6992 return [[GPBUInt64EnumDictionary allocWithZone:zone] initWithDictionary:self]; 7030 return [[GPBUInt64EnumDictionary allocWithZone:zone] initWithDictionary:self];
6993 } 7031 }
6994 7032
6995 - (BOOL)isEqual:(GPBUInt64EnumDictionary *)other { 7033 - (BOOL)isEqual:(id)other {
6996 if (self == other) { 7034 if (self == other) {
6997 return YES; 7035 return YES;
6998 } 7036 }
6999 if (![other isKindOfClass:[GPBUInt64EnumDictionary class]]) { 7037 if (![other isKindOfClass:[GPBUInt64EnumDictionary class]]) {
7000 return NO; 7038 return NO;
7001 } 7039 }
7002 return [_dictionary isEqual:other->_dictionary]; 7040 GPBUInt64EnumDictionary *otherDictionary = other;
7041 return [_dictionary isEqual:otherDictionary->_dictionary];
7003 } 7042 }
7004 7043
7005 - (NSUInteger)hash { 7044 - (NSUInteger)hash {
7006 return _dictionary.count; 7045 return _dictionary.count;
7007 } 7046 }
7008 7047
7009 - (NSString *)description { 7048 - (NSString *)description {
7010 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 7049 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
7011 } 7050 }
7012 7051
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
7083 [_dictionary setObject:@(value->valueEnum) forKey:@(key->valueUInt64)]; 7122 [_dictionary setObject:@(value->valueEnum) forKey:@(key->valueUInt64)];
7084 } 7123 }
7085 7124
7086 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 7125 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
7087 [self enumerateKeysAndRawValuesUsingBlock:^(uint64_t key, int32_t value, BOOL *stop) { 7126 [self enumerateKeysAndRawValuesUsingBlock:^(uint64_t key, int32_t value, BOOL *stop) {
7088 #pragma unused(stop) 7127 #pragma unused(stop)
7089 block([NSString stringWithFormat:@"%llu", key], @(value)); 7128 block([NSString stringWithFormat:@"%llu", key], @(value));
7090 }]; 7129 }];
7091 } 7130 }
7092 7131
7093 - (BOOL)valueForKey:(uint64_t)key value:(int32_t *)value { 7132 - (BOOL)getEnum:(int32_t *)value forKey:(uint64_t)key {
7094 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 7133 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
7095 if (wrapped && value) { 7134 if (wrapped && value) {
7096 int32_t result = [wrapped intValue]; 7135 int32_t result = [wrapped intValue];
7097 if (!_validationFunc(result)) { 7136 if (!_validationFunc(result)) {
7098 result = kGPBUnrecognizedEnumeratorValue; 7137 result = kGPBUnrecognizedEnumeratorValue;
7099 } 7138 }
7100 *value = result; 7139 *value = result;
7101 } 7140 }
7102 return (wrapped != NULL); 7141 return (wrapped != NULL);
7103 } 7142 }
7104 7143
7105 - (BOOL)valueForKey:(uint64_t)key rawValue:(int32_t *)rawValue { 7144 - (BOOL)getRawValue:(int32_t *)rawValue forKey:(uint64_t)key {
7106 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 7145 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
7107 if (wrapped && rawValue) { 7146 if (wrapped && rawValue) {
7108 *rawValue = [wrapped intValue]; 7147 *rawValue = [wrapped intValue];
7109 } 7148 }
7110 return (wrapped != NULL); 7149 return (wrapped != NULL);
7111 } 7150 }
7112 7151
7113 - (void)enumerateKeysAndValuesUsingBlock: 7152 - (void)enumerateKeysAndEnumsUsingBlock:
7114 (void (^)(uint64_t key, int32_t value, BOOL *stop))block { 7153 (void (^)(uint64_t key, int32_t value, BOOL *stop))block {
7115 GPBEnumValidationFunc func = _validationFunc; 7154 GPBEnumValidationFunc func = _validationFunc;
7116 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 7155 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
7117 NSNumber *aValue, 7156 NSNumber *aValue,
7118 BOOL *stop) { 7157 BOOL *stop) {
7119 int32_t unwrapped = [aValue intValue]; 7158 int32_t unwrapped = [aValue intValue];
7120 if (!func(unwrapped)) { 7159 if (!func(unwrapped)) {
7121 unwrapped = kGPBUnrecognizedEnumeratorValue; 7160 unwrapped = kGPBUnrecognizedEnumeratorValue;
7122 } 7161 }
7123 block([aKey unsignedLongLongValue], unwrapped, stop); 7162 block([aKey unsignedLongLongValue], unwrapped, stop);
7124 }]; 7163 }];
7125 } 7164 }
7126 7165
7127 - (void)addRawEntriesFromDictionary:(GPBUInt64EnumDictionary *)otherDictionary { 7166 - (void)addRawEntriesFromDictionary:(GPBUInt64EnumDictionary *)otherDictionary {
7128 if (otherDictionary) { 7167 if (otherDictionary) {
7129 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 7168 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
7130 if (_autocreator) { 7169 if (_autocreator) {
7131 GPBAutocreatedDictionaryModified(_autocreator, self); 7170 GPBAutocreatedDictionaryModified(_autocreator, self);
7132 } 7171 }
7133 } 7172 }
7134 } 7173 }
7135 7174
7136 - (void)setRawValue:(int32_t)value forKey:(uint64_t)key { 7175 - (void)setRawValue:(int32_t)value forKey:(uint64_t)key {
7137 [_dictionary setObject:@(value) forKey:@(key)]; 7176 [_dictionary setObject:@(value) forKey:@(key)];
7138 if (_autocreator) { 7177 if (_autocreator) {
7139 GPBAutocreatedDictionaryModified(_autocreator, self); 7178 GPBAutocreatedDictionaryModified(_autocreator, self);
7140 } 7179 }
7141 } 7180 }
7142 7181
7143 - (void)removeValueForKey:(uint64_t)aKey { 7182 - (void)removeEnumForKey:(uint64_t)aKey {
7144 [_dictionary removeObjectForKey:@(aKey)]; 7183 [_dictionary removeObjectForKey:@(aKey)];
7145 } 7184 }
7146 7185
7147 - (void)removeAll { 7186 - (void)removeAll {
7148 [_dictionary removeAllObjects]; 7187 [_dictionary removeAllObjects];
7149 } 7188 }
7150 7189
7151 - (void)setValue:(int32_t)value forKey:(uint64_t)key { 7190 - (void)setEnum:(int32_t)value forKey:(uint64_t)key {
7152 if (!_validationFunc(value)) { 7191 if (!_validationFunc(value)) {
7153 [NSException raise:NSInvalidArgumentException 7192 [NSException raise:NSInvalidArgumentException
7154 format:@"GPBUInt64EnumDictionary: Attempt to set an unknown enum value (%d)", 7193 format:@"GPBUInt64EnumDictionary: Attempt to set an unknown enum value (%d)",
7155 value]; 7194 value];
7156 } 7195 }
7157 7196
7158 [_dictionary setObject:@(value) forKey:@(key)]; 7197 [_dictionary setObject:@(value) forKey:@(key)];
7159 if (_autocreator) { 7198 if (_autocreator) {
7160 GPBAutocreatedDictionaryModified(_autocreator, self); 7199 GPBAutocreatedDictionaryModified(_autocreator, self);
7161 } 7200 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
7246 @"%@: Autocreator must be cleared before release, autocreator: %@", 7285 @"%@: Autocreator must be cleared before release, autocreator: %@",
7247 [self class], _autocreator); 7286 [self class], _autocreator);
7248 [_dictionary release]; 7287 [_dictionary release];
7249 [super dealloc]; 7288 [super dealloc];
7250 } 7289 }
7251 7290
7252 - (instancetype)copyWithZone:(NSZone *)zone { 7291 - (instancetype)copyWithZone:(NSZone *)zone {
7253 return [[GPBUInt64ObjectDictionary allocWithZone:zone] initWithDictionary:self ]; 7292 return [[GPBUInt64ObjectDictionary allocWithZone:zone] initWithDictionary:self ];
7254 } 7293 }
7255 7294
7256 - (BOOL)isEqual:(GPBUInt64ObjectDictionary *)other { 7295 - (BOOL)isEqual:(id)other {
7257 if (self == other) { 7296 if (self == other) {
7258 return YES; 7297 return YES;
7259 } 7298 }
7260 if (![other isKindOfClass:[GPBUInt64ObjectDictionary class]]) { 7299 if (![other isKindOfClass:[GPBUInt64ObjectDictionary class]]) {
7261 return NO; 7300 return NO;
7262 } 7301 }
7263 return [_dictionary isEqual:other->_dictionary]; 7302 GPBUInt64ObjectDictionary *otherDictionary = other;
7303 return [_dictionary isEqual:otherDictionary->_dictionary];
7264 } 7304 }
7265 7305
7266 - (NSUInteger)hash { 7306 - (NSUInteger)hash {
7267 return _dictionary.count; 7307 return _dictionary.count;
7268 } 7308 }
7269 7309
7270 - (NSString *)description { 7310 - (NSString *)description {
7271 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 7311 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
7272 } 7312 }
7273 7313
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
7401 // This block of code is generated, do not edit it directly. 7441 // This block of code is generated, do not edit it directly.
7402 7442
7403 #pragma mark - Int64 -> UInt32 7443 #pragma mark - Int64 -> UInt32
7404 7444
7405 @implementation GPBInt64UInt32Dictionary { 7445 @implementation GPBInt64UInt32Dictionary {
7406 @package 7446 @package
7407 NSMutableDictionary *_dictionary; 7447 NSMutableDictionary *_dictionary;
7408 } 7448 }
7409 7449
7410 + (instancetype)dictionary { 7450 + (instancetype)dictionary {
7411 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 7451 return [[[self alloc] initWithUInt32s:NULL forKeys:NULL count:0] autorelease];
7412 } 7452 }
7413 7453
7414 + (instancetype)dictionaryWithValue:(uint32_t)value 7454 + (instancetype)dictionaryWithUInt32:(uint32_t)value
7415 forKey:(int64_t)key { 7455 forKey:(int64_t)key {
7416 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 7456 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
7417 // on to get the type correct. 7457 // on to get the type correct.
7418 return [[(GPBInt64UInt32Dictionary*)[self alloc] initWithValues:&value 7458 return [[(GPBInt64UInt32Dictionary*)[self alloc] initWithUInt32s:&value
7419 forKeys:&key 7459 forKeys:&key
7420 count:1] autorelease ]; 7460 count:1] autoreleas e];
7421 } 7461 }
7422 7462
7423 + (instancetype)dictionaryWithValues:(const uint32_t [])values 7463 + (instancetype)dictionaryWithUInt32s:(const uint32_t [])values
7424 forKeys:(const int64_t [])keys 7464 forKeys:(const int64_t [])keys
7425 count:(NSUInteger)count { 7465 count:(NSUInteger)count {
7426 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 7466 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
7427 // on to get the type correct. 7467 // on to get the type correct.
7428 return [[(GPBInt64UInt32Dictionary*)[self alloc] initWithValues:values 7468 return [[(GPBInt64UInt32Dictionary*)[self alloc] initWithUInt32s:values
7429 forKeys:keys 7469 forKeys:keys
7430 count:count] autorel ease]; 7470 count:count] autorel ease];
7431 } 7471 }
7432 7472
7433 + (instancetype)dictionaryWithDictionary:(GPBInt64UInt32Dictionary *)dictionary { 7473 + (instancetype)dictionaryWithDictionary:(GPBInt64UInt32Dictionary *)dictionary {
7434 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 7474 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
7435 // on to get the type correct. 7475 // on to get the type correct.
7436 return [[(GPBInt64UInt32Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 7476 return [[(GPBInt64UInt32Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
7437 } 7477 }
7438 7478
7439 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 7479 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
7440 return [[[self alloc] initWithCapacity:numItems] autorelease]; 7480 return [[[self alloc] initWithCapacity:numItems] autorelease];
7441 } 7481 }
7442 7482
7443 - (instancetype)init { 7483 - (instancetype)init {
7444 return [self initWithValues:NULL forKeys:NULL count:0]; 7484 return [self initWithUInt32s:NULL forKeys:NULL count:0];
7445 } 7485 }
7446 7486
7447 - (instancetype)initWithValues:(const uint32_t [])values 7487 - (instancetype)initWithUInt32s:(const uint32_t [])values
7448 forKeys:(const int64_t [])keys 7488 forKeys:(const int64_t [])keys
7449 count:(NSUInteger)count { 7489 count:(NSUInteger)count {
7450 self = [super init]; 7490 self = [super init];
7451 if (self) { 7491 if (self) {
7452 _dictionary = [[NSMutableDictionary alloc] init]; 7492 _dictionary = [[NSMutableDictionary alloc] init];
7453 if (count && values && keys) { 7493 if (count && values && keys) {
7454 for (NSUInteger i = 0; i < count; ++i) { 7494 for (NSUInteger i = 0; i < count; ++i) {
7455 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 7495 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
7456 } 7496 }
7457 } 7497 }
7458 } 7498 }
7459 return self; 7499 return self;
7460 } 7500 }
7461 7501
7462 - (instancetype)initWithDictionary:(GPBInt64UInt32Dictionary *)dictionary { 7502 - (instancetype)initWithDictionary:(GPBInt64UInt32Dictionary *)dictionary {
7463 self = [self initWithValues:NULL forKeys:NULL count:0]; 7503 self = [self initWithUInt32s:NULL forKeys:NULL count:0];
7464 if (self) { 7504 if (self) {
7465 if (dictionary) { 7505 if (dictionary) {
7466 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 7506 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
7467 } 7507 }
7468 } 7508 }
7469 return self; 7509 return self;
7470 } 7510 }
7471 7511
7472 - (instancetype)initWithCapacity:(NSUInteger)numItems { 7512 - (instancetype)initWithCapacity:(NSUInteger)numItems {
7473 #pragma unused(numItems) 7513 #pragma unused(numItems)
7474 return [self initWithValues:NULL forKeys:NULL count:0]; 7514 return [self initWithUInt32s:NULL forKeys:NULL count:0];
7475 } 7515 }
7476 7516
7477 - (void)dealloc { 7517 - (void)dealloc {
7478 NSAssert(!_autocreator, 7518 NSAssert(!_autocreator,
7479 @"%@: Autocreator must be cleared before release, autocreator: %@", 7519 @"%@: Autocreator must be cleared before release, autocreator: %@",
7480 [self class], _autocreator); 7520 [self class], _autocreator);
7481 [_dictionary release]; 7521 [_dictionary release];
7482 [super dealloc]; 7522 [super dealloc];
7483 } 7523 }
7484 7524
7485 - (instancetype)copyWithZone:(NSZone *)zone { 7525 - (instancetype)copyWithZone:(NSZone *)zone {
7486 return [[GPBInt64UInt32Dictionary allocWithZone:zone] initWithDictionary:self] ; 7526 return [[GPBInt64UInt32Dictionary allocWithZone:zone] initWithDictionary:self] ;
7487 } 7527 }
7488 7528
7489 - (BOOL)isEqual:(GPBInt64UInt32Dictionary *)other { 7529 - (BOOL)isEqual:(id)other {
7490 if (self == other) { 7530 if (self == other) {
7491 return YES; 7531 return YES;
7492 } 7532 }
7493 if (![other isKindOfClass:[GPBInt64UInt32Dictionary class]]) { 7533 if (![other isKindOfClass:[GPBInt64UInt32Dictionary class]]) {
7494 return NO; 7534 return NO;
7495 } 7535 }
7496 return [_dictionary isEqual:other->_dictionary]; 7536 GPBInt64UInt32Dictionary *otherDictionary = other;
7537 return [_dictionary isEqual:otherDictionary->_dictionary];
7497 } 7538 }
7498 7539
7499 - (NSUInteger)hash { 7540 - (NSUInteger)hash {
7500 return _dictionary.count; 7541 return _dictionary.count;
7501 } 7542 }
7502 7543
7503 - (NSString *)description { 7544 - (NSString *)description {
7504 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 7545 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
7505 } 7546 }
7506 7547
7507 - (NSUInteger)count { 7548 - (NSUInteger)count {
7508 return _dictionary.count; 7549 return _dictionary.count;
7509 } 7550 }
7510 7551
7511 - (void)enumerateKeysAndValuesUsingBlock: 7552 - (void)enumerateKeysAndUInt32sUsingBlock:
7512 (void (^)(int64_t key, uint32_t value, BOOL *stop))block { 7553 (void (^)(int64_t key, uint32_t value, BOOL *stop))block {
7513 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 7554 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
7514 NSNumber *aValue, 7555 NSNumber *aValue,
7515 BOOL *stop) { 7556 BOOL *stop) {
7516 block([aKey longLongValue], [aValue unsignedIntValue], stop); 7557 block([aKey longLongValue], [aValue unsignedIntValue], stop);
7517 }]; 7558 }];
7518 } 7559 }
7519 7560
7520 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 7561 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
7521 NSUInteger count = _dictionary.count; 7562 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
7559 WriteDictUInt32Field(outputStream, [aValue unsignedIntValue], kMapValueField Number, valueDataType); 7600 WriteDictUInt32Field(outputStream, [aValue unsignedIntValue], kMapValueField Number, valueDataType);
7560 }]; 7601 }];
7561 } 7602 }
7562 7603
7563 - (void)setGPBGenericValue:(GPBGenericValue *)value 7604 - (void)setGPBGenericValue:(GPBGenericValue *)value
7564 forGPBGenericValueKey:(GPBGenericValue *)key { 7605 forGPBGenericValueKey:(GPBGenericValue *)key {
7565 [_dictionary setObject:@(value->valueUInt32) forKey:@(key->valueInt64)]; 7606 [_dictionary setObject:@(value->valueUInt32) forKey:@(key->valueInt64)];
7566 } 7607 }
7567 7608
7568 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 7609 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
7569 [self enumerateKeysAndValuesUsingBlock:^(int64_t key, uint32_t value, BOOL *st op) { 7610 [self enumerateKeysAndUInt32sUsingBlock:^(int64_t key, uint32_t value, BOOL *s top) {
7570 #pragma unused(stop) 7611 #pragma unused(stop)
7571 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%u", value]); 7612 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%u", value]);
7572 }]; 7613 }];
7573 } 7614 }
7574 7615
7575 - (BOOL)valueForKey:(int64_t)key value:(uint32_t *)value { 7616 - (BOOL)getUInt32:(nullable uint32_t *)value forKey:(int64_t)key {
7576 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 7617 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
7577 if (wrapped && value) { 7618 if (wrapped && value) {
7578 *value = [wrapped unsignedIntValue]; 7619 *value = [wrapped unsignedIntValue];
7579 } 7620 }
7580 return (wrapped != NULL); 7621 return (wrapped != NULL);
7581 } 7622 }
7582 7623
7583 - (void)addEntriesFromDictionary:(GPBInt64UInt32Dictionary *)otherDictionary { 7624 - (void)addEntriesFromDictionary:(GPBInt64UInt32Dictionary *)otherDictionary {
7584 if (otherDictionary) { 7625 if (otherDictionary) {
7585 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 7626 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
7586 if (_autocreator) { 7627 if (_autocreator) {
7587 GPBAutocreatedDictionaryModified(_autocreator, self); 7628 GPBAutocreatedDictionaryModified(_autocreator, self);
7588 } 7629 }
7589 } 7630 }
7590 } 7631 }
7591 7632
7592 - (void)setValue:(uint32_t)value forKey:(int64_t)key { 7633 - (void)setUInt32:(uint32_t)value forKey:(int64_t)key {
7593 [_dictionary setObject:@(value) forKey:@(key)]; 7634 [_dictionary setObject:@(value) forKey:@(key)];
7594 if (_autocreator) { 7635 if (_autocreator) {
7595 GPBAutocreatedDictionaryModified(_autocreator, self); 7636 GPBAutocreatedDictionaryModified(_autocreator, self);
7596 } 7637 }
7597 } 7638 }
7598 7639
7599 - (void)removeValueForKey:(int64_t)aKey { 7640 - (void)removeUInt32ForKey:(int64_t)aKey {
7600 [_dictionary removeObjectForKey:@(aKey)]; 7641 [_dictionary removeObjectForKey:@(aKey)];
7601 } 7642 }
7602 7643
7603 - (void)removeAll { 7644 - (void)removeAll {
7604 [_dictionary removeAllObjects]; 7645 [_dictionary removeAllObjects];
7605 } 7646 }
7606 7647
7607 @end 7648 @end
7608 7649
7609 #pragma mark - Int64 -> Int32 7650 #pragma mark - Int64 -> Int32
7610 7651
7611 @implementation GPBInt64Int32Dictionary { 7652 @implementation GPBInt64Int32Dictionary {
7612 @package 7653 @package
7613 NSMutableDictionary *_dictionary; 7654 NSMutableDictionary *_dictionary;
7614 } 7655 }
7615 7656
7616 + (instancetype)dictionary { 7657 + (instancetype)dictionary {
7617 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 7658 return [[[self alloc] initWithInt32s:NULL forKeys:NULL count:0] autorelease];
7618 } 7659 }
7619 7660
7620 + (instancetype)dictionaryWithValue:(int32_t)value 7661 + (instancetype)dictionaryWithInt32:(int32_t)value
7621 forKey:(int64_t)key { 7662 forKey:(int64_t)key {
7622 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 7663 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
7623 // on to get the type correct. 7664 // on to get the type correct.
7624 return [[(GPBInt64Int32Dictionary*)[self alloc] initWithValues:&value 7665 return [[(GPBInt64Int32Dictionary*)[self alloc] initWithInt32s:&value
7625 forKeys:&key 7666 forKeys:&key
7626 count:1] autorelease] ; 7667 count:1] autorelease] ;
7627 } 7668 }
7628 7669
7629 + (instancetype)dictionaryWithValues:(const int32_t [])values 7670 + (instancetype)dictionaryWithInt32s:(const int32_t [])values
7630 forKeys:(const int64_t [])keys 7671 forKeys:(const int64_t [])keys
7631 count:(NSUInteger)count { 7672 count:(NSUInteger)count {
7632 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 7673 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
7633 // on to get the type correct. 7674 // on to get the type correct.
7634 return [[(GPBInt64Int32Dictionary*)[self alloc] initWithValues:values 7675 return [[(GPBInt64Int32Dictionary*)[self alloc] initWithInt32s:values
7635 forKeys:keys 7676 forKeys:keys
7636 count:count] autorele ase]; 7677 count:count] autorele ase];
7637 } 7678 }
7638 7679
7639 + (instancetype)dictionaryWithDictionary:(GPBInt64Int32Dictionary *)dictionary { 7680 + (instancetype)dictionaryWithDictionary:(GPBInt64Int32Dictionary *)dictionary {
7640 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 7681 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
7641 // on to get the type correct. 7682 // on to get the type correct.
7642 return [[(GPBInt64Int32Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 7683 return [[(GPBInt64Int32Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
7643 } 7684 }
7644 7685
7645 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 7686 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
7646 return [[[self alloc] initWithCapacity:numItems] autorelease]; 7687 return [[[self alloc] initWithCapacity:numItems] autorelease];
7647 } 7688 }
7648 7689
7649 - (instancetype)init { 7690 - (instancetype)init {
7650 return [self initWithValues:NULL forKeys:NULL count:0]; 7691 return [self initWithInt32s:NULL forKeys:NULL count:0];
7651 } 7692 }
7652 7693
7653 - (instancetype)initWithValues:(const int32_t [])values 7694 - (instancetype)initWithInt32s:(const int32_t [])values
7654 forKeys:(const int64_t [])keys 7695 forKeys:(const int64_t [])keys
7655 count:(NSUInteger)count { 7696 count:(NSUInteger)count {
7656 self = [super init]; 7697 self = [super init];
7657 if (self) { 7698 if (self) {
7658 _dictionary = [[NSMutableDictionary alloc] init]; 7699 _dictionary = [[NSMutableDictionary alloc] init];
7659 if (count && values && keys) { 7700 if (count && values && keys) {
7660 for (NSUInteger i = 0; i < count; ++i) { 7701 for (NSUInteger i = 0; i < count; ++i) {
7661 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 7702 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
7662 } 7703 }
7663 } 7704 }
7664 } 7705 }
7665 return self; 7706 return self;
7666 } 7707 }
7667 7708
7668 - (instancetype)initWithDictionary:(GPBInt64Int32Dictionary *)dictionary { 7709 - (instancetype)initWithDictionary:(GPBInt64Int32Dictionary *)dictionary {
7669 self = [self initWithValues:NULL forKeys:NULL count:0]; 7710 self = [self initWithInt32s:NULL forKeys:NULL count:0];
7670 if (self) { 7711 if (self) {
7671 if (dictionary) { 7712 if (dictionary) {
7672 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 7713 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
7673 } 7714 }
7674 } 7715 }
7675 return self; 7716 return self;
7676 } 7717 }
7677 7718
7678 - (instancetype)initWithCapacity:(NSUInteger)numItems { 7719 - (instancetype)initWithCapacity:(NSUInteger)numItems {
7679 #pragma unused(numItems) 7720 #pragma unused(numItems)
7680 return [self initWithValues:NULL forKeys:NULL count:0]; 7721 return [self initWithInt32s:NULL forKeys:NULL count:0];
7681 } 7722 }
7682 7723
7683 - (void)dealloc { 7724 - (void)dealloc {
7684 NSAssert(!_autocreator, 7725 NSAssert(!_autocreator,
7685 @"%@: Autocreator must be cleared before release, autocreator: %@", 7726 @"%@: Autocreator must be cleared before release, autocreator: %@",
7686 [self class], _autocreator); 7727 [self class], _autocreator);
7687 [_dictionary release]; 7728 [_dictionary release];
7688 [super dealloc]; 7729 [super dealloc];
7689 } 7730 }
7690 7731
7691 - (instancetype)copyWithZone:(NSZone *)zone { 7732 - (instancetype)copyWithZone:(NSZone *)zone {
7692 return [[GPBInt64Int32Dictionary allocWithZone:zone] initWithDictionary:self]; 7733 return [[GPBInt64Int32Dictionary allocWithZone:zone] initWithDictionary:self];
7693 } 7734 }
7694 7735
7695 - (BOOL)isEqual:(GPBInt64Int32Dictionary *)other { 7736 - (BOOL)isEqual:(id)other {
7696 if (self == other) { 7737 if (self == other) {
7697 return YES; 7738 return YES;
7698 } 7739 }
7699 if (![other isKindOfClass:[GPBInt64Int32Dictionary class]]) { 7740 if (![other isKindOfClass:[GPBInt64Int32Dictionary class]]) {
7700 return NO; 7741 return NO;
7701 } 7742 }
7702 return [_dictionary isEqual:other->_dictionary]; 7743 GPBInt64Int32Dictionary *otherDictionary = other;
7744 return [_dictionary isEqual:otherDictionary->_dictionary];
7703 } 7745 }
7704 7746
7705 - (NSUInteger)hash { 7747 - (NSUInteger)hash {
7706 return _dictionary.count; 7748 return _dictionary.count;
7707 } 7749 }
7708 7750
7709 - (NSString *)description { 7751 - (NSString *)description {
7710 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 7752 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
7711 } 7753 }
7712 7754
7713 - (NSUInteger)count { 7755 - (NSUInteger)count {
7714 return _dictionary.count; 7756 return _dictionary.count;
7715 } 7757 }
7716 7758
7717 - (void)enumerateKeysAndValuesUsingBlock: 7759 - (void)enumerateKeysAndInt32sUsingBlock:
7718 (void (^)(int64_t key, int32_t value, BOOL *stop))block { 7760 (void (^)(int64_t key, int32_t value, BOOL *stop))block {
7719 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 7761 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
7720 NSNumber *aValue, 7762 NSNumber *aValue,
7721 BOOL *stop) { 7763 BOOL *stop) {
7722 block([aKey longLongValue], [aValue intValue], stop); 7764 block([aKey longLongValue], [aValue intValue], stop);
7723 }]; 7765 }];
7724 } 7766 }
7725 7767
7726 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 7768 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
7727 NSUInteger count = _dictionary.count; 7769 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
7765 WriteDictInt32Field(outputStream, [aValue intValue], kMapValueFieldNumber, v alueDataType); 7807 WriteDictInt32Field(outputStream, [aValue intValue], kMapValueFieldNumber, v alueDataType);
7766 }]; 7808 }];
7767 } 7809 }
7768 7810
7769 - (void)setGPBGenericValue:(GPBGenericValue *)value 7811 - (void)setGPBGenericValue:(GPBGenericValue *)value
7770 forGPBGenericValueKey:(GPBGenericValue *)key { 7812 forGPBGenericValueKey:(GPBGenericValue *)key {
7771 [_dictionary setObject:@(value->valueInt32) forKey:@(key->valueInt64)]; 7813 [_dictionary setObject:@(value->valueInt32) forKey:@(key->valueInt64)];
7772 } 7814 }
7773 7815
7774 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 7816 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
7775 [self enumerateKeysAndValuesUsingBlock:^(int64_t key, int32_t value, BOOL *sto p) { 7817 [self enumerateKeysAndInt32sUsingBlock:^(int64_t key, int32_t value, BOOL *sto p) {
7776 #pragma unused(stop) 7818 #pragma unused(stop)
7777 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%d", value]); 7819 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%d", value]);
7778 }]; 7820 }];
7779 } 7821 }
7780 7822
7781 - (BOOL)valueForKey:(int64_t)key value:(int32_t *)value { 7823 - (BOOL)getInt32:(nullable int32_t *)value forKey:(int64_t)key {
7782 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 7824 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
7783 if (wrapped && value) { 7825 if (wrapped && value) {
7784 *value = [wrapped intValue]; 7826 *value = [wrapped intValue];
7785 } 7827 }
7786 return (wrapped != NULL); 7828 return (wrapped != NULL);
7787 } 7829 }
7788 7830
7789 - (void)addEntriesFromDictionary:(GPBInt64Int32Dictionary *)otherDictionary { 7831 - (void)addEntriesFromDictionary:(GPBInt64Int32Dictionary *)otherDictionary {
7790 if (otherDictionary) { 7832 if (otherDictionary) {
7791 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 7833 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
7792 if (_autocreator) { 7834 if (_autocreator) {
7793 GPBAutocreatedDictionaryModified(_autocreator, self); 7835 GPBAutocreatedDictionaryModified(_autocreator, self);
7794 } 7836 }
7795 } 7837 }
7796 } 7838 }
7797 7839
7798 - (void)setValue:(int32_t)value forKey:(int64_t)key { 7840 - (void)setInt32:(int32_t)value forKey:(int64_t)key {
7799 [_dictionary setObject:@(value) forKey:@(key)]; 7841 [_dictionary setObject:@(value) forKey:@(key)];
7800 if (_autocreator) { 7842 if (_autocreator) {
7801 GPBAutocreatedDictionaryModified(_autocreator, self); 7843 GPBAutocreatedDictionaryModified(_autocreator, self);
7802 } 7844 }
7803 } 7845 }
7804 7846
7805 - (void)removeValueForKey:(int64_t)aKey { 7847 - (void)removeInt32ForKey:(int64_t)aKey {
7806 [_dictionary removeObjectForKey:@(aKey)]; 7848 [_dictionary removeObjectForKey:@(aKey)];
7807 } 7849 }
7808 7850
7809 - (void)removeAll { 7851 - (void)removeAll {
7810 [_dictionary removeAllObjects]; 7852 [_dictionary removeAllObjects];
7811 } 7853 }
7812 7854
7813 @end 7855 @end
7814 7856
7815 #pragma mark - Int64 -> UInt64 7857 #pragma mark - Int64 -> UInt64
7816 7858
7817 @implementation GPBInt64UInt64Dictionary { 7859 @implementation GPBInt64UInt64Dictionary {
7818 @package 7860 @package
7819 NSMutableDictionary *_dictionary; 7861 NSMutableDictionary *_dictionary;
7820 } 7862 }
7821 7863
7822 + (instancetype)dictionary { 7864 + (instancetype)dictionary {
7823 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 7865 return [[[self alloc] initWithUInt64s:NULL forKeys:NULL count:0] autorelease];
7824 } 7866 }
7825 7867
7826 + (instancetype)dictionaryWithValue:(uint64_t)value 7868 + (instancetype)dictionaryWithUInt64:(uint64_t)value
7827 forKey:(int64_t)key { 7869 forKey:(int64_t)key {
7828 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 7870 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
7829 // on to get the type correct. 7871 // on to get the type correct.
7830 return [[(GPBInt64UInt64Dictionary*)[self alloc] initWithValues:&value 7872 return [[(GPBInt64UInt64Dictionary*)[self alloc] initWithUInt64s:&value
7831 forKeys:&key 7873 forKeys:&key
7832 count:1] autorelease ]; 7874 count:1] autoreleas e];
7833 } 7875 }
7834 7876
7835 + (instancetype)dictionaryWithValues:(const uint64_t [])values 7877 + (instancetype)dictionaryWithUInt64s:(const uint64_t [])values
7836 forKeys:(const int64_t [])keys 7878 forKeys:(const int64_t [])keys
7837 count:(NSUInteger)count { 7879 count:(NSUInteger)count {
7838 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 7880 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
7839 // on to get the type correct. 7881 // on to get the type correct.
7840 return [[(GPBInt64UInt64Dictionary*)[self alloc] initWithValues:values 7882 return [[(GPBInt64UInt64Dictionary*)[self alloc] initWithUInt64s:values
7841 forKeys:keys 7883 forKeys:keys
7842 count:count] autorel ease]; 7884 count:count] autorel ease];
7843 } 7885 }
7844 7886
7845 + (instancetype)dictionaryWithDictionary:(GPBInt64UInt64Dictionary *)dictionary { 7887 + (instancetype)dictionaryWithDictionary:(GPBInt64UInt64Dictionary *)dictionary {
7846 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 7888 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
7847 // on to get the type correct. 7889 // on to get the type correct.
7848 return [[(GPBInt64UInt64Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 7890 return [[(GPBInt64UInt64Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
7849 } 7891 }
7850 7892
7851 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 7893 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
7852 return [[[self alloc] initWithCapacity:numItems] autorelease]; 7894 return [[[self alloc] initWithCapacity:numItems] autorelease];
7853 } 7895 }
7854 7896
7855 - (instancetype)init { 7897 - (instancetype)init {
7856 return [self initWithValues:NULL forKeys:NULL count:0]; 7898 return [self initWithUInt64s:NULL forKeys:NULL count:0];
7857 } 7899 }
7858 7900
7859 - (instancetype)initWithValues:(const uint64_t [])values 7901 - (instancetype)initWithUInt64s:(const uint64_t [])values
7860 forKeys:(const int64_t [])keys 7902 forKeys:(const int64_t [])keys
7861 count:(NSUInteger)count { 7903 count:(NSUInteger)count {
7862 self = [super init]; 7904 self = [super init];
7863 if (self) { 7905 if (self) {
7864 _dictionary = [[NSMutableDictionary alloc] init]; 7906 _dictionary = [[NSMutableDictionary alloc] init];
7865 if (count && values && keys) { 7907 if (count && values && keys) {
7866 for (NSUInteger i = 0; i < count; ++i) { 7908 for (NSUInteger i = 0; i < count; ++i) {
7867 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 7909 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
7868 } 7910 }
7869 } 7911 }
7870 } 7912 }
7871 return self; 7913 return self;
7872 } 7914 }
7873 7915
7874 - (instancetype)initWithDictionary:(GPBInt64UInt64Dictionary *)dictionary { 7916 - (instancetype)initWithDictionary:(GPBInt64UInt64Dictionary *)dictionary {
7875 self = [self initWithValues:NULL forKeys:NULL count:0]; 7917 self = [self initWithUInt64s:NULL forKeys:NULL count:0];
7876 if (self) { 7918 if (self) {
7877 if (dictionary) { 7919 if (dictionary) {
7878 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 7920 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
7879 } 7921 }
7880 } 7922 }
7881 return self; 7923 return self;
7882 } 7924 }
7883 7925
7884 - (instancetype)initWithCapacity:(NSUInteger)numItems { 7926 - (instancetype)initWithCapacity:(NSUInteger)numItems {
7885 #pragma unused(numItems) 7927 #pragma unused(numItems)
7886 return [self initWithValues:NULL forKeys:NULL count:0]; 7928 return [self initWithUInt64s:NULL forKeys:NULL count:0];
7887 } 7929 }
7888 7930
7889 - (void)dealloc { 7931 - (void)dealloc {
7890 NSAssert(!_autocreator, 7932 NSAssert(!_autocreator,
7891 @"%@: Autocreator must be cleared before release, autocreator: %@", 7933 @"%@: Autocreator must be cleared before release, autocreator: %@",
7892 [self class], _autocreator); 7934 [self class], _autocreator);
7893 [_dictionary release]; 7935 [_dictionary release];
7894 [super dealloc]; 7936 [super dealloc];
7895 } 7937 }
7896 7938
7897 - (instancetype)copyWithZone:(NSZone *)zone { 7939 - (instancetype)copyWithZone:(NSZone *)zone {
7898 return [[GPBInt64UInt64Dictionary allocWithZone:zone] initWithDictionary:self] ; 7940 return [[GPBInt64UInt64Dictionary allocWithZone:zone] initWithDictionary:self] ;
7899 } 7941 }
7900 7942
7901 - (BOOL)isEqual:(GPBInt64UInt64Dictionary *)other { 7943 - (BOOL)isEqual:(id)other {
7902 if (self == other) { 7944 if (self == other) {
7903 return YES; 7945 return YES;
7904 } 7946 }
7905 if (![other isKindOfClass:[GPBInt64UInt64Dictionary class]]) { 7947 if (![other isKindOfClass:[GPBInt64UInt64Dictionary class]]) {
7906 return NO; 7948 return NO;
7907 } 7949 }
7908 return [_dictionary isEqual:other->_dictionary]; 7950 GPBInt64UInt64Dictionary *otherDictionary = other;
7951 return [_dictionary isEqual:otherDictionary->_dictionary];
7909 } 7952 }
7910 7953
7911 - (NSUInteger)hash { 7954 - (NSUInteger)hash {
7912 return _dictionary.count; 7955 return _dictionary.count;
7913 } 7956 }
7914 7957
7915 - (NSString *)description { 7958 - (NSString *)description {
7916 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 7959 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
7917 } 7960 }
7918 7961
7919 - (NSUInteger)count { 7962 - (NSUInteger)count {
7920 return _dictionary.count; 7963 return _dictionary.count;
7921 } 7964 }
7922 7965
7923 - (void)enumerateKeysAndValuesUsingBlock: 7966 - (void)enumerateKeysAndUInt64sUsingBlock:
7924 (void (^)(int64_t key, uint64_t value, BOOL *stop))block { 7967 (void (^)(int64_t key, uint64_t value, BOOL *stop))block {
7925 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 7968 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
7926 NSNumber *aValue, 7969 NSNumber *aValue,
7927 BOOL *stop) { 7970 BOOL *stop) {
7928 block([aKey longLongValue], [aValue unsignedLongLongValue], stop); 7971 block([aKey longLongValue], [aValue unsignedLongLongValue], stop);
7929 }]; 7972 }];
7930 } 7973 }
7931 7974
7932 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 7975 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
7933 NSUInteger count = _dictionary.count; 7976 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
7971 WriteDictUInt64Field(outputStream, [aValue unsignedLongLongValue], kMapValue FieldNumber, valueDataType); 8014 WriteDictUInt64Field(outputStream, [aValue unsignedLongLongValue], kMapValue FieldNumber, valueDataType);
7972 }]; 8015 }];
7973 } 8016 }
7974 8017
7975 - (void)setGPBGenericValue:(GPBGenericValue *)value 8018 - (void)setGPBGenericValue:(GPBGenericValue *)value
7976 forGPBGenericValueKey:(GPBGenericValue *)key { 8019 forGPBGenericValueKey:(GPBGenericValue *)key {
7977 [_dictionary setObject:@(value->valueUInt64) forKey:@(key->valueInt64)]; 8020 [_dictionary setObject:@(value->valueUInt64) forKey:@(key->valueInt64)];
7978 } 8021 }
7979 8022
7980 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 8023 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
7981 [self enumerateKeysAndValuesUsingBlock:^(int64_t key, uint64_t value, BOOL *st op) { 8024 [self enumerateKeysAndUInt64sUsingBlock:^(int64_t key, uint64_t value, BOOL *s top) {
7982 #pragma unused(stop) 8025 #pragma unused(stop)
7983 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%llu", value]); 8026 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%llu", value]);
7984 }]; 8027 }];
7985 } 8028 }
7986 8029
7987 - (BOOL)valueForKey:(int64_t)key value:(uint64_t *)value { 8030 - (BOOL)getUInt64:(nullable uint64_t *)value forKey:(int64_t)key {
7988 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 8031 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
7989 if (wrapped && value) { 8032 if (wrapped && value) {
7990 *value = [wrapped unsignedLongLongValue]; 8033 *value = [wrapped unsignedLongLongValue];
7991 } 8034 }
7992 return (wrapped != NULL); 8035 return (wrapped != NULL);
7993 } 8036 }
7994 8037
7995 - (void)addEntriesFromDictionary:(GPBInt64UInt64Dictionary *)otherDictionary { 8038 - (void)addEntriesFromDictionary:(GPBInt64UInt64Dictionary *)otherDictionary {
7996 if (otherDictionary) { 8039 if (otherDictionary) {
7997 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 8040 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
7998 if (_autocreator) { 8041 if (_autocreator) {
7999 GPBAutocreatedDictionaryModified(_autocreator, self); 8042 GPBAutocreatedDictionaryModified(_autocreator, self);
8000 } 8043 }
8001 } 8044 }
8002 } 8045 }
8003 8046
8004 - (void)setValue:(uint64_t)value forKey:(int64_t)key { 8047 - (void)setUInt64:(uint64_t)value forKey:(int64_t)key {
8005 [_dictionary setObject:@(value) forKey:@(key)]; 8048 [_dictionary setObject:@(value) forKey:@(key)];
8006 if (_autocreator) { 8049 if (_autocreator) {
8007 GPBAutocreatedDictionaryModified(_autocreator, self); 8050 GPBAutocreatedDictionaryModified(_autocreator, self);
8008 } 8051 }
8009 } 8052 }
8010 8053
8011 - (void)removeValueForKey:(int64_t)aKey { 8054 - (void)removeUInt64ForKey:(int64_t)aKey {
8012 [_dictionary removeObjectForKey:@(aKey)]; 8055 [_dictionary removeObjectForKey:@(aKey)];
8013 } 8056 }
8014 8057
8015 - (void)removeAll { 8058 - (void)removeAll {
8016 [_dictionary removeAllObjects]; 8059 [_dictionary removeAllObjects];
8017 } 8060 }
8018 8061
8019 @end 8062 @end
8020 8063
8021 #pragma mark - Int64 -> Int64 8064 #pragma mark - Int64 -> Int64
8022 8065
8023 @implementation GPBInt64Int64Dictionary { 8066 @implementation GPBInt64Int64Dictionary {
8024 @package 8067 @package
8025 NSMutableDictionary *_dictionary; 8068 NSMutableDictionary *_dictionary;
8026 } 8069 }
8027 8070
8028 + (instancetype)dictionary { 8071 + (instancetype)dictionary {
8029 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 8072 return [[[self alloc] initWithInt64s:NULL forKeys:NULL count:0] autorelease];
8030 } 8073 }
8031 8074
8032 + (instancetype)dictionaryWithValue:(int64_t)value 8075 + (instancetype)dictionaryWithInt64:(int64_t)value
8033 forKey:(int64_t)key { 8076 forKey:(int64_t)key {
8034 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 8077 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
8035 // on to get the type correct. 8078 // on to get the type correct.
8036 return [[(GPBInt64Int64Dictionary*)[self alloc] initWithValues:&value 8079 return [[(GPBInt64Int64Dictionary*)[self alloc] initWithInt64s:&value
8037 forKeys:&key 8080 forKeys:&key
8038 count:1] autorelease] ; 8081 count:1] autorelease] ;
8039 } 8082 }
8040 8083
8041 + (instancetype)dictionaryWithValues:(const int64_t [])values 8084 + (instancetype)dictionaryWithInt64s:(const int64_t [])values
8042 forKeys:(const int64_t [])keys 8085 forKeys:(const int64_t [])keys
8043 count:(NSUInteger)count { 8086 count:(NSUInteger)count {
8044 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 8087 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
8045 // on to get the type correct. 8088 // on to get the type correct.
8046 return [[(GPBInt64Int64Dictionary*)[self alloc] initWithValues:values 8089 return [[(GPBInt64Int64Dictionary*)[self alloc] initWithInt64s:values
8047 forKeys:keys 8090 forKeys:keys
8048 count:count] autorele ase]; 8091 count:count] autorele ase];
8049 } 8092 }
8050 8093
8051 + (instancetype)dictionaryWithDictionary:(GPBInt64Int64Dictionary *)dictionary { 8094 + (instancetype)dictionaryWithDictionary:(GPBInt64Int64Dictionary *)dictionary {
8052 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 8095 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
8053 // on to get the type correct. 8096 // on to get the type correct.
8054 return [[(GPBInt64Int64Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 8097 return [[(GPBInt64Int64Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
8055 } 8098 }
8056 8099
8057 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 8100 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
8058 return [[[self alloc] initWithCapacity:numItems] autorelease]; 8101 return [[[self alloc] initWithCapacity:numItems] autorelease];
8059 } 8102 }
8060 8103
8061 - (instancetype)init { 8104 - (instancetype)init {
8062 return [self initWithValues:NULL forKeys:NULL count:0]; 8105 return [self initWithInt64s:NULL forKeys:NULL count:0];
8063 } 8106 }
8064 8107
8065 - (instancetype)initWithValues:(const int64_t [])values 8108 - (instancetype)initWithInt64s:(const int64_t [])values
8066 forKeys:(const int64_t [])keys 8109 forKeys:(const int64_t [])keys
8067 count:(NSUInteger)count { 8110 count:(NSUInteger)count {
8068 self = [super init]; 8111 self = [super init];
8069 if (self) { 8112 if (self) {
8070 _dictionary = [[NSMutableDictionary alloc] init]; 8113 _dictionary = [[NSMutableDictionary alloc] init];
8071 if (count && values && keys) { 8114 if (count && values && keys) {
8072 for (NSUInteger i = 0; i < count; ++i) { 8115 for (NSUInteger i = 0; i < count; ++i) {
8073 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 8116 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
8074 } 8117 }
8075 } 8118 }
8076 } 8119 }
8077 return self; 8120 return self;
8078 } 8121 }
8079 8122
8080 - (instancetype)initWithDictionary:(GPBInt64Int64Dictionary *)dictionary { 8123 - (instancetype)initWithDictionary:(GPBInt64Int64Dictionary *)dictionary {
8081 self = [self initWithValues:NULL forKeys:NULL count:0]; 8124 self = [self initWithInt64s:NULL forKeys:NULL count:0];
8082 if (self) { 8125 if (self) {
8083 if (dictionary) { 8126 if (dictionary) {
8084 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 8127 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
8085 } 8128 }
8086 } 8129 }
8087 return self; 8130 return self;
8088 } 8131 }
8089 8132
8090 - (instancetype)initWithCapacity:(NSUInteger)numItems { 8133 - (instancetype)initWithCapacity:(NSUInteger)numItems {
8091 #pragma unused(numItems) 8134 #pragma unused(numItems)
8092 return [self initWithValues:NULL forKeys:NULL count:0]; 8135 return [self initWithInt64s:NULL forKeys:NULL count:0];
8093 } 8136 }
8094 8137
8095 - (void)dealloc { 8138 - (void)dealloc {
8096 NSAssert(!_autocreator, 8139 NSAssert(!_autocreator,
8097 @"%@: Autocreator must be cleared before release, autocreator: %@", 8140 @"%@: Autocreator must be cleared before release, autocreator: %@",
8098 [self class], _autocreator); 8141 [self class], _autocreator);
8099 [_dictionary release]; 8142 [_dictionary release];
8100 [super dealloc]; 8143 [super dealloc];
8101 } 8144 }
8102 8145
8103 - (instancetype)copyWithZone:(NSZone *)zone { 8146 - (instancetype)copyWithZone:(NSZone *)zone {
8104 return [[GPBInt64Int64Dictionary allocWithZone:zone] initWithDictionary:self]; 8147 return [[GPBInt64Int64Dictionary allocWithZone:zone] initWithDictionary:self];
8105 } 8148 }
8106 8149
8107 - (BOOL)isEqual:(GPBInt64Int64Dictionary *)other { 8150 - (BOOL)isEqual:(id)other {
8108 if (self == other) { 8151 if (self == other) {
8109 return YES; 8152 return YES;
8110 } 8153 }
8111 if (![other isKindOfClass:[GPBInt64Int64Dictionary class]]) { 8154 if (![other isKindOfClass:[GPBInt64Int64Dictionary class]]) {
8112 return NO; 8155 return NO;
8113 } 8156 }
8114 return [_dictionary isEqual:other->_dictionary]; 8157 GPBInt64Int64Dictionary *otherDictionary = other;
8158 return [_dictionary isEqual:otherDictionary->_dictionary];
8115 } 8159 }
8116 8160
8117 - (NSUInteger)hash { 8161 - (NSUInteger)hash {
8118 return _dictionary.count; 8162 return _dictionary.count;
8119 } 8163 }
8120 8164
8121 - (NSString *)description { 8165 - (NSString *)description {
8122 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 8166 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
8123 } 8167 }
8124 8168
8125 - (NSUInteger)count { 8169 - (NSUInteger)count {
8126 return _dictionary.count; 8170 return _dictionary.count;
8127 } 8171 }
8128 8172
8129 - (void)enumerateKeysAndValuesUsingBlock: 8173 - (void)enumerateKeysAndInt64sUsingBlock:
8130 (void (^)(int64_t key, int64_t value, BOOL *stop))block { 8174 (void (^)(int64_t key, int64_t value, BOOL *stop))block {
8131 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 8175 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
8132 NSNumber *aValue, 8176 NSNumber *aValue,
8133 BOOL *stop) { 8177 BOOL *stop) {
8134 block([aKey longLongValue], [aValue longLongValue], stop); 8178 block([aKey longLongValue], [aValue longLongValue], stop);
8135 }]; 8179 }];
8136 } 8180 }
8137 8181
8138 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 8182 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
8139 NSUInteger count = _dictionary.count; 8183 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
8177 WriteDictInt64Field(outputStream, [aValue longLongValue], kMapValueFieldNumb er, valueDataType); 8221 WriteDictInt64Field(outputStream, [aValue longLongValue], kMapValueFieldNumb er, valueDataType);
8178 }]; 8222 }];
8179 } 8223 }
8180 8224
8181 - (void)setGPBGenericValue:(GPBGenericValue *)value 8225 - (void)setGPBGenericValue:(GPBGenericValue *)value
8182 forGPBGenericValueKey:(GPBGenericValue *)key { 8226 forGPBGenericValueKey:(GPBGenericValue *)key {
8183 [_dictionary setObject:@(value->valueInt64) forKey:@(key->valueInt64)]; 8227 [_dictionary setObject:@(value->valueInt64) forKey:@(key->valueInt64)];
8184 } 8228 }
8185 8229
8186 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 8230 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
8187 [self enumerateKeysAndValuesUsingBlock:^(int64_t key, int64_t value, BOOL *sto p) { 8231 [self enumerateKeysAndInt64sUsingBlock:^(int64_t key, int64_t value, BOOL *sto p) {
8188 #pragma unused(stop) 8232 #pragma unused(stop)
8189 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%lld", value]); 8233 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%lld", value]);
8190 }]; 8234 }];
8191 } 8235 }
8192 8236
8193 - (BOOL)valueForKey:(int64_t)key value:(int64_t *)value { 8237 - (BOOL)getInt64:(nullable int64_t *)value forKey:(int64_t)key {
8194 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 8238 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
8195 if (wrapped && value) { 8239 if (wrapped && value) {
8196 *value = [wrapped longLongValue]; 8240 *value = [wrapped longLongValue];
8197 } 8241 }
8198 return (wrapped != NULL); 8242 return (wrapped != NULL);
8199 } 8243 }
8200 8244
8201 - (void)addEntriesFromDictionary:(GPBInt64Int64Dictionary *)otherDictionary { 8245 - (void)addEntriesFromDictionary:(GPBInt64Int64Dictionary *)otherDictionary {
8202 if (otherDictionary) { 8246 if (otherDictionary) {
8203 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 8247 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
8204 if (_autocreator) { 8248 if (_autocreator) {
8205 GPBAutocreatedDictionaryModified(_autocreator, self); 8249 GPBAutocreatedDictionaryModified(_autocreator, self);
8206 } 8250 }
8207 } 8251 }
8208 } 8252 }
8209 8253
8210 - (void)setValue:(int64_t)value forKey:(int64_t)key { 8254 - (void)setInt64:(int64_t)value forKey:(int64_t)key {
8211 [_dictionary setObject:@(value) forKey:@(key)]; 8255 [_dictionary setObject:@(value) forKey:@(key)];
8212 if (_autocreator) { 8256 if (_autocreator) {
8213 GPBAutocreatedDictionaryModified(_autocreator, self); 8257 GPBAutocreatedDictionaryModified(_autocreator, self);
8214 } 8258 }
8215 } 8259 }
8216 8260
8217 - (void)removeValueForKey:(int64_t)aKey { 8261 - (void)removeInt64ForKey:(int64_t)aKey {
8218 [_dictionary removeObjectForKey:@(aKey)]; 8262 [_dictionary removeObjectForKey:@(aKey)];
8219 } 8263 }
8220 8264
8221 - (void)removeAll { 8265 - (void)removeAll {
8222 [_dictionary removeAllObjects]; 8266 [_dictionary removeAllObjects];
8223 } 8267 }
8224 8268
8225 @end 8269 @end
8226 8270
8227 #pragma mark - Int64 -> Bool 8271 #pragma mark - Int64 -> Bool
8228 8272
8229 @implementation GPBInt64BoolDictionary { 8273 @implementation GPBInt64BoolDictionary {
8230 @package 8274 @package
8231 NSMutableDictionary *_dictionary; 8275 NSMutableDictionary *_dictionary;
8232 } 8276 }
8233 8277
8234 + (instancetype)dictionary { 8278 + (instancetype)dictionary {
8235 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 8279 return [[[self alloc] initWithBools:NULL forKeys:NULL count:0] autorelease];
8236 } 8280 }
8237 8281
8238 + (instancetype)dictionaryWithValue:(BOOL)value 8282 + (instancetype)dictionaryWithBool:(BOOL)value
8239 forKey:(int64_t)key { 8283 forKey:(int64_t)key {
8240 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 8284 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
8241 // on to get the type correct. 8285 // on to get the type correct.
8242 return [[(GPBInt64BoolDictionary*)[self alloc] initWithValues:&value 8286 return [[(GPBInt64BoolDictionary*)[self alloc] initWithBools:&value
8243 forKeys:&key 8287 forKeys:&key
8244 count:1] autorelease]; 8288 count:1] autorelease];
8245 } 8289 }
8246 8290
8247 + (instancetype)dictionaryWithValues:(const BOOL [])values 8291 + (instancetype)dictionaryWithBools:(const BOOL [])values
8248 forKeys:(const int64_t [])keys 8292 forKeys:(const int64_t [])keys
8249 count:(NSUInteger)count { 8293 count:(NSUInteger)count {
8250 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 8294 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
8251 // on to get the type correct. 8295 // on to get the type correct.
8252 return [[(GPBInt64BoolDictionary*)[self alloc] initWithValues:values 8296 return [[(GPBInt64BoolDictionary*)[self alloc] initWithBools:values
8253 forKeys:keys 8297 forKeys:keys
8254 count:count] autorelea se]; 8298 count:count] autorelea se];
8255 } 8299 }
8256 8300
8257 + (instancetype)dictionaryWithDictionary:(GPBInt64BoolDictionary *)dictionary { 8301 + (instancetype)dictionaryWithDictionary:(GPBInt64BoolDictionary *)dictionary {
8258 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 8302 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
8259 // on to get the type correct. 8303 // on to get the type correct.
8260 return [[(GPBInt64BoolDictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 8304 return [[(GPBInt64BoolDictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
8261 } 8305 }
8262 8306
8263 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 8307 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
8264 return [[[self alloc] initWithCapacity:numItems] autorelease]; 8308 return [[[self alloc] initWithCapacity:numItems] autorelease];
8265 } 8309 }
8266 8310
8267 - (instancetype)init { 8311 - (instancetype)init {
8268 return [self initWithValues:NULL forKeys:NULL count:0]; 8312 return [self initWithBools:NULL forKeys:NULL count:0];
8269 } 8313 }
8270 8314
8271 - (instancetype)initWithValues:(const BOOL [])values 8315 - (instancetype)initWithBools:(const BOOL [])values
8272 forKeys:(const int64_t [])keys 8316 forKeys:(const int64_t [])keys
8273 count:(NSUInteger)count { 8317 count:(NSUInteger)count {
8274 self = [super init]; 8318 self = [super init];
8275 if (self) { 8319 if (self) {
8276 _dictionary = [[NSMutableDictionary alloc] init]; 8320 _dictionary = [[NSMutableDictionary alloc] init];
8277 if (count && values && keys) { 8321 if (count && values && keys) {
8278 for (NSUInteger i = 0; i < count; ++i) { 8322 for (NSUInteger i = 0; i < count; ++i) {
8279 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 8323 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
8280 } 8324 }
8281 } 8325 }
8282 } 8326 }
8283 return self; 8327 return self;
8284 } 8328 }
8285 8329
8286 - (instancetype)initWithDictionary:(GPBInt64BoolDictionary *)dictionary { 8330 - (instancetype)initWithDictionary:(GPBInt64BoolDictionary *)dictionary {
8287 self = [self initWithValues:NULL forKeys:NULL count:0]; 8331 self = [self initWithBools:NULL forKeys:NULL count:0];
8288 if (self) { 8332 if (self) {
8289 if (dictionary) { 8333 if (dictionary) {
8290 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 8334 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
8291 } 8335 }
8292 } 8336 }
8293 return self; 8337 return self;
8294 } 8338 }
8295 8339
8296 - (instancetype)initWithCapacity:(NSUInteger)numItems { 8340 - (instancetype)initWithCapacity:(NSUInteger)numItems {
8297 #pragma unused(numItems) 8341 #pragma unused(numItems)
8298 return [self initWithValues:NULL forKeys:NULL count:0]; 8342 return [self initWithBools:NULL forKeys:NULL count:0];
8299 } 8343 }
8300 8344
8301 - (void)dealloc { 8345 - (void)dealloc {
8302 NSAssert(!_autocreator, 8346 NSAssert(!_autocreator,
8303 @"%@: Autocreator must be cleared before release, autocreator: %@", 8347 @"%@: Autocreator must be cleared before release, autocreator: %@",
8304 [self class], _autocreator); 8348 [self class], _autocreator);
8305 [_dictionary release]; 8349 [_dictionary release];
8306 [super dealloc]; 8350 [super dealloc];
8307 } 8351 }
8308 8352
8309 - (instancetype)copyWithZone:(NSZone *)zone { 8353 - (instancetype)copyWithZone:(NSZone *)zone {
8310 return [[GPBInt64BoolDictionary allocWithZone:zone] initWithDictionary:self]; 8354 return [[GPBInt64BoolDictionary allocWithZone:zone] initWithDictionary:self];
8311 } 8355 }
8312 8356
8313 - (BOOL)isEqual:(GPBInt64BoolDictionary *)other { 8357 - (BOOL)isEqual:(id)other {
8314 if (self == other) { 8358 if (self == other) {
8315 return YES; 8359 return YES;
8316 } 8360 }
8317 if (![other isKindOfClass:[GPBInt64BoolDictionary class]]) { 8361 if (![other isKindOfClass:[GPBInt64BoolDictionary class]]) {
8318 return NO; 8362 return NO;
8319 } 8363 }
8320 return [_dictionary isEqual:other->_dictionary]; 8364 GPBInt64BoolDictionary *otherDictionary = other;
8365 return [_dictionary isEqual:otherDictionary->_dictionary];
8321 } 8366 }
8322 8367
8323 - (NSUInteger)hash { 8368 - (NSUInteger)hash {
8324 return _dictionary.count; 8369 return _dictionary.count;
8325 } 8370 }
8326 8371
8327 - (NSString *)description { 8372 - (NSString *)description {
8328 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 8373 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
8329 } 8374 }
8330 8375
8331 - (NSUInteger)count { 8376 - (NSUInteger)count {
8332 return _dictionary.count; 8377 return _dictionary.count;
8333 } 8378 }
8334 8379
8335 - (void)enumerateKeysAndValuesUsingBlock: 8380 - (void)enumerateKeysAndBoolsUsingBlock:
8336 (void (^)(int64_t key, BOOL value, BOOL *stop))block { 8381 (void (^)(int64_t key, BOOL value, BOOL *stop))block {
8337 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 8382 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
8338 NSNumber *aValue, 8383 NSNumber *aValue,
8339 BOOL *stop) { 8384 BOOL *stop) {
8340 block([aKey longLongValue], [aValue boolValue], stop); 8385 block([aKey longLongValue], [aValue boolValue], stop);
8341 }]; 8386 }];
8342 } 8387 }
8343 8388
8344 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 8389 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
8345 NSUInteger count = _dictionary.count; 8390 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
8383 WriteDictBoolField(outputStream, [aValue boolValue], kMapValueFieldNumber, v alueDataType); 8428 WriteDictBoolField(outputStream, [aValue boolValue], kMapValueFieldNumber, v alueDataType);
8384 }]; 8429 }];
8385 } 8430 }
8386 8431
8387 - (void)setGPBGenericValue:(GPBGenericValue *)value 8432 - (void)setGPBGenericValue:(GPBGenericValue *)value
8388 forGPBGenericValueKey:(GPBGenericValue *)key { 8433 forGPBGenericValueKey:(GPBGenericValue *)key {
8389 [_dictionary setObject:@(value->valueBool) forKey:@(key->valueInt64)]; 8434 [_dictionary setObject:@(value->valueBool) forKey:@(key->valueInt64)];
8390 } 8435 }
8391 8436
8392 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 8437 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
8393 [self enumerateKeysAndValuesUsingBlock:^(int64_t key, BOOL value, BOOL *stop) { 8438 [self enumerateKeysAndBoolsUsingBlock:^(int64_t key, BOOL value, BOOL *stop) {
8394 #pragma unused(stop) 8439 #pragma unused(stop)
8395 block([NSString stringWithFormat:@"%lld", key], (value ? @"true" : @"false ")); 8440 block([NSString stringWithFormat:@"%lld", key], (value ? @"true" : @"false "));
8396 }]; 8441 }];
8397 } 8442 }
8398 8443
8399 - (BOOL)valueForKey:(int64_t)key value:(BOOL *)value { 8444 - (BOOL)getBool:(nullable BOOL *)value forKey:(int64_t)key {
8400 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 8445 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
8401 if (wrapped && value) { 8446 if (wrapped && value) {
8402 *value = [wrapped boolValue]; 8447 *value = [wrapped boolValue];
8403 } 8448 }
8404 return (wrapped != NULL); 8449 return (wrapped != NULL);
8405 } 8450 }
8406 8451
8407 - (void)addEntriesFromDictionary:(GPBInt64BoolDictionary *)otherDictionary { 8452 - (void)addEntriesFromDictionary:(GPBInt64BoolDictionary *)otherDictionary {
8408 if (otherDictionary) { 8453 if (otherDictionary) {
8409 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 8454 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
8410 if (_autocreator) { 8455 if (_autocreator) {
8411 GPBAutocreatedDictionaryModified(_autocreator, self); 8456 GPBAutocreatedDictionaryModified(_autocreator, self);
8412 } 8457 }
8413 } 8458 }
8414 } 8459 }
8415 8460
8416 - (void)setValue:(BOOL)value forKey:(int64_t)key { 8461 - (void)setBool:(BOOL)value forKey:(int64_t)key {
8417 [_dictionary setObject:@(value) forKey:@(key)]; 8462 [_dictionary setObject:@(value) forKey:@(key)];
8418 if (_autocreator) { 8463 if (_autocreator) {
8419 GPBAutocreatedDictionaryModified(_autocreator, self); 8464 GPBAutocreatedDictionaryModified(_autocreator, self);
8420 } 8465 }
8421 } 8466 }
8422 8467
8423 - (void)removeValueForKey:(int64_t)aKey { 8468 - (void)removeBoolForKey:(int64_t)aKey {
8424 [_dictionary removeObjectForKey:@(aKey)]; 8469 [_dictionary removeObjectForKey:@(aKey)];
8425 } 8470 }
8426 8471
8427 - (void)removeAll { 8472 - (void)removeAll {
8428 [_dictionary removeAllObjects]; 8473 [_dictionary removeAllObjects];
8429 } 8474 }
8430 8475
8431 @end 8476 @end
8432 8477
8433 #pragma mark - Int64 -> Float 8478 #pragma mark - Int64 -> Float
8434 8479
8435 @implementation GPBInt64FloatDictionary { 8480 @implementation GPBInt64FloatDictionary {
8436 @package 8481 @package
8437 NSMutableDictionary *_dictionary; 8482 NSMutableDictionary *_dictionary;
8438 } 8483 }
8439 8484
8440 + (instancetype)dictionary { 8485 + (instancetype)dictionary {
8441 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 8486 return [[[self alloc] initWithFloats:NULL forKeys:NULL count:0] autorelease];
8442 } 8487 }
8443 8488
8444 + (instancetype)dictionaryWithValue:(float)value 8489 + (instancetype)dictionaryWithFloat:(float)value
8445 forKey:(int64_t)key { 8490 forKey:(int64_t)key {
8446 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 8491 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
8447 // on to get the type correct. 8492 // on to get the type correct.
8448 return [[(GPBInt64FloatDictionary*)[self alloc] initWithValues:&value 8493 return [[(GPBInt64FloatDictionary*)[self alloc] initWithFloats:&value
8449 forKeys:&key 8494 forKeys:&key
8450 count:1] autorelease] ; 8495 count:1] autorelease] ;
8451 } 8496 }
8452 8497
8453 + (instancetype)dictionaryWithValues:(const float [])values 8498 + (instancetype)dictionaryWithFloats:(const float [])values
8454 forKeys:(const int64_t [])keys 8499 forKeys:(const int64_t [])keys
8455 count:(NSUInteger)count { 8500 count:(NSUInteger)count {
8456 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 8501 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
8457 // on to get the type correct. 8502 // on to get the type correct.
8458 return [[(GPBInt64FloatDictionary*)[self alloc] initWithValues:values 8503 return [[(GPBInt64FloatDictionary*)[self alloc] initWithFloats:values
8459 forKeys:keys 8504 forKeys:keys
8460 count:count] autorele ase]; 8505 count:count] autorele ase];
8461 } 8506 }
8462 8507
8463 + (instancetype)dictionaryWithDictionary:(GPBInt64FloatDictionary *)dictionary { 8508 + (instancetype)dictionaryWithDictionary:(GPBInt64FloatDictionary *)dictionary {
8464 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 8509 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
8465 // on to get the type correct. 8510 // on to get the type correct.
8466 return [[(GPBInt64FloatDictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 8511 return [[(GPBInt64FloatDictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
8467 } 8512 }
8468 8513
8469 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 8514 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
8470 return [[[self alloc] initWithCapacity:numItems] autorelease]; 8515 return [[[self alloc] initWithCapacity:numItems] autorelease];
8471 } 8516 }
8472 8517
8473 - (instancetype)init { 8518 - (instancetype)init {
8474 return [self initWithValues:NULL forKeys:NULL count:0]; 8519 return [self initWithFloats:NULL forKeys:NULL count:0];
8475 } 8520 }
8476 8521
8477 - (instancetype)initWithValues:(const float [])values 8522 - (instancetype)initWithFloats:(const float [])values
8478 forKeys:(const int64_t [])keys 8523 forKeys:(const int64_t [])keys
8479 count:(NSUInteger)count { 8524 count:(NSUInteger)count {
8480 self = [super init]; 8525 self = [super init];
8481 if (self) { 8526 if (self) {
8482 _dictionary = [[NSMutableDictionary alloc] init]; 8527 _dictionary = [[NSMutableDictionary alloc] init];
8483 if (count && values && keys) { 8528 if (count && values && keys) {
8484 for (NSUInteger i = 0; i < count; ++i) { 8529 for (NSUInteger i = 0; i < count; ++i) {
8485 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 8530 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
8486 } 8531 }
8487 } 8532 }
8488 } 8533 }
8489 return self; 8534 return self;
8490 } 8535 }
8491 8536
8492 - (instancetype)initWithDictionary:(GPBInt64FloatDictionary *)dictionary { 8537 - (instancetype)initWithDictionary:(GPBInt64FloatDictionary *)dictionary {
8493 self = [self initWithValues:NULL forKeys:NULL count:0]; 8538 self = [self initWithFloats:NULL forKeys:NULL count:0];
8494 if (self) { 8539 if (self) {
8495 if (dictionary) { 8540 if (dictionary) {
8496 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 8541 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
8497 } 8542 }
8498 } 8543 }
8499 return self; 8544 return self;
8500 } 8545 }
8501 8546
8502 - (instancetype)initWithCapacity:(NSUInteger)numItems { 8547 - (instancetype)initWithCapacity:(NSUInteger)numItems {
8503 #pragma unused(numItems) 8548 #pragma unused(numItems)
8504 return [self initWithValues:NULL forKeys:NULL count:0]; 8549 return [self initWithFloats:NULL forKeys:NULL count:0];
8505 } 8550 }
8506 8551
8507 - (void)dealloc { 8552 - (void)dealloc {
8508 NSAssert(!_autocreator, 8553 NSAssert(!_autocreator,
8509 @"%@: Autocreator must be cleared before release, autocreator: %@", 8554 @"%@: Autocreator must be cleared before release, autocreator: %@",
8510 [self class], _autocreator); 8555 [self class], _autocreator);
8511 [_dictionary release]; 8556 [_dictionary release];
8512 [super dealloc]; 8557 [super dealloc];
8513 } 8558 }
8514 8559
8515 - (instancetype)copyWithZone:(NSZone *)zone { 8560 - (instancetype)copyWithZone:(NSZone *)zone {
8516 return [[GPBInt64FloatDictionary allocWithZone:zone] initWithDictionary:self]; 8561 return [[GPBInt64FloatDictionary allocWithZone:zone] initWithDictionary:self];
8517 } 8562 }
8518 8563
8519 - (BOOL)isEqual:(GPBInt64FloatDictionary *)other { 8564 - (BOOL)isEqual:(id)other {
8520 if (self == other) { 8565 if (self == other) {
8521 return YES; 8566 return YES;
8522 } 8567 }
8523 if (![other isKindOfClass:[GPBInt64FloatDictionary class]]) { 8568 if (![other isKindOfClass:[GPBInt64FloatDictionary class]]) {
8524 return NO; 8569 return NO;
8525 } 8570 }
8526 return [_dictionary isEqual:other->_dictionary]; 8571 GPBInt64FloatDictionary *otherDictionary = other;
8572 return [_dictionary isEqual:otherDictionary->_dictionary];
8527 } 8573 }
8528 8574
8529 - (NSUInteger)hash { 8575 - (NSUInteger)hash {
8530 return _dictionary.count; 8576 return _dictionary.count;
8531 } 8577 }
8532 8578
8533 - (NSString *)description { 8579 - (NSString *)description {
8534 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 8580 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
8535 } 8581 }
8536 8582
8537 - (NSUInteger)count { 8583 - (NSUInteger)count {
8538 return _dictionary.count; 8584 return _dictionary.count;
8539 } 8585 }
8540 8586
8541 - (void)enumerateKeysAndValuesUsingBlock: 8587 - (void)enumerateKeysAndFloatsUsingBlock:
8542 (void (^)(int64_t key, float value, BOOL *stop))block { 8588 (void (^)(int64_t key, float value, BOOL *stop))block {
8543 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 8589 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
8544 NSNumber *aValue, 8590 NSNumber *aValue,
8545 BOOL *stop) { 8591 BOOL *stop) {
8546 block([aKey longLongValue], [aValue floatValue], stop); 8592 block([aKey longLongValue], [aValue floatValue], stop);
8547 }]; 8593 }];
8548 } 8594 }
8549 8595
8550 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 8596 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
8551 NSUInteger count = _dictionary.count; 8597 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
8589 WriteDictFloatField(outputStream, [aValue floatValue], kMapValueFieldNumber, valueDataType); 8635 WriteDictFloatField(outputStream, [aValue floatValue], kMapValueFieldNumber, valueDataType);
8590 }]; 8636 }];
8591 } 8637 }
8592 8638
8593 - (void)setGPBGenericValue:(GPBGenericValue *)value 8639 - (void)setGPBGenericValue:(GPBGenericValue *)value
8594 forGPBGenericValueKey:(GPBGenericValue *)key { 8640 forGPBGenericValueKey:(GPBGenericValue *)key {
8595 [_dictionary setObject:@(value->valueFloat) forKey:@(key->valueInt64)]; 8641 [_dictionary setObject:@(value->valueFloat) forKey:@(key->valueInt64)];
8596 } 8642 }
8597 8643
8598 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 8644 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
8599 [self enumerateKeysAndValuesUsingBlock:^(int64_t key, float value, BOOL *stop) { 8645 [self enumerateKeysAndFloatsUsingBlock:^(int64_t key, float value, BOOL *stop) {
8600 #pragma unused(stop) 8646 #pragma unused(stop)
8601 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%.*g", FLT_DIG, value]); 8647 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%.*g", FLT_DIG, value]);
8602 }]; 8648 }];
8603 } 8649 }
8604 8650
8605 - (BOOL)valueForKey:(int64_t)key value:(float *)value { 8651 - (BOOL)getFloat:(nullable float *)value forKey:(int64_t)key {
8606 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 8652 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
8607 if (wrapped && value) { 8653 if (wrapped && value) {
8608 *value = [wrapped floatValue]; 8654 *value = [wrapped floatValue];
8609 } 8655 }
8610 return (wrapped != NULL); 8656 return (wrapped != NULL);
8611 } 8657 }
8612 8658
8613 - (void)addEntriesFromDictionary:(GPBInt64FloatDictionary *)otherDictionary { 8659 - (void)addEntriesFromDictionary:(GPBInt64FloatDictionary *)otherDictionary {
8614 if (otherDictionary) { 8660 if (otherDictionary) {
8615 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 8661 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
8616 if (_autocreator) { 8662 if (_autocreator) {
8617 GPBAutocreatedDictionaryModified(_autocreator, self); 8663 GPBAutocreatedDictionaryModified(_autocreator, self);
8618 } 8664 }
8619 } 8665 }
8620 } 8666 }
8621 8667
8622 - (void)setValue:(float)value forKey:(int64_t)key { 8668 - (void)setFloat:(float)value forKey:(int64_t)key {
8623 [_dictionary setObject:@(value) forKey:@(key)]; 8669 [_dictionary setObject:@(value) forKey:@(key)];
8624 if (_autocreator) { 8670 if (_autocreator) {
8625 GPBAutocreatedDictionaryModified(_autocreator, self); 8671 GPBAutocreatedDictionaryModified(_autocreator, self);
8626 } 8672 }
8627 } 8673 }
8628 8674
8629 - (void)removeValueForKey:(int64_t)aKey { 8675 - (void)removeFloatForKey:(int64_t)aKey {
8630 [_dictionary removeObjectForKey:@(aKey)]; 8676 [_dictionary removeObjectForKey:@(aKey)];
8631 } 8677 }
8632 8678
8633 - (void)removeAll { 8679 - (void)removeAll {
8634 [_dictionary removeAllObjects]; 8680 [_dictionary removeAllObjects];
8635 } 8681 }
8636 8682
8637 @end 8683 @end
8638 8684
8639 #pragma mark - Int64 -> Double 8685 #pragma mark - Int64 -> Double
8640 8686
8641 @implementation GPBInt64DoubleDictionary { 8687 @implementation GPBInt64DoubleDictionary {
8642 @package 8688 @package
8643 NSMutableDictionary *_dictionary; 8689 NSMutableDictionary *_dictionary;
8644 } 8690 }
8645 8691
8646 + (instancetype)dictionary { 8692 + (instancetype)dictionary {
8647 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 8693 return [[[self alloc] initWithDoubles:NULL forKeys:NULL count:0] autorelease];
8648 } 8694 }
8649 8695
8650 + (instancetype)dictionaryWithValue:(double)value 8696 + (instancetype)dictionaryWithDouble:(double)value
8651 forKey:(int64_t)key { 8697 forKey:(int64_t)key {
8652 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 8698 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
8653 // on to get the type correct. 8699 // on to get the type correct.
8654 return [[(GPBInt64DoubleDictionary*)[self alloc] initWithValues:&value 8700 return [[(GPBInt64DoubleDictionary*)[self alloc] initWithDoubles:&value
8655 forKeys:&key 8701 forKeys:&key
8656 count:1] autorelease ]; 8702 count:1] autoreleas e];
8657 } 8703 }
8658 8704
8659 + (instancetype)dictionaryWithValues:(const double [])values 8705 + (instancetype)dictionaryWithDoubles:(const double [])values
8660 forKeys:(const int64_t [])keys 8706 forKeys:(const int64_t [])keys
8661 count:(NSUInteger)count { 8707 count:(NSUInteger)count {
8662 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 8708 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
8663 // on to get the type correct. 8709 // on to get the type correct.
8664 return [[(GPBInt64DoubleDictionary*)[self alloc] initWithValues:values 8710 return [[(GPBInt64DoubleDictionary*)[self alloc] initWithDoubles:values
8665 forKeys:keys 8711 forKeys:keys
8666 count:count] autorel ease]; 8712 count:count] autorel ease];
8667 } 8713 }
8668 8714
8669 + (instancetype)dictionaryWithDictionary:(GPBInt64DoubleDictionary *)dictionary { 8715 + (instancetype)dictionaryWithDictionary:(GPBInt64DoubleDictionary *)dictionary {
8670 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 8716 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
8671 // on to get the type correct. 8717 // on to get the type correct.
8672 return [[(GPBInt64DoubleDictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 8718 return [[(GPBInt64DoubleDictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
8673 } 8719 }
8674 8720
8675 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 8721 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
8676 return [[[self alloc] initWithCapacity:numItems] autorelease]; 8722 return [[[self alloc] initWithCapacity:numItems] autorelease];
8677 } 8723 }
8678 8724
8679 - (instancetype)init { 8725 - (instancetype)init {
8680 return [self initWithValues:NULL forKeys:NULL count:0]; 8726 return [self initWithDoubles:NULL forKeys:NULL count:0];
8681 } 8727 }
8682 8728
8683 - (instancetype)initWithValues:(const double [])values 8729 - (instancetype)initWithDoubles:(const double [])values
8684 forKeys:(const int64_t [])keys 8730 forKeys:(const int64_t [])keys
8685 count:(NSUInteger)count { 8731 count:(NSUInteger)count {
8686 self = [super init]; 8732 self = [super init];
8687 if (self) { 8733 if (self) {
8688 _dictionary = [[NSMutableDictionary alloc] init]; 8734 _dictionary = [[NSMutableDictionary alloc] init];
8689 if (count && values && keys) { 8735 if (count && values && keys) {
8690 for (NSUInteger i = 0; i < count; ++i) { 8736 for (NSUInteger i = 0; i < count; ++i) {
8691 [_dictionary setObject:@(values[i]) forKey:@(keys[i])]; 8737 [_dictionary setObject:@(values[i]) forKey:@(keys[i])];
8692 } 8738 }
8693 } 8739 }
8694 } 8740 }
8695 return self; 8741 return self;
8696 } 8742 }
8697 8743
8698 - (instancetype)initWithDictionary:(GPBInt64DoubleDictionary *)dictionary { 8744 - (instancetype)initWithDictionary:(GPBInt64DoubleDictionary *)dictionary {
8699 self = [self initWithValues:NULL forKeys:NULL count:0]; 8745 self = [self initWithDoubles:NULL forKeys:NULL count:0];
8700 if (self) { 8746 if (self) {
8701 if (dictionary) { 8747 if (dictionary) {
8702 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 8748 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
8703 } 8749 }
8704 } 8750 }
8705 return self; 8751 return self;
8706 } 8752 }
8707 8753
8708 - (instancetype)initWithCapacity:(NSUInteger)numItems { 8754 - (instancetype)initWithCapacity:(NSUInteger)numItems {
8709 #pragma unused(numItems) 8755 #pragma unused(numItems)
8710 return [self initWithValues:NULL forKeys:NULL count:0]; 8756 return [self initWithDoubles:NULL forKeys:NULL count:0];
8711 } 8757 }
8712 8758
8713 - (void)dealloc { 8759 - (void)dealloc {
8714 NSAssert(!_autocreator, 8760 NSAssert(!_autocreator,
8715 @"%@: Autocreator must be cleared before release, autocreator: %@", 8761 @"%@: Autocreator must be cleared before release, autocreator: %@",
8716 [self class], _autocreator); 8762 [self class], _autocreator);
8717 [_dictionary release]; 8763 [_dictionary release];
8718 [super dealloc]; 8764 [super dealloc];
8719 } 8765 }
8720 8766
8721 - (instancetype)copyWithZone:(NSZone *)zone { 8767 - (instancetype)copyWithZone:(NSZone *)zone {
8722 return [[GPBInt64DoubleDictionary allocWithZone:zone] initWithDictionary:self] ; 8768 return [[GPBInt64DoubleDictionary allocWithZone:zone] initWithDictionary:self] ;
8723 } 8769 }
8724 8770
8725 - (BOOL)isEqual:(GPBInt64DoubleDictionary *)other { 8771 - (BOOL)isEqual:(id)other {
8726 if (self == other) { 8772 if (self == other) {
8727 return YES; 8773 return YES;
8728 } 8774 }
8729 if (![other isKindOfClass:[GPBInt64DoubleDictionary class]]) { 8775 if (![other isKindOfClass:[GPBInt64DoubleDictionary class]]) {
8730 return NO; 8776 return NO;
8731 } 8777 }
8732 return [_dictionary isEqual:other->_dictionary]; 8778 GPBInt64DoubleDictionary *otherDictionary = other;
8779 return [_dictionary isEqual:otherDictionary->_dictionary];
8733 } 8780 }
8734 8781
8735 - (NSUInteger)hash { 8782 - (NSUInteger)hash {
8736 return _dictionary.count; 8783 return _dictionary.count;
8737 } 8784 }
8738 8785
8739 - (NSString *)description { 8786 - (NSString *)description {
8740 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 8787 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
8741 } 8788 }
8742 8789
8743 - (NSUInteger)count { 8790 - (NSUInteger)count {
8744 return _dictionary.count; 8791 return _dictionary.count;
8745 } 8792 }
8746 8793
8747 - (void)enumerateKeysAndValuesUsingBlock: 8794 - (void)enumerateKeysAndDoublesUsingBlock:
8748 (void (^)(int64_t key, double value, BOOL *stop))block { 8795 (void (^)(int64_t key, double value, BOOL *stop))block {
8749 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 8796 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
8750 NSNumber *aValue, 8797 NSNumber *aValue,
8751 BOOL *stop) { 8798 BOOL *stop) {
8752 block([aKey longLongValue], [aValue doubleValue], stop); 8799 block([aKey longLongValue], [aValue doubleValue], stop);
8753 }]; 8800 }];
8754 } 8801 }
8755 8802
8756 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 8803 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
8757 NSUInteger count = _dictionary.count; 8804 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
8795 WriteDictDoubleField(outputStream, [aValue doubleValue], kMapValueFieldNumbe r, valueDataType); 8842 WriteDictDoubleField(outputStream, [aValue doubleValue], kMapValueFieldNumbe r, valueDataType);
8796 }]; 8843 }];
8797 } 8844 }
8798 8845
8799 - (void)setGPBGenericValue:(GPBGenericValue *)value 8846 - (void)setGPBGenericValue:(GPBGenericValue *)value
8800 forGPBGenericValueKey:(GPBGenericValue *)key { 8847 forGPBGenericValueKey:(GPBGenericValue *)key {
8801 [_dictionary setObject:@(value->valueDouble) forKey:@(key->valueInt64)]; 8848 [_dictionary setObject:@(value->valueDouble) forKey:@(key->valueInt64)];
8802 } 8849 }
8803 8850
8804 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 8851 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
8805 [self enumerateKeysAndValuesUsingBlock:^(int64_t key, double value, BOOL *stop ) { 8852 [self enumerateKeysAndDoublesUsingBlock:^(int64_t key, double value, BOOL *sto p) {
8806 #pragma unused(stop) 8853 #pragma unused(stop)
8807 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%.*lg", DBL_DIG, value]); 8854 block([NSString stringWithFormat:@"%lld", key], [NSString stringWithFormat :@"%.*lg", DBL_DIG, value]);
8808 }]; 8855 }];
8809 } 8856 }
8810 8857
8811 - (BOOL)valueForKey:(int64_t)key value:(double *)value { 8858 - (BOOL)getDouble:(nullable double *)value forKey:(int64_t)key {
8812 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 8859 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
8813 if (wrapped && value) { 8860 if (wrapped && value) {
8814 *value = [wrapped doubleValue]; 8861 *value = [wrapped doubleValue];
8815 } 8862 }
8816 return (wrapped != NULL); 8863 return (wrapped != NULL);
8817 } 8864 }
8818 8865
8819 - (void)addEntriesFromDictionary:(GPBInt64DoubleDictionary *)otherDictionary { 8866 - (void)addEntriesFromDictionary:(GPBInt64DoubleDictionary *)otherDictionary {
8820 if (otherDictionary) { 8867 if (otherDictionary) {
8821 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 8868 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
8822 if (_autocreator) { 8869 if (_autocreator) {
8823 GPBAutocreatedDictionaryModified(_autocreator, self); 8870 GPBAutocreatedDictionaryModified(_autocreator, self);
8824 } 8871 }
8825 } 8872 }
8826 } 8873 }
8827 8874
8828 - (void)setValue:(double)value forKey:(int64_t)key { 8875 - (void)setDouble:(double)value forKey:(int64_t)key {
8829 [_dictionary setObject:@(value) forKey:@(key)]; 8876 [_dictionary setObject:@(value) forKey:@(key)];
8830 if (_autocreator) { 8877 if (_autocreator) {
8831 GPBAutocreatedDictionaryModified(_autocreator, self); 8878 GPBAutocreatedDictionaryModified(_autocreator, self);
8832 } 8879 }
8833 } 8880 }
8834 8881
8835 - (void)removeValueForKey:(int64_t)aKey { 8882 - (void)removeDoubleForKey:(int64_t)aKey {
8836 [_dictionary removeObjectForKey:@(aKey)]; 8883 [_dictionary removeObjectForKey:@(aKey)];
8837 } 8884 }
8838 8885
8839 - (void)removeAll { 8886 - (void)removeAll {
8840 [_dictionary removeAllObjects]; 8887 [_dictionary removeAllObjects];
8841 } 8888 }
8842 8889
8843 @end 8890 @end
8844 8891
8845 #pragma mark - Int64 -> Enum 8892 #pragma mark - Int64 -> Enum
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
8949 @"%@: Autocreator must be cleared before release, autocreator: %@", 8996 @"%@: Autocreator must be cleared before release, autocreator: %@",
8950 [self class], _autocreator); 8997 [self class], _autocreator);
8951 [_dictionary release]; 8998 [_dictionary release];
8952 [super dealloc]; 8999 [super dealloc];
8953 } 9000 }
8954 9001
8955 - (instancetype)copyWithZone:(NSZone *)zone { 9002 - (instancetype)copyWithZone:(NSZone *)zone {
8956 return [[GPBInt64EnumDictionary allocWithZone:zone] initWithDictionary:self]; 9003 return [[GPBInt64EnumDictionary allocWithZone:zone] initWithDictionary:self];
8957 } 9004 }
8958 9005
8959 - (BOOL)isEqual:(GPBInt64EnumDictionary *)other { 9006 - (BOOL)isEqual:(id)other {
8960 if (self == other) { 9007 if (self == other) {
8961 return YES; 9008 return YES;
8962 } 9009 }
8963 if (![other isKindOfClass:[GPBInt64EnumDictionary class]]) { 9010 if (![other isKindOfClass:[GPBInt64EnumDictionary class]]) {
8964 return NO; 9011 return NO;
8965 } 9012 }
8966 return [_dictionary isEqual:other->_dictionary]; 9013 GPBInt64EnumDictionary *otherDictionary = other;
9014 return [_dictionary isEqual:otherDictionary->_dictionary];
8967 } 9015 }
8968 9016
8969 - (NSUInteger)hash { 9017 - (NSUInteger)hash {
8970 return _dictionary.count; 9018 return _dictionary.count;
8971 } 9019 }
8972 9020
8973 - (NSString *)description { 9021 - (NSString *)description {
8974 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 9022 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
8975 } 9023 }
8976 9024
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
9047 [_dictionary setObject:@(value->valueEnum) forKey:@(key->valueInt64)]; 9095 [_dictionary setObject:@(value->valueEnum) forKey:@(key->valueInt64)];
9048 } 9096 }
9049 9097
9050 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 9098 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
9051 [self enumerateKeysAndRawValuesUsingBlock:^(int64_t key, int32_t value, BOOL * stop) { 9099 [self enumerateKeysAndRawValuesUsingBlock:^(int64_t key, int32_t value, BOOL * stop) {
9052 #pragma unused(stop) 9100 #pragma unused(stop)
9053 block([NSString stringWithFormat:@"%lld", key], @(value)); 9101 block([NSString stringWithFormat:@"%lld", key], @(value));
9054 }]; 9102 }];
9055 } 9103 }
9056 9104
9057 - (BOOL)valueForKey:(int64_t)key value:(int32_t *)value { 9105 - (BOOL)getEnum:(int32_t *)value forKey:(int64_t)key {
9058 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 9106 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
9059 if (wrapped && value) { 9107 if (wrapped && value) {
9060 int32_t result = [wrapped intValue]; 9108 int32_t result = [wrapped intValue];
9061 if (!_validationFunc(result)) { 9109 if (!_validationFunc(result)) {
9062 result = kGPBUnrecognizedEnumeratorValue; 9110 result = kGPBUnrecognizedEnumeratorValue;
9063 } 9111 }
9064 *value = result; 9112 *value = result;
9065 } 9113 }
9066 return (wrapped != NULL); 9114 return (wrapped != NULL);
9067 } 9115 }
9068 9116
9069 - (BOOL)valueForKey:(int64_t)key rawValue:(int32_t *)rawValue { 9117 - (BOOL)getRawValue:(int32_t *)rawValue forKey:(int64_t)key {
9070 NSNumber *wrapped = [_dictionary objectForKey:@(key)]; 9118 NSNumber *wrapped = [_dictionary objectForKey:@(key)];
9071 if (wrapped && rawValue) { 9119 if (wrapped && rawValue) {
9072 *rawValue = [wrapped intValue]; 9120 *rawValue = [wrapped intValue];
9073 } 9121 }
9074 return (wrapped != NULL); 9122 return (wrapped != NULL);
9075 } 9123 }
9076 9124
9077 - (void)enumerateKeysAndValuesUsingBlock: 9125 - (void)enumerateKeysAndEnumsUsingBlock:
9078 (void (^)(int64_t key, int32_t value, BOOL *stop))block { 9126 (void (^)(int64_t key, int32_t value, BOOL *stop))block {
9079 GPBEnumValidationFunc func = _validationFunc; 9127 GPBEnumValidationFunc func = _validationFunc;
9080 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey, 9128 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSNumber *aKey,
9081 NSNumber *aValue, 9129 NSNumber *aValue,
9082 BOOL *stop) { 9130 BOOL *stop) {
9083 int32_t unwrapped = [aValue intValue]; 9131 int32_t unwrapped = [aValue intValue];
9084 if (!func(unwrapped)) { 9132 if (!func(unwrapped)) {
9085 unwrapped = kGPBUnrecognizedEnumeratorValue; 9133 unwrapped = kGPBUnrecognizedEnumeratorValue;
9086 } 9134 }
9087 block([aKey longLongValue], unwrapped, stop); 9135 block([aKey longLongValue], unwrapped, stop);
9088 }]; 9136 }];
9089 } 9137 }
9090 9138
9091 - (void)addRawEntriesFromDictionary:(GPBInt64EnumDictionary *)otherDictionary { 9139 - (void)addRawEntriesFromDictionary:(GPBInt64EnumDictionary *)otherDictionary {
9092 if (otherDictionary) { 9140 if (otherDictionary) {
9093 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 9141 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
9094 if (_autocreator) { 9142 if (_autocreator) {
9095 GPBAutocreatedDictionaryModified(_autocreator, self); 9143 GPBAutocreatedDictionaryModified(_autocreator, self);
9096 } 9144 }
9097 } 9145 }
9098 } 9146 }
9099 9147
9100 - (void)setRawValue:(int32_t)value forKey:(int64_t)key { 9148 - (void)setRawValue:(int32_t)value forKey:(int64_t)key {
9101 [_dictionary setObject:@(value) forKey:@(key)]; 9149 [_dictionary setObject:@(value) forKey:@(key)];
9102 if (_autocreator) { 9150 if (_autocreator) {
9103 GPBAutocreatedDictionaryModified(_autocreator, self); 9151 GPBAutocreatedDictionaryModified(_autocreator, self);
9104 } 9152 }
9105 } 9153 }
9106 9154
9107 - (void)removeValueForKey:(int64_t)aKey { 9155 - (void)removeEnumForKey:(int64_t)aKey {
9108 [_dictionary removeObjectForKey:@(aKey)]; 9156 [_dictionary removeObjectForKey:@(aKey)];
9109 } 9157 }
9110 9158
9111 - (void)removeAll { 9159 - (void)removeAll {
9112 [_dictionary removeAllObjects]; 9160 [_dictionary removeAllObjects];
9113 } 9161 }
9114 9162
9115 - (void)setValue:(int32_t)value forKey:(int64_t)key { 9163 - (void)setEnum:(int32_t)value forKey:(int64_t)key {
9116 if (!_validationFunc(value)) { 9164 if (!_validationFunc(value)) {
9117 [NSException raise:NSInvalidArgumentException 9165 [NSException raise:NSInvalidArgumentException
9118 format:@"GPBInt64EnumDictionary: Attempt to set an unknown enum value (%d)", 9166 format:@"GPBInt64EnumDictionary: Attempt to set an unknown enum value (%d)",
9119 value]; 9167 value];
9120 } 9168 }
9121 9169
9122 [_dictionary setObject:@(value) forKey:@(key)]; 9170 [_dictionary setObject:@(value) forKey:@(key)];
9123 if (_autocreator) { 9171 if (_autocreator) {
9124 GPBAutocreatedDictionaryModified(_autocreator, self); 9172 GPBAutocreatedDictionaryModified(_autocreator, self);
9125 } 9173 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
9210 @"%@: Autocreator must be cleared before release, autocreator: %@", 9258 @"%@: Autocreator must be cleared before release, autocreator: %@",
9211 [self class], _autocreator); 9259 [self class], _autocreator);
9212 [_dictionary release]; 9260 [_dictionary release];
9213 [super dealloc]; 9261 [super dealloc];
9214 } 9262 }
9215 9263
9216 - (instancetype)copyWithZone:(NSZone *)zone { 9264 - (instancetype)copyWithZone:(NSZone *)zone {
9217 return [[GPBInt64ObjectDictionary allocWithZone:zone] initWithDictionary:self] ; 9265 return [[GPBInt64ObjectDictionary allocWithZone:zone] initWithDictionary:self] ;
9218 } 9266 }
9219 9267
9220 - (BOOL)isEqual:(GPBInt64ObjectDictionary *)other { 9268 - (BOOL)isEqual:(id)other {
9221 if (self == other) { 9269 if (self == other) {
9222 return YES; 9270 return YES;
9223 } 9271 }
9224 if (![other isKindOfClass:[GPBInt64ObjectDictionary class]]) { 9272 if (![other isKindOfClass:[GPBInt64ObjectDictionary class]]) {
9225 return NO; 9273 return NO;
9226 } 9274 }
9227 return [_dictionary isEqual:other->_dictionary]; 9275 GPBInt64ObjectDictionary *otherDictionary = other;
9276 return [_dictionary isEqual:otherDictionary->_dictionary];
9228 } 9277 }
9229 9278
9230 - (NSUInteger)hash { 9279 - (NSUInteger)hash {
9231 return _dictionary.count; 9280 return _dictionary.count;
9232 } 9281 }
9233 9282
9234 - (NSString *)description { 9283 - (NSString *)description {
9235 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 9284 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
9236 } 9285 }
9237 9286
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
9365 // This block of code is generated, do not edit it directly. 9414 // This block of code is generated, do not edit it directly.
9366 9415
9367 #pragma mark - String -> UInt32 9416 #pragma mark - String -> UInt32
9368 9417
9369 @implementation GPBStringUInt32Dictionary { 9418 @implementation GPBStringUInt32Dictionary {
9370 @package 9419 @package
9371 NSMutableDictionary *_dictionary; 9420 NSMutableDictionary *_dictionary;
9372 } 9421 }
9373 9422
9374 + (instancetype)dictionary { 9423 + (instancetype)dictionary {
9375 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 9424 return [[[self alloc] initWithUInt32s:NULL forKeys:NULL count:0] autorelease];
9376 } 9425 }
9377 9426
9378 + (instancetype)dictionaryWithValue:(uint32_t)value 9427 + (instancetype)dictionaryWithUInt32:(uint32_t)value
9379 forKey:(NSString *)key { 9428 forKey:(NSString *)key {
9380 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 9429 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
9381 // on to get the type correct. 9430 // on to get the type correct.
9382 return [[(GPBStringUInt32Dictionary*)[self alloc] initWithValues:&value 9431 return [[(GPBStringUInt32Dictionary*)[self alloc] initWithUInt32s:&value
9383 forKeys:&key 9432 forKeys:&key
9384 count:1] autoreleas e]; 9433 count:1] autorelea se];
9385 } 9434 }
9386 9435
9387 + (instancetype)dictionaryWithValues:(const uint32_t [])values 9436 + (instancetype)dictionaryWithUInt32s:(const uint32_t [])values
9388 forKeys:(const NSString * [])keys 9437 forKeys:(const NSString * [])keys
9389 count:(NSUInteger)count { 9438 count:(NSUInteger)count {
9390 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 9439 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
9391 // on to get the type correct. 9440 // on to get the type correct.
9392 return [[(GPBStringUInt32Dictionary*)[self alloc] initWithValues:values 9441 return [[(GPBStringUInt32Dictionary*)[self alloc] initWithUInt32s:values
9393 forKeys:keys 9442 forKeys:keys
9394 count:count] autore lease]; 9443 count:count] autore lease];
9395 } 9444 }
9396 9445
9397 + (instancetype)dictionaryWithDictionary:(GPBStringUInt32Dictionary *)dictionary { 9446 + (instancetype)dictionaryWithDictionary:(GPBStringUInt32Dictionary *)dictionary {
9398 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 9447 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
9399 // on to get the type correct. 9448 // on to get the type correct.
9400 return [[(GPBStringUInt32Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease]; 9449 return [[(GPBStringUInt32Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease];
9401 } 9450 }
9402 9451
9403 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 9452 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
9404 return [[[self alloc] initWithCapacity:numItems] autorelease]; 9453 return [[[self alloc] initWithCapacity:numItems] autorelease];
9405 } 9454 }
9406 9455
9407 - (instancetype)init { 9456 - (instancetype)init {
9408 return [self initWithValues:NULL forKeys:NULL count:0]; 9457 return [self initWithUInt32s:NULL forKeys:NULL count:0];
9409 } 9458 }
9410 9459
9411 - (instancetype)initWithValues:(const uint32_t [])values 9460 - (instancetype)initWithUInt32s:(const uint32_t [])values
9412 forKeys:(const NSString * [])keys 9461 forKeys:(const NSString * [])keys
9413 count:(NSUInteger)count { 9462 count:(NSUInteger)count {
9414 self = [super init]; 9463 self = [super init];
9415 if (self) { 9464 if (self) {
9416 _dictionary = [[NSMutableDictionary alloc] init]; 9465 _dictionary = [[NSMutableDictionary alloc] init];
9417 if (count && values && keys) { 9466 if (count && values && keys) {
9418 for (NSUInteger i = 0; i < count; ++i) { 9467 for (NSUInteger i = 0; i < count; ++i) {
9419 if (!keys[i]) { 9468 if (!keys[i]) {
9420 [NSException raise:NSInvalidArgumentException 9469 [NSException raise:NSInvalidArgumentException
9421 format:@"Attempting to add nil key to a Dictionary"]; 9470 format:@"Attempting to add nil key to a Dictionary"];
9422 } 9471 }
9423 [_dictionary setObject:@(values[i]) forKey:keys[i]]; 9472 [_dictionary setObject:@(values[i]) forKey:keys[i]];
9424 } 9473 }
9425 } 9474 }
9426 } 9475 }
9427 return self; 9476 return self;
9428 } 9477 }
9429 9478
9430 - (instancetype)initWithDictionary:(GPBStringUInt32Dictionary *)dictionary { 9479 - (instancetype)initWithDictionary:(GPBStringUInt32Dictionary *)dictionary {
9431 self = [self initWithValues:NULL forKeys:NULL count:0]; 9480 self = [self initWithUInt32s:NULL forKeys:NULL count:0];
9432 if (self) { 9481 if (self) {
9433 if (dictionary) { 9482 if (dictionary) {
9434 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 9483 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
9435 } 9484 }
9436 } 9485 }
9437 return self; 9486 return self;
9438 } 9487 }
9439 9488
9440 - (instancetype)initWithCapacity:(NSUInteger)numItems { 9489 - (instancetype)initWithCapacity:(NSUInteger)numItems {
9441 #pragma unused(numItems) 9490 #pragma unused(numItems)
9442 return [self initWithValues:NULL forKeys:NULL count:0]; 9491 return [self initWithUInt32s:NULL forKeys:NULL count:0];
9443 } 9492 }
9444 9493
9445 - (void)dealloc { 9494 - (void)dealloc {
9446 NSAssert(!_autocreator, 9495 NSAssert(!_autocreator,
9447 @"%@: Autocreator must be cleared before release, autocreator: %@", 9496 @"%@: Autocreator must be cleared before release, autocreator: %@",
9448 [self class], _autocreator); 9497 [self class], _autocreator);
9449 [_dictionary release]; 9498 [_dictionary release];
9450 [super dealloc]; 9499 [super dealloc];
9451 } 9500 }
9452 9501
9453 - (instancetype)copyWithZone:(NSZone *)zone { 9502 - (instancetype)copyWithZone:(NSZone *)zone {
9454 return [[GPBStringUInt32Dictionary allocWithZone:zone] initWithDictionary:self ]; 9503 return [[GPBStringUInt32Dictionary allocWithZone:zone] initWithDictionary:self ];
9455 } 9504 }
9456 9505
9457 - (BOOL)isEqual:(GPBStringUInt32Dictionary *)other { 9506 - (BOOL)isEqual:(id)other {
9458 if (self == other) { 9507 if (self == other) {
9459 return YES; 9508 return YES;
9460 } 9509 }
9461 if (![other isKindOfClass:[GPBStringUInt32Dictionary class]]) { 9510 if (![other isKindOfClass:[GPBStringUInt32Dictionary class]]) {
9462 return NO; 9511 return NO;
9463 } 9512 }
9464 return [_dictionary isEqual:other->_dictionary]; 9513 GPBStringUInt32Dictionary *otherDictionary = other;
9514 return [_dictionary isEqual:otherDictionary->_dictionary];
9465 } 9515 }
9466 9516
9467 - (NSUInteger)hash { 9517 - (NSUInteger)hash {
9468 return _dictionary.count; 9518 return _dictionary.count;
9469 } 9519 }
9470 9520
9471 - (NSString *)description { 9521 - (NSString *)description {
9472 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 9522 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
9473 } 9523 }
9474 9524
9475 - (NSUInteger)count { 9525 - (NSUInteger)count {
9476 return _dictionary.count; 9526 return _dictionary.count;
9477 } 9527 }
9478 9528
9479 - (void)enumerateKeysAndValuesUsingBlock: 9529 - (void)enumerateKeysAndUInt32sUsingBlock:
9480 (void (^)(NSString *key, uint32_t value, BOOL *stop))block { 9530 (void (^)(NSString *key, uint32_t value, BOOL *stop))block {
9481 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey, 9531 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey,
9482 NSNumber *aValue, 9532 NSNumber *aValue,
9483 BOOL *stop) { 9533 BOOL *stop) {
9484 block(aKey, [aValue unsignedIntValue], stop); 9534 block(aKey, [aValue unsignedIntValue], stop);
9485 }]; 9535 }];
9486 } 9536 }
9487 9537
9488 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 9538 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
9489 NSUInteger count = _dictionary.count; 9539 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
9527 WriteDictUInt32Field(outputStream, [aValue unsignedIntValue], kMapValueField Number, valueDataType); 9577 WriteDictUInt32Field(outputStream, [aValue unsignedIntValue], kMapValueField Number, valueDataType);
9528 }]; 9578 }];
9529 } 9579 }
9530 9580
9531 - (void)setGPBGenericValue:(GPBGenericValue *)value 9581 - (void)setGPBGenericValue:(GPBGenericValue *)value
9532 forGPBGenericValueKey:(GPBGenericValue *)key { 9582 forGPBGenericValueKey:(GPBGenericValue *)key {
9533 [_dictionary setObject:@(value->valueUInt32) forKey:key->valueString]; 9583 [_dictionary setObject:@(value->valueUInt32) forKey:key->valueString];
9534 } 9584 }
9535 9585
9536 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 9586 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
9537 [self enumerateKeysAndValuesUsingBlock:^(NSString *key, uint32_t value, BOOL * stop) { 9587 [self enumerateKeysAndUInt32sUsingBlock:^(NSString *key, uint32_t value, BOOL *stop) {
9538 #pragma unused(stop) 9588 #pragma unused(stop)
9539 block(key, [NSString stringWithFormat:@"%u", value]); 9589 block(key, [NSString stringWithFormat:@"%u", value]);
9540 }]; 9590 }];
9541 } 9591 }
9542 9592
9543 - (BOOL)valueForKey:(NSString *)key value:(uint32_t *)value { 9593 - (BOOL)getUInt32:(nullable uint32_t *)value forKey:(NSString *)key {
9544 NSNumber *wrapped = [_dictionary objectForKey:key]; 9594 NSNumber *wrapped = [_dictionary objectForKey:key];
9545 if (wrapped && value) { 9595 if (wrapped && value) {
9546 *value = [wrapped unsignedIntValue]; 9596 *value = [wrapped unsignedIntValue];
9547 } 9597 }
9548 return (wrapped != NULL); 9598 return (wrapped != NULL);
9549 } 9599 }
9550 9600
9551 - (void)addEntriesFromDictionary:(GPBStringUInt32Dictionary *)otherDictionary { 9601 - (void)addEntriesFromDictionary:(GPBStringUInt32Dictionary *)otherDictionary {
9552 if (otherDictionary) { 9602 if (otherDictionary) {
9553 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 9603 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
9554 if (_autocreator) { 9604 if (_autocreator) {
9555 GPBAutocreatedDictionaryModified(_autocreator, self); 9605 GPBAutocreatedDictionaryModified(_autocreator, self);
9556 } 9606 }
9557 } 9607 }
9558 } 9608 }
9559 9609
9560 - (void)setValue:(uint32_t)value forKey:(NSString *)key { 9610 - (void)setUInt32:(uint32_t)value forKey:(NSString *)key {
9561 if (!key) { 9611 if (!key) {
9562 [NSException raise:NSInvalidArgumentException 9612 [NSException raise:NSInvalidArgumentException
9563 format:@"Attempting to add nil key to a Dictionary"]; 9613 format:@"Attempting to add nil key to a Dictionary"];
9564 } 9614 }
9565 [_dictionary setObject:@(value) forKey:key]; 9615 [_dictionary setObject:@(value) forKey:key];
9566 if (_autocreator) { 9616 if (_autocreator) {
9567 GPBAutocreatedDictionaryModified(_autocreator, self); 9617 GPBAutocreatedDictionaryModified(_autocreator, self);
9568 } 9618 }
9569 } 9619 }
9570 9620
9571 - (void)removeValueForKey:(NSString *)aKey { 9621 - (void)removeUInt32ForKey:(NSString *)aKey {
9572 [_dictionary removeObjectForKey:aKey]; 9622 [_dictionary removeObjectForKey:aKey];
9573 } 9623 }
9574 9624
9575 - (void)removeAll { 9625 - (void)removeAll {
9576 [_dictionary removeAllObjects]; 9626 [_dictionary removeAllObjects];
9577 } 9627 }
9578 9628
9579 @end 9629 @end
9580 9630
9581 #pragma mark - String -> Int32 9631 #pragma mark - String -> Int32
9582 9632
9583 @implementation GPBStringInt32Dictionary { 9633 @implementation GPBStringInt32Dictionary {
9584 @package 9634 @package
9585 NSMutableDictionary *_dictionary; 9635 NSMutableDictionary *_dictionary;
9586 } 9636 }
9587 9637
9588 + (instancetype)dictionary { 9638 + (instancetype)dictionary {
9589 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 9639 return [[[self alloc] initWithInt32s:NULL forKeys:NULL count:0] autorelease];
9590 } 9640 }
9591 9641
9592 + (instancetype)dictionaryWithValue:(int32_t)value 9642 + (instancetype)dictionaryWithInt32:(int32_t)value
9593 forKey:(NSString *)key { 9643 forKey:(NSString *)key {
9594 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 9644 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
9595 // on to get the type correct. 9645 // on to get the type correct.
9596 return [[(GPBStringInt32Dictionary*)[self alloc] initWithValues:&value 9646 return [[(GPBStringInt32Dictionary*)[self alloc] initWithInt32s:&value
9597 forKeys:&key 9647 forKeys:&key
9598 count:1] autorelease ]; 9648 count:1] autorelease ];
9599 } 9649 }
9600 9650
9601 + (instancetype)dictionaryWithValues:(const int32_t [])values 9651 + (instancetype)dictionaryWithInt32s:(const int32_t [])values
9602 forKeys:(const NSString * [])keys 9652 forKeys:(const NSString * [])keys
9603 count:(NSUInteger)count { 9653 count:(NSUInteger)count {
9604 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 9654 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
9605 // on to get the type correct. 9655 // on to get the type correct.
9606 return [[(GPBStringInt32Dictionary*)[self alloc] initWithValues:values 9656 return [[(GPBStringInt32Dictionary*)[self alloc] initWithInt32s:values
9607 forKeys:keys 9657 forKeys:keys
9608 count:count] autorel ease]; 9658 count:count] autorel ease];
9609 } 9659 }
9610 9660
9611 + (instancetype)dictionaryWithDictionary:(GPBStringInt32Dictionary *)dictionary { 9661 + (instancetype)dictionaryWithDictionary:(GPBStringInt32Dictionary *)dictionary {
9612 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 9662 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
9613 // on to get the type correct. 9663 // on to get the type correct.
9614 return [[(GPBStringInt32Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 9664 return [[(GPBStringInt32Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
9615 } 9665 }
9616 9666
9617 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 9667 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
9618 return [[[self alloc] initWithCapacity:numItems] autorelease]; 9668 return [[[self alloc] initWithCapacity:numItems] autorelease];
9619 } 9669 }
9620 9670
9621 - (instancetype)init { 9671 - (instancetype)init {
9622 return [self initWithValues:NULL forKeys:NULL count:0]; 9672 return [self initWithInt32s:NULL forKeys:NULL count:0];
9623 } 9673 }
9624 9674
9625 - (instancetype)initWithValues:(const int32_t [])values 9675 - (instancetype)initWithInt32s:(const int32_t [])values
9626 forKeys:(const NSString * [])keys 9676 forKeys:(const NSString * [])keys
9627 count:(NSUInteger)count { 9677 count:(NSUInteger)count {
9628 self = [super init]; 9678 self = [super init];
9629 if (self) { 9679 if (self) {
9630 _dictionary = [[NSMutableDictionary alloc] init]; 9680 _dictionary = [[NSMutableDictionary alloc] init];
9631 if (count && values && keys) { 9681 if (count && values && keys) {
9632 for (NSUInteger i = 0; i < count; ++i) { 9682 for (NSUInteger i = 0; i < count; ++i) {
9633 if (!keys[i]) { 9683 if (!keys[i]) {
9634 [NSException raise:NSInvalidArgumentException 9684 [NSException raise:NSInvalidArgumentException
9635 format:@"Attempting to add nil key to a Dictionary"]; 9685 format:@"Attempting to add nil key to a Dictionary"];
9636 } 9686 }
9637 [_dictionary setObject:@(values[i]) forKey:keys[i]]; 9687 [_dictionary setObject:@(values[i]) forKey:keys[i]];
9638 } 9688 }
9639 } 9689 }
9640 } 9690 }
9641 return self; 9691 return self;
9642 } 9692 }
9643 9693
9644 - (instancetype)initWithDictionary:(GPBStringInt32Dictionary *)dictionary { 9694 - (instancetype)initWithDictionary:(GPBStringInt32Dictionary *)dictionary {
9645 self = [self initWithValues:NULL forKeys:NULL count:0]; 9695 self = [self initWithInt32s:NULL forKeys:NULL count:0];
9646 if (self) { 9696 if (self) {
9647 if (dictionary) { 9697 if (dictionary) {
9648 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 9698 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
9649 } 9699 }
9650 } 9700 }
9651 return self; 9701 return self;
9652 } 9702 }
9653 9703
9654 - (instancetype)initWithCapacity:(NSUInteger)numItems { 9704 - (instancetype)initWithCapacity:(NSUInteger)numItems {
9655 #pragma unused(numItems) 9705 #pragma unused(numItems)
9656 return [self initWithValues:NULL forKeys:NULL count:0]; 9706 return [self initWithInt32s:NULL forKeys:NULL count:0];
9657 } 9707 }
9658 9708
9659 - (void)dealloc { 9709 - (void)dealloc {
9660 NSAssert(!_autocreator, 9710 NSAssert(!_autocreator,
9661 @"%@: Autocreator must be cleared before release, autocreator: %@", 9711 @"%@: Autocreator must be cleared before release, autocreator: %@",
9662 [self class], _autocreator); 9712 [self class], _autocreator);
9663 [_dictionary release]; 9713 [_dictionary release];
9664 [super dealloc]; 9714 [super dealloc];
9665 } 9715 }
9666 9716
9667 - (instancetype)copyWithZone:(NSZone *)zone { 9717 - (instancetype)copyWithZone:(NSZone *)zone {
9668 return [[GPBStringInt32Dictionary allocWithZone:zone] initWithDictionary:self] ; 9718 return [[GPBStringInt32Dictionary allocWithZone:zone] initWithDictionary:self] ;
9669 } 9719 }
9670 9720
9671 - (BOOL)isEqual:(GPBStringInt32Dictionary *)other { 9721 - (BOOL)isEqual:(id)other {
9672 if (self == other) { 9722 if (self == other) {
9673 return YES; 9723 return YES;
9674 } 9724 }
9675 if (![other isKindOfClass:[GPBStringInt32Dictionary class]]) { 9725 if (![other isKindOfClass:[GPBStringInt32Dictionary class]]) {
9676 return NO; 9726 return NO;
9677 } 9727 }
9678 return [_dictionary isEqual:other->_dictionary]; 9728 GPBStringInt32Dictionary *otherDictionary = other;
9729 return [_dictionary isEqual:otherDictionary->_dictionary];
9679 } 9730 }
9680 9731
9681 - (NSUInteger)hash { 9732 - (NSUInteger)hash {
9682 return _dictionary.count; 9733 return _dictionary.count;
9683 } 9734 }
9684 9735
9685 - (NSString *)description { 9736 - (NSString *)description {
9686 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 9737 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
9687 } 9738 }
9688 9739
9689 - (NSUInteger)count { 9740 - (NSUInteger)count {
9690 return _dictionary.count; 9741 return _dictionary.count;
9691 } 9742 }
9692 9743
9693 - (void)enumerateKeysAndValuesUsingBlock: 9744 - (void)enumerateKeysAndInt32sUsingBlock:
9694 (void (^)(NSString *key, int32_t value, BOOL *stop))block { 9745 (void (^)(NSString *key, int32_t value, BOOL *stop))block {
9695 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey, 9746 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey,
9696 NSNumber *aValue, 9747 NSNumber *aValue,
9697 BOOL *stop) { 9748 BOOL *stop) {
9698 block(aKey, [aValue intValue], stop); 9749 block(aKey, [aValue intValue], stop);
9699 }]; 9750 }];
9700 } 9751 }
9701 9752
9702 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 9753 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
9703 NSUInteger count = _dictionary.count; 9754 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
9741 WriteDictInt32Field(outputStream, [aValue intValue], kMapValueFieldNumber, v alueDataType); 9792 WriteDictInt32Field(outputStream, [aValue intValue], kMapValueFieldNumber, v alueDataType);
9742 }]; 9793 }];
9743 } 9794 }
9744 9795
9745 - (void)setGPBGenericValue:(GPBGenericValue *)value 9796 - (void)setGPBGenericValue:(GPBGenericValue *)value
9746 forGPBGenericValueKey:(GPBGenericValue *)key { 9797 forGPBGenericValueKey:(GPBGenericValue *)key {
9747 [_dictionary setObject:@(value->valueInt32) forKey:key->valueString]; 9798 [_dictionary setObject:@(value->valueInt32) forKey:key->valueString];
9748 } 9799 }
9749 9800
9750 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 9801 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
9751 [self enumerateKeysAndValuesUsingBlock:^(NSString *key, int32_t value, BOOL *s top) { 9802 [self enumerateKeysAndInt32sUsingBlock:^(NSString *key, int32_t value, BOOL *s top) {
9752 #pragma unused(stop) 9803 #pragma unused(stop)
9753 block(key, [NSString stringWithFormat:@"%d", value]); 9804 block(key, [NSString stringWithFormat:@"%d", value]);
9754 }]; 9805 }];
9755 } 9806 }
9756 9807
9757 - (BOOL)valueForKey:(NSString *)key value:(int32_t *)value { 9808 - (BOOL)getInt32:(nullable int32_t *)value forKey:(NSString *)key {
9758 NSNumber *wrapped = [_dictionary objectForKey:key]; 9809 NSNumber *wrapped = [_dictionary objectForKey:key];
9759 if (wrapped && value) { 9810 if (wrapped && value) {
9760 *value = [wrapped intValue]; 9811 *value = [wrapped intValue];
9761 } 9812 }
9762 return (wrapped != NULL); 9813 return (wrapped != NULL);
9763 } 9814 }
9764 9815
9765 - (void)addEntriesFromDictionary:(GPBStringInt32Dictionary *)otherDictionary { 9816 - (void)addEntriesFromDictionary:(GPBStringInt32Dictionary *)otherDictionary {
9766 if (otherDictionary) { 9817 if (otherDictionary) {
9767 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 9818 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
9768 if (_autocreator) { 9819 if (_autocreator) {
9769 GPBAutocreatedDictionaryModified(_autocreator, self); 9820 GPBAutocreatedDictionaryModified(_autocreator, self);
9770 } 9821 }
9771 } 9822 }
9772 } 9823 }
9773 9824
9774 - (void)setValue:(int32_t)value forKey:(NSString *)key { 9825 - (void)setInt32:(int32_t)value forKey:(NSString *)key {
9775 if (!key) { 9826 if (!key) {
9776 [NSException raise:NSInvalidArgumentException 9827 [NSException raise:NSInvalidArgumentException
9777 format:@"Attempting to add nil key to a Dictionary"]; 9828 format:@"Attempting to add nil key to a Dictionary"];
9778 } 9829 }
9779 [_dictionary setObject:@(value) forKey:key]; 9830 [_dictionary setObject:@(value) forKey:key];
9780 if (_autocreator) { 9831 if (_autocreator) {
9781 GPBAutocreatedDictionaryModified(_autocreator, self); 9832 GPBAutocreatedDictionaryModified(_autocreator, self);
9782 } 9833 }
9783 } 9834 }
9784 9835
9785 - (void)removeValueForKey:(NSString *)aKey { 9836 - (void)removeInt32ForKey:(NSString *)aKey {
9786 [_dictionary removeObjectForKey:aKey]; 9837 [_dictionary removeObjectForKey:aKey];
9787 } 9838 }
9788 9839
9789 - (void)removeAll { 9840 - (void)removeAll {
9790 [_dictionary removeAllObjects]; 9841 [_dictionary removeAllObjects];
9791 } 9842 }
9792 9843
9793 @end 9844 @end
9794 9845
9795 #pragma mark - String -> UInt64 9846 #pragma mark - String -> UInt64
9796 9847
9797 @implementation GPBStringUInt64Dictionary { 9848 @implementation GPBStringUInt64Dictionary {
9798 @package 9849 @package
9799 NSMutableDictionary *_dictionary; 9850 NSMutableDictionary *_dictionary;
9800 } 9851 }
9801 9852
9802 + (instancetype)dictionary { 9853 + (instancetype)dictionary {
9803 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 9854 return [[[self alloc] initWithUInt64s:NULL forKeys:NULL count:0] autorelease];
9804 } 9855 }
9805 9856
9806 + (instancetype)dictionaryWithValue:(uint64_t)value 9857 + (instancetype)dictionaryWithUInt64:(uint64_t)value
9807 forKey:(NSString *)key { 9858 forKey:(NSString *)key {
9808 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 9859 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
9809 // on to get the type correct. 9860 // on to get the type correct.
9810 return [[(GPBStringUInt64Dictionary*)[self alloc] initWithValues:&value 9861 return [[(GPBStringUInt64Dictionary*)[self alloc] initWithUInt64s:&value
9811 forKeys:&key 9862 forKeys:&key
9812 count:1] autoreleas e]; 9863 count:1] autorelea se];
9813 } 9864 }
9814 9865
9815 + (instancetype)dictionaryWithValues:(const uint64_t [])values 9866 + (instancetype)dictionaryWithUInt64s:(const uint64_t [])values
9816 forKeys:(const NSString * [])keys 9867 forKeys:(const NSString * [])keys
9817 count:(NSUInteger)count { 9868 count:(NSUInteger)count {
9818 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 9869 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
9819 // on to get the type correct. 9870 // on to get the type correct.
9820 return [[(GPBStringUInt64Dictionary*)[self alloc] initWithValues:values 9871 return [[(GPBStringUInt64Dictionary*)[self alloc] initWithUInt64s:values
9821 forKeys:keys 9872 forKeys:keys
9822 count:count] autore lease]; 9873 count:count] autore lease];
9823 } 9874 }
9824 9875
9825 + (instancetype)dictionaryWithDictionary:(GPBStringUInt64Dictionary *)dictionary { 9876 + (instancetype)dictionaryWithDictionary:(GPBStringUInt64Dictionary *)dictionary {
9826 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 9877 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
9827 // on to get the type correct. 9878 // on to get the type correct.
9828 return [[(GPBStringUInt64Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease]; 9879 return [[(GPBStringUInt64Dictionary*)[self alloc] initWithDictionary:dictionar y] autorelease];
9829 } 9880 }
9830 9881
9831 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 9882 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
9832 return [[[self alloc] initWithCapacity:numItems] autorelease]; 9883 return [[[self alloc] initWithCapacity:numItems] autorelease];
9833 } 9884 }
9834 9885
9835 - (instancetype)init { 9886 - (instancetype)init {
9836 return [self initWithValues:NULL forKeys:NULL count:0]; 9887 return [self initWithUInt64s:NULL forKeys:NULL count:0];
9837 } 9888 }
9838 9889
9839 - (instancetype)initWithValues:(const uint64_t [])values 9890 - (instancetype)initWithUInt64s:(const uint64_t [])values
9840 forKeys:(const NSString * [])keys 9891 forKeys:(const NSString * [])keys
9841 count:(NSUInteger)count { 9892 count:(NSUInteger)count {
9842 self = [super init]; 9893 self = [super init];
9843 if (self) { 9894 if (self) {
9844 _dictionary = [[NSMutableDictionary alloc] init]; 9895 _dictionary = [[NSMutableDictionary alloc] init];
9845 if (count && values && keys) { 9896 if (count && values && keys) {
9846 for (NSUInteger i = 0; i < count; ++i) { 9897 for (NSUInteger i = 0; i < count; ++i) {
9847 if (!keys[i]) { 9898 if (!keys[i]) {
9848 [NSException raise:NSInvalidArgumentException 9899 [NSException raise:NSInvalidArgumentException
9849 format:@"Attempting to add nil key to a Dictionary"]; 9900 format:@"Attempting to add nil key to a Dictionary"];
9850 } 9901 }
9851 [_dictionary setObject:@(values[i]) forKey:keys[i]]; 9902 [_dictionary setObject:@(values[i]) forKey:keys[i]];
9852 } 9903 }
9853 } 9904 }
9854 } 9905 }
9855 return self; 9906 return self;
9856 } 9907 }
9857 9908
9858 - (instancetype)initWithDictionary:(GPBStringUInt64Dictionary *)dictionary { 9909 - (instancetype)initWithDictionary:(GPBStringUInt64Dictionary *)dictionary {
9859 self = [self initWithValues:NULL forKeys:NULL count:0]; 9910 self = [self initWithUInt64s:NULL forKeys:NULL count:0];
9860 if (self) { 9911 if (self) {
9861 if (dictionary) { 9912 if (dictionary) {
9862 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 9913 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
9863 } 9914 }
9864 } 9915 }
9865 return self; 9916 return self;
9866 } 9917 }
9867 9918
9868 - (instancetype)initWithCapacity:(NSUInteger)numItems { 9919 - (instancetype)initWithCapacity:(NSUInteger)numItems {
9869 #pragma unused(numItems) 9920 #pragma unused(numItems)
9870 return [self initWithValues:NULL forKeys:NULL count:0]; 9921 return [self initWithUInt64s:NULL forKeys:NULL count:0];
9871 } 9922 }
9872 9923
9873 - (void)dealloc { 9924 - (void)dealloc {
9874 NSAssert(!_autocreator, 9925 NSAssert(!_autocreator,
9875 @"%@: Autocreator must be cleared before release, autocreator: %@", 9926 @"%@: Autocreator must be cleared before release, autocreator: %@",
9876 [self class], _autocreator); 9927 [self class], _autocreator);
9877 [_dictionary release]; 9928 [_dictionary release];
9878 [super dealloc]; 9929 [super dealloc];
9879 } 9930 }
9880 9931
9881 - (instancetype)copyWithZone:(NSZone *)zone { 9932 - (instancetype)copyWithZone:(NSZone *)zone {
9882 return [[GPBStringUInt64Dictionary allocWithZone:zone] initWithDictionary:self ]; 9933 return [[GPBStringUInt64Dictionary allocWithZone:zone] initWithDictionary:self ];
9883 } 9934 }
9884 9935
9885 - (BOOL)isEqual:(GPBStringUInt64Dictionary *)other { 9936 - (BOOL)isEqual:(id)other {
9886 if (self == other) { 9937 if (self == other) {
9887 return YES; 9938 return YES;
9888 } 9939 }
9889 if (![other isKindOfClass:[GPBStringUInt64Dictionary class]]) { 9940 if (![other isKindOfClass:[GPBStringUInt64Dictionary class]]) {
9890 return NO; 9941 return NO;
9891 } 9942 }
9892 return [_dictionary isEqual:other->_dictionary]; 9943 GPBStringUInt64Dictionary *otherDictionary = other;
9944 return [_dictionary isEqual:otherDictionary->_dictionary];
9893 } 9945 }
9894 9946
9895 - (NSUInteger)hash { 9947 - (NSUInteger)hash {
9896 return _dictionary.count; 9948 return _dictionary.count;
9897 } 9949 }
9898 9950
9899 - (NSString *)description { 9951 - (NSString *)description {
9900 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 9952 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
9901 } 9953 }
9902 9954
9903 - (NSUInteger)count { 9955 - (NSUInteger)count {
9904 return _dictionary.count; 9956 return _dictionary.count;
9905 } 9957 }
9906 9958
9907 - (void)enumerateKeysAndValuesUsingBlock: 9959 - (void)enumerateKeysAndUInt64sUsingBlock:
9908 (void (^)(NSString *key, uint64_t value, BOOL *stop))block { 9960 (void (^)(NSString *key, uint64_t value, BOOL *stop))block {
9909 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey, 9961 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey,
9910 NSNumber *aValue, 9962 NSNumber *aValue,
9911 BOOL *stop) { 9963 BOOL *stop) {
9912 block(aKey, [aValue unsignedLongLongValue], stop); 9964 block(aKey, [aValue unsignedLongLongValue], stop);
9913 }]; 9965 }];
9914 } 9966 }
9915 9967
9916 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 9968 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
9917 NSUInteger count = _dictionary.count; 9969 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
9955 WriteDictUInt64Field(outputStream, [aValue unsignedLongLongValue], kMapValue FieldNumber, valueDataType); 10007 WriteDictUInt64Field(outputStream, [aValue unsignedLongLongValue], kMapValue FieldNumber, valueDataType);
9956 }]; 10008 }];
9957 } 10009 }
9958 10010
9959 - (void)setGPBGenericValue:(GPBGenericValue *)value 10011 - (void)setGPBGenericValue:(GPBGenericValue *)value
9960 forGPBGenericValueKey:(GPBGenericValue *)key { 10012 forGPBGenericValueKey:(GPBGenericValue *)key {
9961 [_dictionary setObject:@(value->valueUInt64) forKey:key->valueString]; 10013 [_dictionary setObject:@(value->valueUInt64) forKey:key->valueString];
9962 } 10014 }
9963 10015
9964 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 10016 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
9965 [self enumerateKeysAndValuesUsingBlock:^(NSString *key, uint64_t value, BOOL * stop) { 10017 [self enumerateKeysAndUInt64sUsingBlock:^(NSString *key, uint64_t value, BOOL *stop) {
9966 #pragma unused(stop) 10018 #pragma unused(stop)
9967 block(key, [NSString stringWithFormat:@"%llu", value]); 10019 block(key, [NSString stringWithFormat:@"%llu", value]);
9968 }]; 10020 }];
9969 } 10021 }
9970 10022
9971 - (BOOL)valueForKey:(NSString *)key value:(uint64_t *)value { 10023 - (BOOL)getUInt64:(nullable uint64_t *)value forKey:(NSString *)key {
9972 NSNumber *wrapped = [_dictionary objectForKey:key]; 10024 NSNumber *wrapped = [_dictionary objectForKey:key];
9973 if (wrapped && value) { 10025 if (wrapped && value) {
9974 *value = [wrapped unsignedLongLongValue]; 10026 *value = [wrapped unsignedLongLongValue];
9975 } 10027 }
9976 return (wrapped != NULL); 10028 return (wrapped != NULL);
9977 } 10029 }
9978 10030
9979 - (void)addEntriesFromDictionary:(GPBStringUInt64Dictionary *)otherDictionary { 10031 - (void)addEntriesFromDictionary:(GPBStringUInt64Dictionary *)otherDictionary {
9980 if (otherDictionary) { 10032 if (otherDictionary) {
9981 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 10033 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
9982 if (_autocreator) { 10034 if (_autocreator) {
9983 GPBAutocreatedDictionaryModified(_autocreator, self); 10035 GPBAutocreatedDictionaryModified(_autocreator, self);
9984 } 10036 }
9985 } 10037 }
9986 } 10038 }
9987 10039
9988 - (void)setValue:(uint64_t)value forKey:(NSString *)key { 10040 - (void)setUInt64:(uint64_t)value forKey:(NSString *)key {
9989 if (!key) { 10041 if (!key) {
9990 [NSException raise:NSInvalidArgumentException 10042 [NSException raise:NSInvalidArgumentException
9991 format:@"Attempting to add nil key to a Dictionary"]; 10043 format:@"Attempting to add nil key to a Dictionary"];
9992 } 10044 }
9993 [_dictionary setObject:@(value) forKey:key]; 10045 [_dictionary setObject:@(value) forKey:key];
9994 if (_autocreator) { 10046 if (_autocreator) {
9995 GPBAutocreatedDictionaryModified(_autocreator, self); 10047 GPBAutocreatedDictionaryModified(_autocreator, self);
9996 } 10048 }
9997 } 10049 }
9998 10050
9999 - (void)removeValueForKey:(NSString *)aKey { 10051 - (void)removeUInt64ForKey:(NSString *)aKey {
10000 [_dictionary removeObjectForKey:aKey]; 10052 [_dictionary removeObjectForKey:aKey];
10001 } 10053 }
10002 10054
10003 - (void)removeAll { 10055 - (void)removeAll {
10004 [_dictionary removeAllObjects]; 10056 [_dictionary removeAllObjects];
10005 } 10057 }
10006 10058
10007 @end 10059 @end
10008 10060
10009 #pragma mark - String -> Int64 10061 #pragma mark - String -> Int64
10010 10062
10011 @implementation GPBStringInt64Dictionary { 10063 @implementation GPBStringInt64Dictionary {
10012 @package 10064 @package
10013 NSMutableDictionary *_dictionary; 10065 NSMutableDictionary *_dictionary;
10014 } 10066 }
10015 10067
10016 + (instancetype)dictionary { 10068 + (instancetype)dictionary {
10017 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 10069 return [[[self alloc] initWithInt64s:NULL forKeys:NULL count:0] autorelease];
10018 } 10070 }
10019 10071
10020 + (instancetype)dictionaryWithValue:(int64_t)value 10072 + (instancetype)dictionaryWithInt64:(int64_t)value
10021 forKey:(NSString *)key { 10073 forKey:(NSString *)key {
10022 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 10074 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
10023 // on to get the type correct. 10075 // on to get the type correct.
10024 return [[(GPBStringInt64Dictionary*)[self alloc] initWithValues:&value 10076 return [[(GPBStringInt64Dictionary*)[self alloc] initWithInt64s:&value
10025 forKeys:&key 10077 forKeys:&key
10026 count:1] autorelease ]; 10078 count:1] autorelease ];
10027 } 10079 }
10028 10080
10029 + (instancetype)dictionaryWithValues:(const int64_t [])values 10081 + (instancetype)dictionaryWithInt64s:(const int64_t [])values
10030 forKeys:(const NSString * [])keys 10082 forKeys:(const NSString * [])keys
10031 count:(NSUInteger)count { 10083 count:(NSUInteger)count {
10032 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 10084 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
10033 // on to get the type correct. 10085 // on to get the type correct.
10034 return [[(GPBStringInt64Dictionary*)[self alloc] initWithValues:values 10086 return [[(GPBStringInt64Dictionary*)[self alloc] initWithInt64s:values
10035 forKeys:keys 10087 forKeys:keys
10036 count:count] autorel ease]; 10088 count:count] autorel ease];
10037 } 10089 }
10038 10090
10039 + (instancetype)dictionaryWithDictionary:(GPBStringInt64Dictionary *)dictionary { 10091 + (instancetype)dictionaryWithDictionary:(GPBStringInt64Dictionary *)dictionary {
10040 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 10092 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
10041 // on to get the type correct. 10093 // on to get the type correct.
10042 return [[(GPBStringInt64Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 10094 return [[(GPBStringInt64Dictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
10043 } 10095 }
10044 10096
10045 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 10097 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
10046 return [[[self alloc] initWithCapacity:numItems] autorelease]; 10098 return [[[self alloc] initWithCapacity:numItems] autorelease];
10047 } 10099 }
10048 10100
10049 - (instancetype)init { 10101 - (instancetype)init {
10050 return [self initWithValues:NULL forKeys:NULL count:0]; 10102 return [self initWithInt64s:NULL forKeys:NULL count:0];
10051 } 10103 }
10052 10104
10053 - (instancetype)initWithValues:(const int64_t [])values 10105 - (instancetype)initWithInt64s:(const int64_t [])values
10054 forKeys:(const NSString * [])keys 10106 forKeys:(const NSString * [])keys
10055 count:(NSUInteger)count { 10107 count:(NSUInteger)count {
10056 self = [super init]; 10108 self = [super init];
10057 if (self) { 10109 if (self) {
10058 _dictionary = [[NSMutableDictionary alloc] init]; 10110 _dictionary = [[NSMutableDictionary alloc] init];
10059 if (count && values && keys) { 10111 if (count && values && keys) {
10060 for (NSUInteger i = 0; i < count; ++i) { 10112 for (NSUInteger i = 0; i < count; ++i) {
10061 if (!keys[i]) { 10113 if (!keys[i]) {
10062 [NSException raise:NSInvalidArgumentException 10114 [NSException raise:NSInvalidArgumentException
10063 format:@"Attempting to add nil key to a Dictionary"]; 10115 format:@"Attempting to add nil key to a Dictionary"];
10064 } 10116 }
10065 [_dictionary setObject:@(values[i]) forKey:keys[i]]; 10117 [_dictionary setObject:@(values[i]) forKey:keys[i]];
10066 } 10118 }
10067 } 10119 }
10068 } 10120 }
10069 return self; 10121 return self;
10070 } 10122 }
10071 10123
10072 - (instancetype)initWithDictionary:(GPBStringInt64Dictionary *)dictionary { 10124 - (instancetype)initWithDictionary:(GPBStringInt64Dictionary *)dictionary {
10073 self = [self initWithValues:NULL forKeys:NULL count:0]; 10125 self = [self initWithInt64s:NULL forKeys:NULL count:0];
10074 if (self) { 10126 if (self) {
10075 if (dictionary) { 10127 if (dictionary) {
10076 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 10128 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
10077 } 10129 }
10078 } 10130 }
10079 return self; 10131 return self;
10080 } 10132 }
10081 10133
10082 - (instancetype)initWithCapacity:(NSUInteger)numItems { 10134 - (instancetype)initWithCapacity:(NSUInteger)numItems {
10083 #pragma unused(numItems) 10135 #pragma unused(numItems)
10084 return [self initWithValues:NULL forKeys:NULL count:0]; 10136 return [self initWithInt64s:NULL forKeys:NULL count:0];
10085 } 10137 }
10086 10138
10087 - (void)dealloc { 10139 - (void)dealloc {
10088 NSAssert(!_autocreator, 10140 NSAssert(!_autocreator,
10089 @"%@: Autocreator must be cleared before release, autocreator: %@", 10141 @"%@: Autocreator must be cleared before release, autocreator: %@",
10090 [self class], _autocreator); 10142 [self class], _autocreator);
10091 [_dictionary release]; 10143 [_dictionary release];
10092 [super dealloc]; 10144 [super dealloc];
10093 } 10145 }
10094 10146
10095 - (instancetype)copyWithZone:(NSZone *)zone { 10147 - (instancetype)copyWithZone:(NSZone *)zone {
10096 return [[GPBStringInt64Dictionary allocWithZone:zone] initWithDictionary:self] ; 10148 return [[GPBStringInt64Dictionary allocWithZone:zone] initWithDictionary:self] ;
10097 } 10149 }
10098 10150
10099 - (BOOL)isEqual:(GPBStringInt64Dictionary *)other { 10151 - (BOOL)isEqual:(id)other {
10100 if (self == other) { 10152 if (self == other) {
10101 return YES; 10153 return YES;
10102 } 10154 }
10103 if (![other isKindOfClass:[GPBStringInt64Dictionary class]]) { 10155 if (![other isKindOfClass:[GPBStringInt64Dictionary class]]) {
10104 return NO; 10156 return NO;
10105 } 10157 }
10106 return [_dictionary isEqual:other->_dictionary]; 10158 GPBStringInt64Dictionary *otherDictionary = other;
10159 return [_dictionary isEqual:otherDictionary->_dictionary];
10107 } 10160 }
10108 10161
10109 - (NSUInteger)hash { 10162 - (NSUInteger)hash {
10110 return _dictionary.count; 10163 return _dictionary.count;
10111 } 10164 }
10112 10165
10113 - (NSString *)description { 10166 - (NSString *)description {
10114 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 10167 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
10115 } 10168 }
10116 10169
10117 - (NSUInteger)count { 10170 - (NSUInteger)count {
10118 return _dictionary.count; 10171 return _dictionary.count;
10119 } 10172 }
10120 10173
10121 - (void)enumerateKeysAndValuesUsingBlock: 10174 - (void)enumerateKeysAndInt64sUsingBlock:
10122 (void (^)(NSString *key, int64_t value, BOOL *stop))block { 10175 (void (^)(NSString *key, int64_t value, BOOL *stop))block {
10123 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey, 10176 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey,
10124 NSNumber *aValue, 10177 NSNumber *aValue,
10125 BOOL *stop) { 10178 BOOL *stop) {
10126 block(aKey, [aValue longLongValue], stop); 10179 block(aKey, [aValue longLongValue], stop);
10127 }]; 10180 }];
10128 } 10181 }
10129 10182
10130 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 10183 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
10131 NSUInteger count = _dictionary.count; 10184 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
10169 WriteDictInt64Field(outputStream, [aValue longLongValue], kMapValueFieldNumb er, valueDataType); 10222 WriteDictInt64Field(outputStream, [aValue longLongValue], kMapValueFieldNumb er, valueDataType);
10170 }]; 10223 }];
10171 } 10224 }
10172 10225
10173 - (void)setGPBGenericValue:(GPBGenericValue *)value 10226 - (void)setGPBGenericValue:(GPBGenericValue *)value
10174 forGPBGenericValueKey:(GPBGenericValue *)key { 10227 forGPBGenericValueKey:(GPBGenericValue *)key {
10175 [_dictionary setObject:@(value->valueInt64) forKey:key->valueString]; 10228 [_dictionary setObject:@(value->valueInt64) forKey:key->valueString];
10176 } 10229 }
10177 10230
10178 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 10231 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
10179 [self enumerateKeysAndValuesUsingBlock:^(NSString *key, int64_t value, BOOL *s top) { 10232 [self enumerateKeysAndInt64sUsingBlock:^(NSString *key, int64_t value, BOOL *s top) {
10180 #pragma unused(stop) 10233 #pragma unused(stop)
10181 block(key, [NSString stringWithFormat:@"%lld", value]); 10234 block(key, [NSString stringWithFormat:@"%lld", value]);
10182 }]; 10235 }];
10183 } 10236 }
10184 10237
10185 - (BOOL)valueForKey:(NSString *)key value:(int64_t *)value { 10238 - (BOOL)getInt64:(nullable int64_t *)value forKey:(NSString *)key {
10186 NSNumber *wrapped = [_dictionary objectForKey:key]; 10239 NSNumber *wrapped = [_dictionary objectForKey:key];
10187 if (wrapped && value) { 10240 if (wrapped && value) {
10188 *value = [wrapped longLongValue]; 10241 *value = [wrapped longLongValue];
10189 } 10242 }
10190 return (wrapped != NULL); 10243 return (wrapped != NULL);
10191 } 10244 }
10192 10245
10193 - (void)addEntriesFromDictionary:(GPBStringInt64Dictionary *)otherDictionary { 10246 - (void)addEntriesFromDictionary:(GPBStringInt64Dictionary *)otherDictionary {
10194 if (otherDictionary) { 10247 if (otherDictionary) {
10195 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 10248 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
10196 if (_autocreator) { 10249 if (_autocreator) {
10197 GPBAutocreatedDictionaryModified(_autocreator, self); 10250 GPBAutocreatedDictionaryModified(_autocreator, self);
10198 } 10251 }
10199 } 10252 }
10200 } 10253 }
10201 10254
10202 - (void)setValue:(int64_t)value forKey:(NSString *)key { 10255 - (void)setInt64:(int64_t)value forKey:(NSString *)key {
10203 if (!key) { 10256 if (!key) {
10204 [NSException raise:NSInvalidArgumentException 10257 [NSException raise:NSInvalidArgumentException
10205 format:@"Attempting to add nil key to a Dictionary"]; 10258 format:@"Attempting to add nil key to a Dictionary"];
10206 } 10259 }
10207 [_dictionary setObject:@(value) forKey:key]; 10260 [_dictionary setObject:@(value) forKey:key];
10208 if (_autocreator) { 10261 if (_autocreator) {
10209 GPBAutocreatedDictionaryModified(_autocreator, self); 10262 GPBAutocreatedDictionaryModified(_autocreator, self);
10210 } 10263 }
10211 } 10264 }
10212 10265
10213 - (void)removeValueForKey:(NSString *)aKey { 10266 - (void)removeInt64ForKey:(NSString *)aKey {
10214 [_dictionary removeObjectForKey:aKey]; 10267 [_dictionary removeObjectForKey:aKey];
10215 } 10268 }
10216 10269
10217 - (void)removeAll { 10270 - (void)removeAll {
10218 [_dictionary removeAllObjects]; 10271 [_dictionary removeAllObjects];
10219 } 10272 }
10220 10273
10221 @end 10274 @end
10222 10275
10223 #pragma mark - String -> Bool 10276 #pragma mark - String -> Bool
10224 10277
10225 @implementation GPBStringBoolDictionary { 10278 @implementation GPBStringBoolDictionary {
10226 @package 10279 @package
10227 NSMutableDictionary *_dictionary; 10280 NSMutableDictionary *_dictionary;
10228 } 10281 }
10229 10282
10230 + (instancetype)dictionary { 10283 + (instancetype)dictionary {
10231 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 10284 return [[[self alloc] initWithBools:NULL forKeys:NULL count:0] autorelease];
10232 } 10285 }
10233 10286
10234 + (instancetype)dictionaryWithValue:(BOOL)value 10287 + (instancetype)dictionaryWithBool:(BOOL)value
10235 forKey:(NSString *)key { 10288 forKey:(NSString *)key {
10236 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 10289 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
10237 // on to get the type correct. 10290 // on to get the type correct.
10238 return [[(GPBStringBoolDictionary*)[self alloc] initWithValues:&value 10291 return [[(GPBStringBoolDictionary*)[self alloc] initWithBools:&value
10239 forKeys:&key 10292 forKeys:&key
10240 count:1] autorelease] ; 10293 count:1] autorelease];
10241 } 10294 }
10242 10295
10243 + (instancetype)dictionaryWithValues:(const BOOL [])values 10296 + (instancetype)dictionaryWithBools:(const BOOL [])values
10244 forKeys:(const NSString * [])keys 10297 forKeys:(const NSString * [])keys
10245 count:(NSUInteger)count { 10298 count:(NSUInteger)count {
10246 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 10299 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
10247 // on to get the type correct. 10300 // on to get the type correct.
10248 return [[(GPBStringBoolDictionary*)[self alloc] initWithValues:values 10301 return [[(GPBStringBoolDictionary*)[self alloc] initWithBools:values
10249 forKeys:keys 10302 forKeys:keys
10250 count:count] autorele ase]; 10303 count:count] autorele ase];
10251 } 10304 }
10252 10305
10253 + (instancetype)dictionaryWithDictionary:(GPBStringBoolDictionary *)dictionary { 10306 + (instancetype)dictionaryWithDictionary:(GPBStringBoolDictionary *)dictionary {
10254 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 10307 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
10255 // on to get the type correct. 10308 // on to get the type correct.
10256 return [[(GPBStringBoolDictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 10309 return [[(GPBStringBoolDictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
10257 } 10310 }
10258 10311
10259 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 10312 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
10260 return [[[self alloc] initWithCapacity:numItems] autorelease]; 10313 return [[[self alloc] initWithCapacity:numItems] autorelease];
10261 } 10314 }
10262 10315
10263 - (instancetype)init { 10316 - (instancetype)init {
10264 return [self initWithValues:NULL forKeys:NULL count:0]; 10317 return [self initWithBools:NULL forKeys:NULL count:0];
10265 } 10318 }
10266 10319
10267 - (instancetype)initWithValues:(const BOOL [])values 10320 - (instancetype)initWithBools:(const BOOL [])values
10268 forKeys:(const NSString * [])keys 10321 forKeys:(const NSString * [])keys
10269 count:(NSUInteger)count { 10322 count:(NSUInteger)count {
10270 self = [super init]; 10323 self = [super init];
10271 if (self) { 10324 if (self) {
10272 _dictionary = [[NSMutableDictionary alloc] init]; 10325 _dictionary = [[NSMutableDictionary alloc] init];
10273 if (count && values && keys) { 10326 if (count && values && keys) {
10274 for (NSUInteger i = 0; i < count; ++i) { 10327 for (NSUInteger i = 0; i < count; ++i) {
10275 if (!keys[i]) { 10328 if (!keys[i]) {
10276 [NSException raise:NSInvalidArgumentException 10329 [NSException raise:NSInvalidArgumentException
10277 format:@"Attempting to add nil key to a Dictionary"]; 10330 format:@"Attempting to add nil key to a Dictionary"];
10278 } 10331 }
10279 [_dictionary setObject:@(values[i]) forKey:keys[i]]; 10332 [_dictionary setObject:@(values[i]) forKey:keys[i]];
10280 } 10333 }
10281 } 10334 }
10282 } 10335 }
10283 return self; 10336 return self;
10284 } 10337 }
10285 10338
10286 - (instancetype)initWithDictionary:(GPBStringBoolDictionary *)dictionary { 10339 - (instancetype)initWithDictionary:(GPBStringBoolDictionary *)dictionary {
10287 self = [self initWithValues:NULL forKeys:NULL count:0]; 10340 self = [self initWithBools:NULL forKeys:NULL count:0];
10288 if (self) { 10341 if (self) {
10289 if (dictionary) { 10342 if (dictionary) {
10290 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 10343 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
10291 } 10344 }
10292 } 10345 }
10293 return self; 10346 return self;
10294 } 10347 }
10295 10348
10296 - (instancetype)initWithCapacity:(NSUInteger)numItems { 10349 - (instancetype)initWithCapacity:(NSUInteger)numItems {
10297 #pragma unused(numItems) 10350 #pragma unused(numItems)
10298 return [self initWithValues:NULL forKeys:NULL count:0]; 10351 return [self initWithBools:NULL forKeys:NULL count:0];
10299 } 10352 }
10300 10353
10301 - (void)dealloc { 10354 - (void)dealloc {
10302 NSAssert(!_autocreator, 10355 NSAssert(!_autocreator,
10303 @"%@: Autocreator must be cleared before release, autocreator: %@", 10356 @"%@: Autocreator must be cleared before release, autocreator: %@",
10304 [self class], _autocreator); 10357 [self class], _autocreator);
10305 [_dictionary release]; 10358 [_dictionary release];
10306 [super dealloc]; 10359 [super dealloc];
10307 } 10360 }
10308 10361
10309 - (instancetype)copyWithZone:(NSZone *)zone { 10362 - (instancetype)copyWithZone:(NSZone *)zone {
10310 return [[GPBStringBoolDictionary allocWithZone:zone] initWithDictionary:self]; 10363 return [[GPBStringBoolDictionary allocWithZone:zone] initWithDictionary:self];
10311 } 10364 }
10312 10365
10313 - (BOOL)isEqual:(GPBStringBoolDictionary *)other { 10366 - (BOOL)isEqual:(id)other {
10314 if (self == other) { 10367 if (self == other) {
10315 return YES; 10368 return YES;
10316 } 10369 }
10317 if (![other isKindOfClass:[GPBStringBoolDictionary class]]) { 10370 if (![other isKindOfClass:[GPBStringBoolDictionary class]]) {
10318 return NO; 10371 return NO;
10319 } 10372 }
10320 return [_dictionary isEqual:other->_dictionary]; 10373 GPBStringBoolDictionary *otherDictionary = other;
10374 return [_dictionary isEqual:otherDictionary->_dictionary];
10321 } 10375 }
10322 10376
10323 - (NSUInteger)hash { 10377 - (NSUInteger)hash {
10324 return _dictionary.count; 10378 return _dictionary.count;
10325 } 10379 }
10326 10380
10327 - (NSString *)description { 10381 - (NSString *)description {
10328 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 10382 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
10329 } 10383 }
10330 10384
10331 - (NSUInteger)count { 10385 - (NSUInteger)count {
10332 return _dictionary.count; 10386 return _dictionary.count;
10333 } 10387 }
10334 10388
10335 - (void)enumerateKeysAndValuesUsingBlock: 10389 - (void)enumerateKeysAndBoolsUsingBlock:
10336 (void (^)(NSString *key, BOOL value, BOOL *stop))block { 10390 (void (^)(NSString *key, BOOL value, BOOL *stop))block {
10337 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey, 10391 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey,
10338 NSNumber *aValue, 10392 NSNumber *aValue,
10339 BOOL *stop) { 10393 BOOL *stop) {
10340 block(aKey, [aValue boolValue], stop); 10394 block(aKey, [aValue boolValue], stop);
10341 }]; 10395 }];
10342 } 10396 }
10343 10397
10344 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 10398 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
10345 NSUInteger count = _dictionary.count; 10399 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
10383 WriteDictBoolField(outputStream, [aValue boolValue], kMapValueFieldNumber, v alueDataType); 10437 WriteDictBoolField(outputStream, [aValue boolValue], kMapValueFieldNumber, v alueDataType);
10384 }]; 10438 }];
10385 } 10439 }
10386 10440
10387 - (void)setGPBGenericValue:(GPBGenericValue *)value 10441 - (void)setGPBGenericValue:(GPBGenericValue *)value
10388 forGPBGenericValueKey:(GPBGenericValue *)key { 10442 forGPBGenericValueKey:(GPBGenericValue *)key {
10389 [_dictionary setObject:@(value->valueBool) forKey:key->valueString]; 10443 [_dictionary setObject:@(value->valueBool) forKey:key->valueString];
10390 } 10444 }
10391 10445
10392 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 10446 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
10393 [self enumerateKeysAndValuesUsingBlock:^(NSString *key, BOOL value, BOOL *stop ) { 10447 [self enumerateKeysAndBoolsUsingBlock:^(NSString *key, BOOL value, BOOL *stop) {
10394 #pragma unused(stop) 10448 #pragma unused(stop)
10395 block(key, (value ? @"true" : @"false")); 10449 block(key, (value ? @"true" : @"false"));
10396 }]; 10450 }];
10397 } 10451 }
10398 10452
10399 - (BOOL)valueForKey:(NSString *)key value:(BOOL *)value { 10453 - (BOOL)getBool:(nullable BOOL *)value forKey:(NSString *)key {
10400 NSNumber *wrapped = [_dictionary objectForKey:key]; 10454 NSNumber *wrapped = [_dictionary objectForKey:key];
10401 if (wrapped && value) { 10455 if (wrapped && value) {
10402 *value = [wrapped boolValue]; 10456 *value = [wrapped boolValue];
10403 } 10457 }
10404 return (wrapped != NULL); 10458 return (wrapped != NULL);
10405 } 10459 }
10406 10460
10407 - (void)addEntriesFromDictionary:(GPBStringBoolDictionary *)otherDictionary { 10461 - (void)addEntriesFromDictionary:(GPBStringBoolDictionary *)otherDictionary {
10408 if (otherDictionary) { 10462 if (otherDictionary) {
10409 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 10463 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
10410 if (_autocreator) { 10464 if (_autocreator) {
10411 GPBAutocreatedDictionaryModified(_autocreator, self); 10465 GPBAutocreatedDictionaryModified(_autocreator, self);
10412 } 10466 }
10413 } 10467 }
10414 } 10468 }
10415 10469
10416 - (void)setValue:(BOOL)value forKey:(NSString *)key { 10470 - (void)setBool:(BOOL)value forKey:(NSString *)key {
10417 if (!key) { 10471 if (!key) {
10418 [NSException raise:NSInvalidArgumentException 10472 [NSException raise:NSInvalidArgumentException
10419 format:@"Attempting to add nil key to a Dictionary"]; 10473 format:@"Attempting to add nil key to a Dictionary"];
10420 } 10474 }
10421 [_dictionary setObject:@(value) forKey:key]; 10475 [_dictionary setObject:@(value) forKey:key];
10422 if (_autocreator) { 10476 if (_autocreator) {
10423 GPBAutocreatedDictionaryModified(_autocreator, self); 10477 GPBAutocreatedDictionaryModified(_autocreator, self);
10424 } 10478 }
10425 } 10479 }
10426 10480
10427 - (void)removeValueForKey:(NSString *)aKey { 10481 - (void)removeBoolForKey:(NSString *)aKey {
10428 [_dictionary removeObjectForKey:aKey]; 10482 [_dictionary removeObjectForKey:aKey];
10429 } 10483 }
10430 10484
10431 - (void)removeAll { 10485 - (void)removeAll {
10432 [_dictionary removeAllObjects]; 10486 [_dictionary removeAllObjects];
10433 } 10487 }
10434 10488
10435 @end 10489 @end
10436 10490
10437 #pragma mark - String -> Float 10491 #pragma mark - String -> Float
10438 10492
10439 @implementation GPBStringFloatDictionary { 10493 @implementation GPBStringFloatDictionary {
10440 @package 10494 @package
10441 NSMutableDictionary *_dictionary; 10495 NSMutableDictionary *_dictionary;
10442 } 10496 }
10443 10497
10444 + (instancetype)dictionary { 10498 + (instancetype)dictionary {
10445 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 10499 return [[[self alloc] initWithFloats:NULL forKeys:NULL count:0] autorelease];
10446 } 10500 }
10447 10501
10448 + (instancetype)dictionaryWithValue:(float)value 10502 + (instancetype)dictionaryWithFloat:(float)value
10449 forKey:(NSString *)key { 10503 forKey:(NSString *)key {
10450 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 10504 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
10451 // on to get the type correct. 10505 // on to get the type correct.
10452 return [[(GPBStringFloatDictionary*)[self alloc] initWithValues:&value 10506 return [[(GPBStringFloatDictionary*)[self alloc] initWithFloats:&value
10453 forKeys:&key 10507 forKeys:&key
10454 count:1] autorelease ]; 10508 count:1] autorelease ];
10455 } 10509 }
10456 10510
10457 + (instancetype)dictionaryWithValues:(const float [])values 10511 + (instancetype)dictionaryWithFloats:(const float [])values
10458 forKeys:(const NSString * [])keys 10512 forKeys:(const NSString * [])keys
10459 count:(NSUInteger)count { 10513 count:(NSUInteger)count {
10460 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 10514 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
10461 // on to get the type correct. 10515 // on to get the type correct.
10462 return [[(GPBStringFloatDictionary*)[self alloc] initWithValues:values 10516 return [[(GPBStringFloatDictionary*)[self alloc] initWithFloats:values
10463 forKeys:keys 10517 forKeys:keys
10464 count:count] autorel ease]; 10518 count:count] autorel ease];
10465 } 10519 }
10466 10520
10467 + (instancetype)dictionaryWithDictionary:(GPBStringFloatDictionary *)dictionary { 10521 + (instancetype)dictionaryWithDictionary:(GPBStringFloatDictionary *)dictionary {
10468 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 10522 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
10469 // on to get the type correct. 10523 // on to get the type correct.
10470 return [[(GPBStringFloatDictionary*)[self alloc] initWithDictionary:dictionary ] autorelease]; 10524 return [[(GPBStringFloatDictionary*)[self alloc] initWithDictionary:dictionary ] autorelease];
10471 } 10525 }
10472 10526
10473 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 10527 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
10474 return [[[self alloc] initWithCapacity:numItems] autorelease]; 10528 return [[[self alloc] initWithCapacity:numItems] autorelease];
10475 } 10529 }
10476 10530
10477 - (instancetype)init { 10531 - (instancetype)init {
10478 return [self initWithValues:NULL forKeys:NULL count:0]; 10532 return [self initWithFloats:NULL forKeys:NULL count:0];
10479 } 10533 }
10480 10534
10481 - (instancetype)initWithValues:(const float [])values 10535 - (instancetype)initWithFloats:(const float [])values
10482 forKeys:(const NSString * [])keys 10536 forKeys:(const NSString * [])keys
10483 count:(NSUInteger)count { 10537 count:(NSUInteger)count {
10484 self = [super init]; 10538 self = [super init];
10485 if (self) { 10539 if (self) {
10486 _dictionary = [[NSMutableDictionary alloc] init]; 10540 _dictionary = [[NSMutableDictionary alloc] init];
10487 if (count && values && keys) { 10541 if (count && values && keys) {
10488 for (NSUInteger i = 0; i < count; ++i) { 10542 for (NSUInteger i = 0; i < count; ++i) {
10489 if (!keys[i]) { 10543 if (!keys[i]) {
10490 [NSException raise:NSInvalidArgumentException 10544 [NSException raise:NSInvalidArgumentException
10491 format:@"Attempting to add nil key to a Dictionary"]; 10545 format:@"Attempting to add nil key to a Dictionary"];
10492 } 10546 }
10493 [_dictionary setObject:@(values[i]) forKey:keys[i]]; 10547 [_dictionary setObject:@(values[i]) forKey:keys[i]];
10494 } 10548 }
10495 } 10549 }
10496 } 10550 }
10497 return self; 10551 return self;
10498 } 10552 }
10499 10553
10500 - (instancetype)initWithDictionary:(GPBStringFloatDictionary *)dictionary { 10554 - (instancetype)initWithDictionary:(GPBStringFloatDictionary *)dictionary {
10501 self = [self initWithValues:NULL forKeys:NULL count:0]; 10555 self = [self initWithFloats:NULL forKeys:NULL count:0];
10502 if (self) { 10556 if (self) {
10503 if (dictionary) { 10557 if (dictionary) {
10504 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 10558 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
10505 } 10559 }
10506 } 10560 }
10507 return self; 10561 return self;
10508 } 10562 }
10509 10563
10510 - (instancetype)initWithCapacity:(NSUInteger)numItems { 10564 - (instancetype)initWithCapacity:(NSUInteger)numItems {
10511 #pragma unused(numItems) 10565 #pragma unused(numItems)
10512 return [self initWithValues:NULL forKeys:NULL count:0]; 10566 return [self initWithFloats:NULL forKeys:NULL count:0];
10513 } 10567 }
10514 10568
10515 - (void)dealloc { 10569 - (void)dealloc {
10516 NSAssert(!_autocreator, 10570 NSAssert(!_autocreator,
10517 @"%@: Autocreator must be cleared before release, autocreator: %@", 10571 @"%@: Autocreator must be cleared before release, autocreator: %@",
10518 [self class], _autocreator); 10572 [self class], _autocreator);
10519 [_dictionary release]; 10573 [_dictionary release];
10520 [super dealloc]; 10574 [super dealloc];
10521 } 10575 }
10522 10576
10523 - (instancetype)copyWithZone:(NSZone *)zone { 10577 - (instancetype)copyWithZone:(NSZone *)zone {
10524 return [[GPBStringFloatDictionary allocWithZone:zone] initWithDictionary:self] ; 10578 return [[GPBStringFloatDictionary allocWithZone:zone] initWithDictionary:self] ;
10525 } 10579 }
10526 10580
10527 - (BOOL)isEqual:(GPBStringFloatDictionary *)other { 10581 - (BOOL)isEqual:(id)other {
10528 if (self == other) { 10582 if (self == other) {
10529 return YES; 10583 return YES;
10530 } 10584 }
10531 if (![other isKindOfClass:[GPBStringFloatDictionary class]]) { 10585 if (![other isKindOfClass:[GPBStringFloatDictionary class]]) {
10532 return NO; 10586 return NO;
10533 } 10587 }
10534 return [_dictionary isEqual:other->_dictionary]; 10588 GPBStringFloatDictionary *otherDictionary = other;
10589 return [_dictionary isEqual:otherDictionary->_dictionary];
10535 } 10590 }
10536 10591
10537 - (NSUInteger)hash { 10592 - (NSUInteger)hash {
10538 return _dictionary.count; 10593 return _dictionary.count;
10539 } 10594 }
10540 10595
10541 - (NSString *)description { 10596 - (NSString *)description {
10542 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 10597 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
10543 } 10598 }
10544 10599
10545 - (NSUInteger)count { 10600 - (NSUInteger)count {
10546 return _dictionary.count; 10601 return _dictionary.count;
10547 } 10602 }
10548 10603
10549 - (void)enumerateKeysAndValuesUsingBlock: 10604 - (void)enumerateKeysAndFloatsUsingBlock:
10550 (void (^)(NSString *key, float value, BOOL *stop))block { 10605 (void (^)(NSString *key, float value, BOOL *stop))block {
10551 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey, 10606 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey,
10552 NSNumber *aValue, 10607 NSNumber *aValue,
10553 BOOL *stop) { 10608 BOOL *stop) {
10554 block(aKey, [aValue floatValue], stop); 10609 block(aKey, [aValue floatValue], stop);
10555 }]; 10610 }];
10556 } 10611 }
10557 10612
10558 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 10613 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
10559 NSUInteger count = _dictionary.count; 10614 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
10597 WriteDictFloatField(outputStream, [aValue floatValue], kMapValueFieldNumber, valueDataType); 10652 WriteDictFloatField(outputStream, [aValue floatValue], kMapValueFieldNumber, valueDataType);
10598 }]; 10653 }];
10599 } 10654 }
10600 10655
10601 - (void)setGPBGenericValue:(GPBGenericValue *)value 10656 - (void)setGPBGenericValue:(GPBGenericValue *)value
10602 forGPBGenericValueKey:(GPBGenericValue *)key { 10657 forGPBGenericValueKey:(GPBGenericValue *)key {
10603 [_dictionary setObject:@(value->valueFloat) forKey:key->valueString]; 10658 [_dictionary setObject:@(value->valueFloat) forKey:key->valueString];
10604 } 10659 }
10605 10660
10606 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 10661 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
10607 [self enumerateKeysAndValuesUsingBlock:^(NSString *key, float value, BOOL *sto p) { 10662 [self enumerateKeysAndFloatsUsingBlock:^(NSString *key, float value, BOOL *sto p) {
10608 #pragma unused(stop) 10663 #pragma unused(stop)
10609 block(key, [NSString stringWithFormat:@"%.*g", FLT_DIG, value]); 10664 block(key, [NSString stringWithFormat:@"%.*g", FLT_DIG, value]);
10610 }]; 10665 }];
10611 } 10666 }
10612 10667
10613 - (BOOL)valueForKey:(NSString *)key value:(float *)value { 10668 - (BOOL)getFloat:(nullable float *)value forKey:(NSString *)key {
10614 NSNumber *wrapped = [_dictionary objectForKey:key]; 10669 NSNumber *wrapped = [_dictionary objectForKey:key];
10615 if (wrapped && value) { 10670 if (wrapped && value) {
10616 *value = [wrapped floatValue]; 10671 *value = [wrapped floatValue];
10617 } 10672 }
10618 return (wrapped != NULL); 10673 return (wrapped != NULL);
10619 } 10674 }
10620 10675
10621 - (void)addEntriesFromDictionary:(GPBStringFloatDictionary *)otherDictionary { 10676 - (void)addEntriesFromDictionary:(GPBStringFloatDictionary *)otherDictionary {
10622 if (otherDictionary) { 10677 if (otherDictionary) {
10623 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 10678 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
10624 if (_autocreator) { 10679 if (_autocreator) {
10625 GPBAutocreatedDictionaryModified(_autocreator, self); 10680 GPBAutocreatedDictionaryModified(_autocreator, self);
10626 } 10681 }
10627 } 10682 }
10628 } 10683 }
10629 10684
10630 - (void)setValue:(float)value forKey:(NSString *)key { 10685 - (void)setFloat:(float)value forKey:(NSString *)key {
10631 if (!key) { 10686 if (!key) {
10632 [NSException raise:NSInvalidArgumentException 10687 [NSException raise:NSInvalidArgumentException
10633 format:@"Attempting to add nil key to a Dictionary"]; 10688 format:@"Attempting to add nil key to a Dictionary"];
10634 } 10689 }
10635 [_dictionary setObject:@(value) forKey:key]; 10690 [_dictionary setObject:@(value) forKey:key];
10636 if (_autocreator) { 10691 if (_autocreator) {
10637 GPBAutocreatedDictionaryModified(_autocreator, self); 10692 GPBAutocreatedDictionaryModified(_autocreator, self);
10638 } 10693 }
10639 } 10694 }
10640 10695
10641 - (void)removeValueForKey:(NSString *)aKey { 10696 - (void)removeFloatForKey:(NSString *)aKey {
10642 [_dictionary removeObjectForKey:aKey]; 10697 [_dictionary removeObjectForKey:aKey];
10643 } 10698 }
10644 10699
10645 - (void)removeAll { 10700 - (void)removeAll {
10646 [_dictionary removeAllObjects]; 10701 [_dictionary removeAllObjects];
10647 } 10702 }
10648 10703
10649 @end 10704 @end
10650 10705
10651 #pragma mark - String -> Double 10706 #pragma mark - String -> Double
10652 10707
10653 @implementation GPBStringDoubleDictionary { 10708 @implementation GPBStringDoubleDictionary {
10654 @package 10709 @package
10655 NSMutableDictionary *_dictionary; 10710 NSMutableDictionary *_dictionary;
10656 } 10711 }
10657 10712
10658 + (instancetype)dictionary { 10713 + (instancetype)dictionary {
10659 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 10714 return [[[self alloc] initWithDoubles:NULL forKeys:NULL count:0] autorelease];
10660 } 10715 }
10661 10716
10662 + (instancetype)dictionaryWithValue:(double)value 10717 + (instancetype)dictionaryWithDouble:(double)value
10663 forKey:(NSString *)key { 10718 forKey:(NSString *)key {
10664 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 10719 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
10665 // on to get the type correct. 10720 // on to get the type correct.
10666 return [[(GPBStringDoubleDictionary*)[self alloc] initWithValues:&value 10721 return [[(GPBStringDoubleDictionary*)[self alloc] initWithDoubles:&value
10667 forKeys:&key 10722 forKeys:&key
10668 count:1] autoreleas e]; 10723 count:1] autorelea se];
10669 } 10724 }
10670 10725
10671 + (instancetype)dictionaryWithValues:(const double [])values 10726 + (instancetype)dictionaryWithDoubles:(const double [])values
10672 forKeys:(const NSString * [])keys 10727 forKeys:(const NSString * [])keys
10673 count:(NSUInteger)count { 10728 count:(NSUInteger)count {
10674 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 10729 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
10675 // on to get the type correct. 10730 // on to get the type correct.
10676 return [[(GPBStringDoubleDictionary*)[self alloc] initWithValues:values 10731 return [[(GPBStringDoubleDictionary*)[self alloc] initWithDoubles:values
10677 forKeys:keys 10732 forKeys:keys
10678 count:count] autore lease]; 10733 count:count] autore lease];
10679 } 10734 }
10680 10735
10681 + (instancetype)dictionaryWithDictionary:(GPBStringDoubleDictionary *)dictionary { 10736 + (instancetype)dictionaryWithDictionary:(GPBStringDoubleDictionary *)dictionary {
10682 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 10737 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
10683 // on to get the type correct. 10738 // on to get the type correct.
10684 return [[(GPBStringDoubleDictionary*)[self alloc] initWithDictionary:dictionar y] autorelease]; 10739 return [[(GPBStringDoubleDictionary*)[self alloc] initWithDictionary:dictionar y] autorelease];
10685 } 10740 }
10686 10741
10687 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 10742 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
10688 return [[[self alloc] initWithCapacity:numItems] autorelease]; 10743 return [[[self alloc] initWithCapacity:numItems] autorelease];
10689 } 10744 }
10690 10745
10691 - (instancetype)init { 10746 - (instancetype)init {
10692 return [self initWithValues:NULL forKeys:NULL count:0]; 10747 return [self initWithDoubles:NULL forKeys:NULL count:0];
10693 } 10748 }
10694 10749
10695 - (instancetype)initWithValues:(const double [])values 10750 - (instancetype)initWithDoubles:(const double [])values
10696 forKeys:(const NSString * [])keys 10751 forKeys:(const NSString * [])keys
10697 count:(NSUInteger)count { 10752 count:(NSUInteger)count {
10698 self = [super init]; 10753 self = [super init];
10699 if (self) { 10754 if (self) {
10700 _dictionary = [[NSMutableDictionary alloc] init]; 10755 _dictionary = [[NSMutableDictionary alloc] init];
10701 if (count && values && keys) { 10756 if (count && values && keys) {
10702 for (NSUInteger i = 0; i < count; ++i) { 10757 for (NSUInteger i = 0; i < count; ++i) {
10703 if (!keys[i]) { 10758 if (!keys[i]) {
10704 [NSException raise:NSInvalidArgumentException 10759 [NSException raise:NSInvalidArgumentException
10705 format:@"Attempting to add nil key to a Dictionary"]; 10760 format:@"Attempting to add nil key to a Dictionary"];
10706 } 10761 }
10707 [_dictionary setObject:@(values[i]) forKey:keys[i]]; 10762 [_dictionary setObject:@(values[i]) forKey:keys[i]];
10708 } 10763 }
10709 } 10764 }
10710 } 10765 }
10711 return self; 10766 return self;
10712 } 10767 }
10713 10768
10714 - (instancetype)initWithDictionary:(GPBStringDoubleDictionary *)dictionary { 10769 - (instancetype)initWithDictionary:(GPBStringDoubleDictionary *)dictionary {
10715 self = [self initWithValues:NULL forKeys:NULL count:0]; 10770 self = [self initWithDoubles:NULL forKeys:NULL count:0];
10716 if (self) { 10771 if (self) {
10717 if (dictionary) { 10772 if (dictionary) {
10718 [_dictionary addEntriesFromDictionary:dictionary->_dictionary]; 10773 [_dictionary addEntriesFromDictionary:dictionary->_dictionary];
10719 } 10774 }
10720 } 10775 }
10721 return self; 10776 return self;
10722 } 10777 }
10723 10778
10724 - (instancetype)initWithCapacity:(NSUInteger)numItems { 10779 - (instancetype)initWithCapacity:(NSUInteger)numItems {
10725 #pragma unused(numItems) 10780 #pragma unused(numItems)
10726 return [self initWithValues:NULL forKeys:NULL count:0]; 10781 return [self initWithDoubles:NULL forKeys:NULL count:0];
10727 } 10782 }
10728 10783
10729 - (void)dealloc { 10784 - (void)dealloc {
10730 NSAssert(!_autocreator, 10785 NSAssert(!_autocreator,
10731 @"%@: Autocreator must be cleared before release, autocreator: %@", 10786 @"%@: Autocreator must be cleared before release, autocreator: %@",
10732 [self class], _autocreator); 10787 [self class], _autocreator);
10733 [_dictionary release]; 10788 [_dictionary release];
10734 [super dealloc]; 10789 [super dealloc];
10735 } 10790 }
10736 10791
10737 - (instancetype)copyWithZone:(NSZone *)zone { 10792 - (instancetype)copyWithZone:(NSZone *)zone {
10738 return [[GPBStringDoubleDictionary allocWithZone:zone] initWithDictionary:self ]; 10793 return [[GPBStringDoubleDictionary allocWithZone:zone] initWithDictionary:self ];
10739 } 10794 }
10740 10795
10741 - (BOOL)isEqual:(GPBStringDoubleDictionary *)other { 10796 - (BOOL)isEqual:(id)other {
10742 if (self == other) { 10797 if (self == other) {
10743 return YES; 10798 return YES;
10744 } 10799 }
10745 if (![other isKindOfClass:[GPBStringDoubleDictionary class]]) { 10800 if (![other isKindOfClass:[GPBStringDoubleDictionary class]]) {
10746 return NO; 10801 return NO;
10747 } 10802 }
10748 return [_dictionary isEqual:other->_dictionary]; 10803 GPBStringDoubleDictionary *otherDictionary = other;
10804 return [_dictionary isEqual:otherDictionary->_dictionary];
10749 } 10805 }
10750 10806
10751 - (NSUInteger)hash { 10807 - (NSUInteger)hash {
10752 return _dictionary.count; 10808 return _dictionary.count;
10753 } 10809 }
10754 10810
10755 - (NSString *)description { 10811 - (NSString *)description {
10756 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 10812 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
10757 } 10813 }
10758 10814
10759 - (NSUInteger)count { 10815 - (NSUInteger)count {
10760 return _dictionary.count; 10816 return _dictionary.count;
10761 } 10817 }
10762 10818
10763 - (void)enumerateKeysAndValuesUsingBlock: 10819 - (void)enumerateKeysAndDoublesUsingBlock:
10764 (void (^)(NSString *key, double value, BOOL *stop))block { 10820 (void (^)(NSString *key, double value, BOOL *stop))block {
10765 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey, 10821 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey,
10766 NSNumber *aValue, 10822 NSNumber *aValue,
10767 BOOL *stop) { 10823 BOOL *stop) {
10768 block(aKey, [aValue doubleValue], stop); 10824 block(aKey, [aValue doubleValue], stop);
10769 }]; 10825 }];
10770 } 10826 }
10771 10827
10772 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field { 10828 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field {
10773 NSUInteger count = _dictionary.count; 10829 NSUInteger count = _dictionary.count;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
10811 WriteDictDoubleField(outputStream, [aValue doubleValue], kMapValueFieldNumbe r, valueDataType); 10867 WriteDictDoubleField(outputStream, [aValue doubleValue], kMapValueFieldNumbe r, valueDataType);
10812 }]; 10868 }];
10813 } 10869 }
10814 10870
10815 - (void)setGPBGenericValue:(GPBGenericValue *)value 10871 - (void)setGPBGenericValue:(GPBGenericValue *)value
10816 forGPBGenericValueKey:(GPBGenericValue *)key { 10872 forGPBGenericValueKey:(GPBGenericValue *)key {
10817 [_dictionary setObject:@(value->valueDouble) forKey:key->valueString]; 10873 [_dictionary setObject:@(value->valueDouble) forKey:key->valueString];
10818 } 10874 }
10819 10875
10820 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 10876 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
10821 [self enumerateKeysAndValuesUsingBlock:^(NSString *key, double value, BOOL *st op) { 10877 [self enumerateKeysAndDoublesUsingBlock:^(NSString *key, double value, BOOL *s top) {
10822 #pragma unused(stop) 10878 #pragma unused(stop)
10823 block(key, [NSString stringWithFormat:@"%.*lg", DBL_DIG, value]); 10879 block(key, [NSString stringWithFormat:@"%.*lg", DBL_DIG, value]);
10824 }]; 10880 }];
10825 } 10881 }
10826 10882
10827 - (BOOL)valueForKey:(NSString *)key value:(double *)value { 10883 - (BOOL)getDouble:(nullable double *)value forKey:(NSString *)key {
10828 NSNumber *wrapped = [_dictionary objectForKey:key]; 10884 NSNumber *wrapped = [_dictionary objectForKey:key];
10829 if (wrapped && value) { 10885 if (wrapped && value) {
10830 *value = [wrapped doubleValue]; 10886 *value = [wrapped doubleValue];
10831 } 10887 }
10832 return (wrapped != NULL); 10888 return (wrapped != NULL);
10833 } 10889 }
10834 10890
10835 - (void)addEntriesFromDictionary:(GPBStringDoubleDictionary *)otherDictionary { 10891 - (void)addEntriesFromDictionary:(GPBStringDoubleDictionary *)otherDictionary {
10836 if (otherDictionary) { 10892 if (otherDictionary) {
10837 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary]; 10893 [_dictionary addEntriesFromDictionary:otherDictionary->_dictionary];
10838 if (_autocreator) { 10894 if (_autocreator) {
10839 GPBAutocreatedDictionaryModified(_autocreator, self); 10895 GPBAutocreatedDictionaryModified(_autocreator, self);
10840 } 10896 }
10841 } 10897 }
10842 } 10898 }
10843 10899
10844 - (void)setValue:(double)value forKey:(NSString *)key { 10900 - (void)setDouble:(double)value forKey:(NSString *)key {
10845 if (!key) { 10901 if (!key) {
10846 [NSException raise:NSInvalidArgumentException 10902 [NSException raise:NSInvalidArgumentException
10847 format:@"Attempting to add nil key to a Dictionary"]; 10903 format:@"Attempting to add nil key to a Dictionary"];
10848 } 10904 }
10849 [_dictionary setObject:@(value) forKey:key]; 10905 [_dictionary setObject:@(value) forKey:key];
10850 if (_autocreator) { 10906 if (_autocreator) {
10851 GPBAutocreatedDictionaryModified(_autocreator, self); 10907 GPBAutocreatedDictionaryModified(_autocreator, self);
10852 } 10908 }
10853 } 10909 }
10854 10910
10855 - (void)removeValueForKey:(NSString *)aKey { 10911 - (void)removeDoubleForKey:(NSString *)aKey {
10856 [_dictionary removeObjectForKey:aKey]; 10912 [_dictionary removeObjectForKey:aKey];
10857 } 10913 }
10858 10914
10859 - (void)removeAll { 10915 - (void)removeAll {
10860 [_dictionary removeAllObjects]; 10916 [_dictionary removeAllObjects];
10861 } 10917 }
10862 10918
10863 @end 10919 @end
10864 10920
10865 #pragma mark - String -> Enum 10921 #pragma mark - String -> Enum
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
10973 @"%@: Autocreator must be cleared before release, autocreator: %@", 11029 @"%@: Autocreator must be cleared before release, autocreator: %@",
10974 [self class], _autocreator); 11030 [self class], _autocreator);
10975 [_dictionary release]; 11031 [_dictionary release];
10976 [super dealloc]; 11032 [super dealloc];
10977 } 11033 }
10978 11034
10979 - (instancetype)copyWithZone:(NSZone *)zone { 11035 - (instancetype)copyWithZone:(NSZone *)zone {
10980 return [[GPBStringEnumDictionary allocWithZone:zone] initWithDictionary:self]; 11036 return [[GPBStringEnumDictionary allocWithZone:zone] initWithDictionary:self];
10981 } 11037 }
10982 11038
10983 - (BOOL)isEqual:(GPBStringEnumDictionary *)other { 11039 - (BOOL)isEqual:(id)other {
10984 if (self == other) { 11040 if (self == other) {
10985 return YES; 11041 return YES;
10986 } 11042 }
10987 if (![other isKindOfClass:[GPBStringEnumDictionary class]]) { 11043 if (![other isKindOfClass:[GPBStringEnumDictionary class]]) {
10988 return NO; 11044 return NO;
10989 } 11045 }
10990 return [_dictionary isEqual:other->_dictionary]; 11046 GPBStringEnumDictionary *otherDictionary = other;
11047 return [_dictionary isEqual:otherDictionary->_dictionary];
10991 } 11048 }
10992 11049
10993 - (NSUInteger)hash { 11050 - (NSUInteger)hash {
10994 return _dictionary.count; 11051 return _dictionary.count;
10995 } 11052 }
10996 11053
10997 - (NSString *)description { 11054 - (NSString *)description {
10998 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary]; 11055 return [NSString stringWithFormat:@"<%@ %p> { %@ }", [self class], self, _dict ionary];
10999 } 11056 }
11000 11057
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
11071 [_dictionary setObject:@(value->valueEnum) forKey:key->valueString]; 11128 [_dictionary setObject:@(value->valueEnum) forKey:key->valueString];
11072 } 11129 }
11073 11130
11074 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 11131 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
11075 [self enumerateKeysAndRawValuesUsingBlock:^(NSString *key, int32_t value, BOOL *stop) { 11132 [self enumerateKeysAndRawValuesUsingBlock:^(NSString *key, int32_t value, BOOL *stop) {
11076 #pragma unused(stop) 11133 #pragma unused(stop)
11077 block(key, @(value)); 11134 block(key, @(value));
11078 }]; 11135 }];
11079 } 11136 }
11080 11137
11081 - (BOOL)valueForKey:(NSString *)key value:(int32_t *)value { 11138 - (BOOL)getEnum:(int32_t *)value forKey:(NSString *)key {
11082 NSNumber *wrapped = [_dictionary objectForKey:key]; 11139 NSNumber *wrapped = [_dictionary objectForKey:key];
11083 if (wrapped && value) { 11140 if (wrapped && value) {
11084 int32_t result = [wrapped intValue]; 11141 int32_t result = [wrapped intValue];
11085 if (!_validationFunc(result)) { 11142 if (!_validationFunc(result)) {
11086 result = kGPBUnrecognizedEnumeratorValue; 11143 result = kGPBUnrecognizedEnumeratorValue;
11087 } 11144 }
11088 *value = result; 11145 *value = result;
11089 } 11146 }
11090 return (wrapped != NULL); 11147 return (wrapped != NULL);
11091 } 11148 }
11092 11149
11093 - (BOOL)valueForKey:(NSString *)key rawValue:(int32_t *)rawValue { 11150 - (BOOL)getRawValue:(int32_t *)rawValue forKey:(NSString *)key {
11094 NSNumber *wrapped = [_dictionary objectForKey:key]; 11151 NSNumber *wrapped = [_dictionary objectForKey:key];
11095 if (wrapped && rawValue) { 11152 if (wrapped && rawValue) {
11096 *rawValue = [wrapped intValue]; 11153 *rawValue = [wrapped intValue];
11097 } 11154 }
11098 return (wrapped != NULL); 11155 return (wrapped != NULL);
11099 } 11156 }
11100 11157
11101 - (void)enumerateKeysAndValuesUsingBlock: 11158 - (void)enumerateKeysAndEnumsUsingBlock:
11102 (void (^)(NSString *key, int32_t value, BOOL *stop))block { 11159 (void (^)(NSString *key, int32_t value, BOOL *stop))block {
11103 GPBEnumValidationFunc func = _validationFunc; 11160 GPBEnumValidationFunc func = _validationFunc;
11104 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey, 11161 [_dictionary enumerateKeysAndObjectsUsingBlock:^(NSString *aKey,
11105 NSNumber *aValue, 11162 NSNumber *aValue,
11106 BOOL *stop) { 11163 BOOL *stop) {
11107 int32_t unwrapped = [aValue intValue]; 11164 int32_t unwrapped = [aValue intValue];
11108 if (!func(unwrapped)) { 11165 if (!func(unwrapped)) {
11109 unwrapped = kGPBUnrecognizedEnumeratorValue; 11166 unwrapped = kGPBUnrecognizedEnumeratorValue;
11110 } 11167 }
11111 block(aKey, unwrapped, stop); 11168 block(aKey, unwrapped, stop);
(...skipping 13 matching lines...) Expand all
11125 if (!key) { 11182 if (!key) {
11126 [NSException raise:NSInvalidArgumentException 11183 [NSException raise:NSInvalidArgumentException
11127 format:@"Attempting to add nil key to a Dictionary"]; 11184 format:@"Attempting to add nil key to a Dictionary"];
11128 } 11185 }
11129 [_dictionary setObject:@(value) forKey:key]; 11186 [_dictionary setObject:@(value) forKey:key];
11130 if (_autocreator) { 11187 if (_autocreator) {
11131 GPBAutocreatedDictionaryModified(_autocreator, self); 11188 GPBAutocreatedDictionaryModified(_autocreator, self);
11132 } 11189 }
11133 } 11190 }
11134 11191
11135 - (void)removeValueForKey:(NSString *)aKey { 11192 - (void)removeEnumForKey:(NSString *)aKey {
11136 [_dictionary removeObjectForKey:aKey]; 11193 [_dictionary removeObjectForKey:aKey];
11137 } 11194 }
11138 11195
11139 - (void)removeAll { 11196 - (void)removeAll {
11140 [_dictionary removeAllObjects]; 11197 [_dictionary removeAllObjects];
11141 } 11198 }
11142 11199
11143 - (void)setValue:(int32_t)value forKey:(NSString *)key { 11200 - (void)setEnum:(int32_t)value forKey:(NSString *)key {
11144 if (!key) { 11201 if (!key) {
11145 [NSException raise:NSInvalidArgumentException 11202 [NSException raise:NSInvalidArgumentException
11146 format:@"Attempting to add nil key to a Dictionary"]; 11203 format:@"Attempting to add nil key to a Dictionary"];
11147 } 11204 }
11148 if (!_validationFunc(value)) { 11205 if (!_validationFunc(value)) {
11149 [NSException raise:NSInvalidArgumentException 11206 [NSException raise:NSInvalidArgumentException
11150 format:@"GPBStringEnumDictionary: Attempt to set an unknown enum value (%d)", 11207 format:@"GPBStringEnumDictionary: Attempt to set an unknown enum value (%d)",
11151 value]; 11208 value];
11152 } 11209 }
11153 11210
(...skipping 13 matching lines...) Expand all
11167 11224
11168 #pragma mark - Bool -> UInt32 11225 #pragma mark - Bool -> UInt32
11169 11226
11170 @implementation GPBBoolUInt32Dictionary { 11227 @implementation GPBBoolUInt32Dictionary {
11171 @package 11228 @package
11172 uint32_t _values[2]; 11229 uint32_t _values[2];
11173 BOOL _valueSet[2]; 11230 BOOL _valueSet[2];
11174 } 11231 }
11175 11232
11176 + (instancetype)dictionary { 11233 + (instancetype)dictionary {
11177 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 11234 return [[[self alloc] initWithUInt32s:NULL forKeys:NULL count:0] autorelease];
11178 } 11235 }
11179 11236
11180 + (instancetype)dictionaryWithValue:(uint32_t)value 11237 + (instancetype)dictionaryWithUInt32:(uint32_t)value
11181 forKey:(BOOL)key { 11238 forKey:(BOOL)key {
11182 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 11239 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
11183 // on to get the type correct. 11240 // on to get the type correct.
11184 return [[(GPBBoolUInt32Dictionary*)[self alloc] initWithValues:&value 11241 return [[(GPBBoolUInt32Dictionary*)[self alloc] initWithUInt32s:&value
11185 forKeys:&key 11242 forKeys:&key
11186 count:1] autorelease] ; 11243 count:1] autorelease ];
11187 } 11244 }
11188 11245
11189 + (instancetype)dictionaryWithValues:(const uint32_t [])values 11246 + (instancetype)dictionaryWithUInt32s:(const uint32_t [])values
11190 forKeys:(const BOOL [])keys 11247 forKeys:(const BOOL [])keys
11191 count:(NSUInteger)count { 11248 count:(NSUInteger)count {
11192 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 11249 // Cast is needed so the compiler knows what class we are invoking initWithUIn t32s:forKeys:count:
11193 // on to get the type correct. 11250 // on to get the type correct.
11194 return [[(GPBBoolUInt32Dictionary*)[self alloc] initWithValues:values 11251 return [[(GPBBoolUInt32Dictionary*)[self alloc] initWithUInt32s:values
11195 forKeys:keys 11252 forKeys:keys
11196 count:count] autorele ase]; 11253 count:count] autorel ease];
11197 } 11254 }
11198 11255
11199 + (instancetype)dictionaryWithDictionary:(GPBBoolUInt32Dictionary *)dictionary { 11256 + (instancetype)dictionaryWithDictionary:(GPBBoolUInt32Dictionary *)dictionary {
11200 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 11257 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
11201 // on to get the type correct. 11258 // on to get the type correct.
11202 return [[(GPBBoolUInt32Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 11259 return [[(GPBBoolUInt32Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
11203 } 11260 }
11204 11261
11205 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 11262 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
11206 return [[[self alloc] initWithCapacity:numItems] autorelease]; 11263 return [[[self alloc] initWithCapacity:numItems] autorelease];
11207 } 11264 }
11208 11265
11209 - (instancetype)init { 11266 - (instancetype)init {
11210 return [self initWithValues:NULL forKeys:NULL count:0]; 11267 return [self initWithUInt32s:NULL forKeys:NULL count:0];
11211 } 11268 }
11212 11269
11213 - (instancetype)initWithValues:(const uint32_t [])values 11270 - (instancetype)initWithUInt32s:(const uint32_t [])values
11214 forKeys:(const BOOL [])keys 11271 forKeys:(const BOOL [])keys
11215 count:(NSUInteger)count { 11272 count:(NSUInteger)count {
11216 self = [super init]; 11273 self = [super init];
11217 if (self) { 11274 if (self) {
11218 for (NSUInteger i = 0; i < count; ++i) { 11275 for (NSUInteger i = 0; i < count; ++i) {
11219 int idx = keys[i] ? 1 : 0; 11276 int idx = keys[i] ? 1 : 0;
11220 _values[idx] = values[i]; 11277 _values[idx] = values[i];
11221 _valueSet[idx] = YES; 11278 _valueSet[idx] = YES;
11222 } 11279 }
11223 } 11280 }
11224 return self; 11281 return self;
11225 } 11282 }
11226 11283
11227 - (instancetype)initWithDictionary:(GPBBoolUInt32Dictionary *)dictionary { 11284 - (instancetype)initWithDictionary:(GPBBoolUInt32Dictionary *)dictionary {
11228 self = [self initWithValues:NULL forKeys:NULL count:0]; 11285 self = [self initWithUInt32s:NULL forKeys:NULL count:0];
11229 if (self) { 11286 if (self) {
11230 if (dictionary) { 11287 if (dictionary) {
11231 for (int i = 0; i < 2; ++i) { 11288 for (int i = 0; i < 2; ++i) {
11232 if (dictionary->_valueSet[i]) { 11289 if (dictionary->_valueSet[i]) {
11233 _values[i] = dictionary->_values[i]; 11290 _values[i] = dictionary->_values[i];
11234 _valueSet[i] = YES; 11291 _valueSet[i] = YES;
11235 } 11292 }
11236 } 11293 }
11237 } 11294 }
11238 } 11295 }
11239 return self; 11296 return self;
11240 } 11297 }
11241 11298
11242 - (instancetype)initWithCapacity:(NSUInteger)numItems { 11299 - (instancetype)initWithCapacity:(NSUInteger)numItems {
11243 #pragma unused(numItems) 11300 #pragma unused(numItems)
11244 return [self initWithValues:NULL forKeys:NULL count:0]; 11301 return [self initWithUInt32s:NULL forKeys:NULL count:0];
11245 } 11302 }
11246 11303
11247 #if !defined(NS_BLOCK_ASSERTIONS) 11304 #if !defined(NS_BLOCK_ASSERTIONS)
11248 - (void)dealloc { 11305 - (void)dealloc {
11249 NSAssert(!_autocreator, 11306 NSAssert(!_autocreator,
11250 @"%@: Autocreator must be cleared before release, autocreator: %@", 11307 @"%@: Autocreator must be cleared before release, autocreator: %@",
11251 [self class], _autocreator); 11308 [self class], _autocreator);
11252 [super dealloc]; 11309 [super dealloc];
11253 } 11310 }
11254 #endif // !defined(NS_BLOCK_ASSERTIONS) 11311 #endif // !defined(NS_BLOCK_ASSERTIONS)
11255 11312
11256 - (instancetype)copyWithZone:(NSZone *)zone { 11313 - (instancetype)copyWithZone:(NSZone *)zone {
11257 return [[GPBBoolUInt32Dictionary allocWithZone:zone] initWithDictionary:self]; 11314 return [[GPBBoolUInt32Dictionary allocWithZone:zone] initWithDictionary:self];
11258 } 11315 }
11259 11316
11260 - (BOOL)isEqual:(GPBBoolUInt32Dictionary *)other { 11317 - (BOOL)isEqual:(id)other {
11261 if (self == other) { 11318 if (self == other) {
11262 return YES; 11319 return YES;
11263 } 11320 }
11264 if (![other isKindOfClass:[GPBBoolUInt32Dictionary class]]) { 11321 if (![other isKindOfClass:[GPBBoolUInt32Dictionary class]]) {
11265 return NO; 11322 return NO;
11266 } 11323 }
11267 if ((_valueSet[0] != other->_valueSet[0]) || 11324 GPBBoolUInt32Dictionary *otherDictionary = other;
11268 (_valueSet[1] != other->_valueSet[1])) { 11325 if ((_valueSet[0] != otherDictionary->_valueSet[0]) ||
11326 (_valueSet[1] != otherDictionary->_valueSet[1])) {
11269 return NO; 11327 return NO;
11270 } 11328 }
11271 if ((_valueSet[0] && (_values[0] != other->_values[0])) || 11329 if ((_valueSet[0] && (_values[0] != otherDictionary->_values[0])) ||
11272 (_valueSet[1] && (_values[1] != other->_values[1]))) { 11330 (_valueSet[1] && (_values[1] != otherDictionary->_values[1]))) {
11273 return NO; 11331 return NO;
11274 } 11332 }
11275 return YES; 11333 return YES;
11276 } 11334 }
11277 11335
11278 - (NSUInteger)hash { 11336 - (NSUInteger)hash {
11279 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 11337 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
11280 } 11338 }
11281 11339
11282 - (NSString *)description { 11340 - (NSString *)description {
11283 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self]; 11341 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self];
11284 if (_valueSet[0]) { 11342 if (_valueSet[0]) {
11285 [result appendFormat:@"NO: %u", _values[0]]; 11343 [result appendFormat:@"NO: %u", _values[0]];
11286 } 11344 }
11287 if (_valueSet[1]) { 11345 if (_valueSet[1]) {
11288 [result appendFormat:@"YES: %u", _values[1]]; 11346 [result appendFormat:@"YES: %u", _values[1]];
11289 } 11347 }
11290 [result appendString:@" }"]; 11348 [result appendString:@" }"];
11291 return result; 11349 return result;
11292 } 11350 }
11293 11351
11294 - (NSUInteger)count { 11352 - (NSUInteger)count {
11295 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 11353 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
11296 } 11354 }
11297 11355
11298 - (BOOL)valueForKey:(BOOL)key value:(uint32_t *)value { 11356 - (BOOL)getUInt32:(uint32_t *)value forKey:(BOOL)key {
11299 int idx = (key ? 1 : 0); 11357 int idx = (key ? 1 : 0);
11300 if (_valueSet[idx]) { 11358 if (_valueSet[idx]) {
11301 if (value) { 11359 if (value) {
11302 *value = _values[idx]; 11360 *value = _values[idx];
11303 } 11361 }
11304 return YES; 11362 return YES;
11305 } 11363 }
11306 return NO; 11364 return NO;
11307 } 11365 }
11308 11366
11309 - (void)setGPBGenericValue:(GPBGenericValue *)value 11367 - (void)setGPBGenericValue:(GPBGenericValue *)value
11310 forGPBGenericValueKey:(GPBGenericValue *)key { 11368 forGPBGenericValueKey:(GPBGenericValue *)key {
11311 int idx = (key->valueBool ? 1 : 0); 11369 int idx = (key->valueBool ? 1 : 0);
11312 _values[idx] = value->valueUInt32; 11370 _values[idx] = value->valueUInt32;
11313 _valueSet[idx] = YES; 11371 _valueSet[idx] = YES;
11314 } 11372 }
11315 11373
11316 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 11374 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
11317 if (_valueSet[0]) { 11375 if (_valueSet[0]) {
11318 block(@"false", [NSString stringWithFormat:@"%u", _values[0]]); 11376 block(@"false", [NSString stringWithFormat:@"%u", _values[0]]);
11319 } 11377 }
11320 if (_valueSet[1]) { 11378 if (_valueSet[1]) {
11321 block(@"true", [NSString stringWithFormat:@"%u", _values[1]]); 11379 block(@"true", [NSString stringWithFormat:@"%u", _values[1]]);
11322 } 11380 }
11323 } 11381 }
11324 11382
11325 - (void)enumerateKeysAndValuesUsingBlock: 11383 - (void)enumerateKeysAndUInt32sUsingBlock:
11326 (void (^)(BOOL key, uint32_t value, BOOL *stop))block { 11384 (void (^)(BOOL key, uint32_t value, BOOL *stop))block {
11327 BOOL stop = NO; 11385 BOOL stop = NO;
11328 if (_valueSet[0]) { 11386 if (_valueSet[0]) {
11329 block(NO, _values[0], &stop); 11387 block(NO, _values[0], &stop);
11330 } 11388 }
11331 if (!stop && _valueSet[1]) { 11389 if (!stop && _valueSet[1]) {
11332 block(YES, _values[1], &stop); 11390 block(YES, _values[1], &stop);
11333 } 11391 }
11334 } 11392 }
11335 11393
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
11376 _valueSet[i] = YES; 11434 _valueSet[i] = YES;
11377 _values[i] = otherDictionary->_values[i]; 11435 _values[i] = otherDictionary->_values[i];
11378 } 11436 }
11379 } 11437 }
11380 if (_autocreator) { 11438 if (_autocreator) {
11381 GPBAutocreatedDictionaryModified(_autocreator, self); 11439 GPBAutocreatedDictionaryModified(_autocreator, self);
11382 } 11440 }
11383 } 11441 }
11384 } 11442 }
11385 11443
11386 - (void)setValue:(uint32_t)value forKey:(BOOL)key { 11444 - (void)setUInt32:(uint32_t)value forKey:(BOOL)key {
11387 int idx = (key ? 1 : 0); 11445 int idx = (key ? 1 : 0);
11388 _values[idx] = value; 11446 _values[idx] = value;
11389 _valueSet[idx] = YES; 11447 _valueSet[idx] = YES;
11390 if (_autocreator) { 11448 if (_autocreator) {
11391 GPBAutocreatedDictionaryModified(_autocreator, self); 11449 GPBAutocreatedDictionaryModified(_autocreator, self);
11392 } 11450 }
11393 } 11451 }
11394 11452
11395 - (void)removeValueForKey:(BOOL)aKey { 11453 - (void)removeUInt32ForKey:(BOOL)aKey {
11396 _valueSet[aKey ? 1 : 0] = NO; 11454 _valueSet[aKey ? 1 : 0] = NO;
11397 } 11455 }
11398 11456
11399 - (void)removeAll { 11457 - (void)removeAll {
11400 _valueSet[0] = NO; 11458 _valueSet[0] = NO;
11401 _valueSet[1] = NO; 11459 _valueSet[1] = NO;
11402 } 11460 }
11403 11461
11404 @end 11462 @end
11405 11463
11406 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Int32, int32_t) 11464 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Int32, int32_t)
11407 // This block of code is generated, do not edit it directly. 11465 // This block of code is generated, do not edit it directly.
11408 11466
11409 #pragma mark - Bool -> Int32 11467 #pragma mark - Bool -> Int32
11410 11468
11411 @implementation GPBBoolInt32Dictionary { 11469 @implementation GPBBoolInt32Dictionary {
11412 @package 11470 @package
11413 int32_t _values[2]; 11471 int32_t _values[2];
11414 BOOL _valueSet[2]; 11472 BOOL _valueSet[2];
11415 } 11473 }
11416 11474
11417 + (instancetype)dictionary { 11475 + (instancetype)dictionary {
11418 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 11476 return [[[self alloc] initWithInt32s:NULL forKeys:NULL count:0] autorelease];
11419 } 11477 }
11420 11478
11421 + (instancetype)dictionaryWithValue:(int32_t)value 11479 + (instancetype)dictionaryWithInt32:(int32_t)value
11422 forKey:(BOOL)key { 11480 forKey:(BOOL)key {
11423 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 11481 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
11424 // on to get the type correct. 11482 // on to get the type correct.
11425 return [[(GPBBoolInt32Dictionary*)[self alloc] initWithValues:&value 11483 return [[(GPBBoolInt32Dictionary*)[self alloc] initWithInt32s:&value
11426 forKeys:&key 11484 forKeys:&key
11427 count:1] autorelease]; 11485 count:1] autorelease];
11428 } 11486 }
11429 11487
11430 + (instancetype)dictionaryWithValues:(const int32_t [])values 11488 + (instancetype)dictionaryWithInt32s:(const int32_t [])values
11431 forKeys:(const BOOL [])keys 11489 forKeys:(const BOOL [])keys
11432 count:(NSUInteger)count { 11490 count:(NSUInteger)count {
11433 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 11491 // Cast is needed so the compiler knows what class we are invoking initWithInt 32s:forKeys:count:
11434 // on to get the type correct. 11492 // on to get the type correct.
11435 return [[(GPBBoolInt32Dictionary*)[self alloc] initWithValues:values 11493 return [[(GPBBoolInt32Dictionary*)[self alloc] initWithInt32s:values
11436 forKeys:keys 11494 forKeys:keys
11437 count:count] autorelea se]; 11495 count:count] autorelea se];
11438 } 11496 }
11439 11497
11440 + (instancetype)dictionaryWithDictionary:(GPBBoolInt32Dictionary *)dictionary { 11498 + (instancetype)dictionaryWithDictionary:(GPBBoolInt32Dictionary *)dictionary {
11441 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 11499 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
11442 // on to get the type correct. 11500 // on to get the type correct.
11443 return [[(GPBBoolInt32Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 11501 return [[(GPBBoolInt32Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
11444 } 11502 }
11445 11503
11446 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 11504 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
11447 return [[[self alloc] initWithCapacity:numItems] autorelease]; 11505 return [[[self alloc] initWithCapacity:numItems] autorelease];
11448 } 11506 }
11449 11507
11450 - (instancetype)init { 11508 - (instancetype)init {
11451 return [self initWithValues:NULL forKeys:NULL count:0]; 11509 return [self initWithInt32s:NULL forKeys:NULL count:0];
11452 } 11510 }
11453 11511
11454 - (instancetype)initWithValues:(const int32_t [])values 11512 - (instancetype)initWithInt32s:(const int32_t [])values
11455 forKeys:(const BOOL [])keys 11513 forKeys:(const BOOL [])keys
11456 count:(NSUInteger)count { 11514 count:(NSUInteger)count {
11457 self = [super init]; 11515 self = [super init];
11458 if (self) { 11516 if (self) {
11459 for (NSUInteger i = 0; i < count; ++i) { 11517 for (NSUInteger i = 0; i < count; ++i) {
11460 int idx = keys[i] ? 1 : 0; 11518 int idx = keys[i] ? 1 : 0;
11461 _values[idx] = values[i]; 11519 _values[idx] = values[i];
11462 _valueSet[idx] = YES; 11520 _valueSet[idx] = YES;
11463 } 11521 }
11464 } 11522 }
11465 return self; 11523 return self;
11466 } 11524 }
11467 11525
11468 - (instancetype)initWithDictionary:(GPBBoolInt32Dictionary *)dictionary { 11526 - (instancetype)initWithDictionary:(GPBBoolInt32Dictionary *)dictionary {
11469 self = [self initWithValues:NULL forKeys:NULL count:0]; 11527 self = [self initWithInt32s:NULL forKeys:NULL count:0];
11470 if (self) { 11528 if (self) {
11471 if (dictionary) { 11529 if (dictionary) {
11472 for (int i = 0; i < 2; ++i) { 11530 for (int i = 0; i < 2; ++i) {
11473 if (dictionary->_valueSet[i]) { 11531 if (dictionary->_valueSet[i]) {
11474 _values[i] = dictionary->_values[i]; 11532 _values[i] = dictionary->_values[i];
11475 _valueSet[i] = YES; 11533 _valueSet[i] = YES;
11476 } 11534 }
11477 } 11535 }
11478 } 11536 }
11479 } 11537 }
11480 return self; 11538 return self;
11481 } 11539 }
11482 11540
11483 - (instancetype)initWithCapacity:(NSUInteger)numItems { 11541 - (instancetype)initWithCapacity:(NSUInteger)numItems {
11484 #pragma unused(numItems) 11542 #pragma unused(numItems)
11485 return [self initWithValues:NULL forKeys:NULL count:0]; 11543 return [self initWithInt32s:NULL forKeys:NULL count:0];
11486 } 11544 }
11487 11545
11488 #if !defined(NS_BLOCK_ASSERTIONS) 11546 #if !defined(NS_BLOCK_ASSERTIONS)
11489 - (void)dealloc { 11547 - (void)dealloc {
11490 NSAssert(!_autocreator, 11548 NSAssert(!_autocreator,
11491 @"%@: Autocreator must be cleared before release, autocreator: %@", 11549 @"%@: Autocreator must be cleared before release, autocreator: %@",
11492 [self class], _autocreator); 11550 [self class], _autocreator);
11493 [super dealloc]; 11551 [super dealloc];
11494 } 11552 }
11495 #endif // !defined(NS_BLOCK_ASSERTIONS) 11553 #endif // !defined(NS_BLOCK_ASSERTIONS)
11496 11554
11497 - (instancetype)copyWithZone:(NSZone *)zone { 11555 - (instancetype)copyWithZone:(NSZone *)zone {
11498 return [[GPBBoolInt32Dictionary allocWithZone:zone] initWithDictionary:self]; 11556 return [[GPBBoolInt32Dictionary allocWithZone:zone] initWithDictionary:self];
11499 } 11557 }
11500 11558
11501 - (BOOL)isEqual:(GPBBoolInt32Dictionary *)other { 11559 - (BOOL)isEqual:(id)other {
11502 if (self == other) { 11560 if (self == other) {
11503 return YES; 11561 return YES;
11504 } 11562 }
11505 if (![other isKindOfClass:[GPBBoolInt32Dictionary class]]) { 11563 if (![other isKindOfClass:[GPBBoolInt32Dictionary class]]) {
11506 return NO; 11564 return NO;
11507 } 11565 }
11508 if ((_valueSet[0] != other->_valueSet[0]) || 11566 GPBBoolInt32Dictionary *otherDictionary = other;
11509 (_valueSet[1] != other->_valueSet[1])) { 11567 if ((_valueSet[0] != otherDictionary->_valueSet[0]) ||
11568 (_valueSet[1] != otherDictionary->_valueSet[1])) {
11510 return NO; 11569 return NO;
11511 } 11570 }
11512 if ((_valueSet[0] && (_values[0] != other->_values[0])) || 11571 if ((_valueSet[0] && (_values[0] != otherDictionary->_values[0])) ||
11513 (_valueSet[1] && (_values[1] != other->_values[1]))) { 11572 (_valueSet[1] && (_values[1] != otherDictionary->_values[1]))) {
11514 return NO; 11573 return NO;
11515 } 11574 }
11516 return YES; 11575 return YES;
11517 } 11576 }
11518 11577
11519 - (NSUInteger)hash { 11578 - (NSUInteger)hash {
11520 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 11579 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
11521 } 11580 }
11522 11581
11523 - (NSString *)description { 11582 - (NSString *)description {
11524 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self]; 11583 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self];
11525 if (_valueSet[0]) { 11584 if (_valueSet[0]) {
11526 [result appendFormat:@"NO: %d", _values[0]]; 11585 [result appendFormat:@"NO: %d", _values[0]];
11527 } 11586 }
11528 if (_valueSet[1]) { 11587 if (_valueSet[1]) {
11529 [result appendFormat:@"YES: %d", _values[1]]; 11588 [result appendFormat:@"YES: %d", _values[1]];
11530 } 11589 }
11531 [result appendString:@" }"]; 11590 [result appendString:@" }"];
11532 return result; 11591 return result;
11533 } 11592 }
11534 11593
11535 - (NSUInteger)count { 11594 - (NSUInteger)count {
11536 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 11595 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
11537 } 11596 }
11538 11597
11539 - (BOOL)valueForKey:(BOOL)key value:(int32_t *)value { 11598 - (BOOL)getInt32:(int32_t *)value forKey:(BOOL)key {
11540 int idx = (key ? 1 : 0); 11599 int idx = (key ? 1 : 0);
11541 if (_valueSet[idx]) { 11600 if (_valueSet[idx]) {
11542 if (value) { 11601 if (value) {
11543 *value = _values[idx]; 11602 *value = _values[idx];
11544 } 11603 }
11545 return YES; 11604 return YES;
11546 } 11605 }
11547 return NO; 11606 return NO;
11548 } 11607 }
11549 11608
11550 - (void)setGPBGenericValue:(GPBGenericValue *)value 11609 - (void)setGPBGenericValue:(GPBGenericValue *)value
11551 forGPBGenericValueKey:(GPBGenericValue *)key { 11610 forGPBGenericValueKey:(GPBGenericValue *)key {
11552 int idx = (key->valueBool ? 1 : 0); 11611 int idx = (key->valueBool ? 1 : 0);
11553 _values[idx] = value->valueInt32; 11612 _values[idx] = value->valueInt32;
11554 _valueSet[idx] = YES; 11613 _valueSet[idx] = YES;
11555 } 11614 }
11556 11615
11557 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 11616 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
11558 if (_valueSet[0]) { 11617 if (_valueSet[0]) {
11559 block(@"false", [NSString stringWithFormat:@"%d", _values[0]]); 11618 block(@"false", [NSString stringWithFormat:@"%d", _values[0]]);
11560 } 11619 }
11561 if (_valueSet[1]) { 11620 if (_valueSet[1]) {
11562 block(@"true", [NSString stringWithFormat:@"%d", _values[1]]); 11621 block(@"true", [NSString stringWithFormat:@"%d", _values[1]]);
11563 } 11622 }
11564 } 11623 }
11565 11624
11566 - (void)enumerateKeysAndValuesUsingBlock: 11625 - (void)enumerateKeysAndInt32sUsingBlock:
11567 (void (^)(BOOL key, int32_t value, BOOL *stop))block { 11626 (void (^)(BOOL key, int32_t value, BOOL *stop))block {
11568 BOOL stop = NO; 11627 BOOL stop = NO;
11569 if (_valueSet[0]) { 11628 if (_valueSet[0]) {
11570 block(NO, _values[0], &stop); 11629 block(NO, _values[0], &stop);
11571 } 11630 }
11572 if (!stop && _valueSet[1]) { 11631 if (!stop && _valueSet[1]) {
11573 block(YES, _values[1], &stop); 11632 block(YES, _values[1], &stop);
11574 } 11633 }
11575 } 11634 }
11576 11635
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
11617 _valueSet[i] = YES; 11676 _valueSet[i] = YES;
11618 _values[i] = otherDictionary->_values[i]; 11677 _values[i] = otherDictionary->_values[i];
11619 } 11678 }
11620 } 11679 }
11621 if (_autocreator) { 11680 if (_autocreator) {
11622 GPBAutocreatedDictionaryModified(_autocreator, self); 11681 GPBAutocreatedDictionaryModified(_autocreator, self);
11623 } 11682 }
11624 } 11683 }
11625 } 11684 }
11626 11685
11627 - (void)setValue:(int32_t)value forKey:(BOOL)key { 11686 - (void)setInt32:(int32_t)value forKey:(BOOL)key {
11628 int idx = (key ? 1 : 0); 11687 int idx = (key ? 1 : 0);
11629 _values[idx] = value; 11688 _values[idx] = value;
11630 _valueSet[idx] = YES; 11689 _valueSet[idx] = YES;
11631 if (_autocreator) { 11690 if (_autocreator) {
11632 GPBAutocreatedDictionaryModified(_autocreator, self); 11691 GPBAutocreatedDictionaryModified(_autocreator, self);
11633 } 11692 }
11634 } 11693 }
11635 11694
11636 - (void)removeValueForKey:(BOOL)aKey { 11695 - (void)removeInt32ForKey:(BOOL)aKey {
11637 _valueSet[aKey ? 1 : 0] = NO; 11696 _valueSet[aKey ? 1 : 0] = NO;
11638 } 11697 }
11639 11698
11640 - (void)removeAll { 11699 - (void)removeAll {
11641 _valueSet[0] = NO; 11700 _valueSet[0] = NO;
11642 _valueSet[1] = NO; 11701 _valueSet[1] = NO;
11643 } 11702 }
11644 11703
11645 @end 11704 @end
11646 11705
11647 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(UInt64, uint64_t) 11706 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(UInt64, uint64_t)
11648 // This block of code is generated, do not edit it directly. 11707 // This block of code is generated, do not edit it directly.
11649 11708
11650 #pragma mark - Bool -> UInt64 11709 #pragma mark - Bool -> UInt64
11651 11710
11652 @implementation GPBBoolUInt64Dictionary { 11711 @implementation GPBBoolUInt64Dictionary {
11653 @package 11712 @package
11654 uint64_t _values[2]; 11713 uint64_t _values[2];
11655 BOOL _valueSet[2]; 11714 BOOL _valueSet[2];
11656 } 11715 }
11657 11716
11658 + (instancetype)dictionary { 11717 + (instancetype)dictionary {
11659 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 11718 return [[[self alloc] initWithUInt64s:NULL forKeys:NULL count:0] autorelease];
11660 } 11719 }
11661 11720
11662 + (instancetype)dictionaryWithValue:(uint64_t)value 11721 + (instancetype)dictionaryWithUInt64:(uint64_t)value
11663 forKey:(BOOL)key { 11722 forKey:(BOOL)key {
11664 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 11723 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
11665 // on to get the type correct. 11724 // on to get the type correct.
11666 return [[(GPBBoolUInt64Dictionary*)[self alloc] initWithValues:&value 11725 return [[(GPBBoolUInt64Dictionary*)[self alloc] initWithUInt64s:&value
11667 forKeys:&key 11726 forKeys:&key
11668 count:1] autorelease] ; 11727 count:1] autorelease ];
11669 } 11728 }
11670 11729
11671 + (instancetype)dictionaryWithValues:(const uint64_t [])values 11730 + (instancetype)dictionaryWithUInt64s:(const uint64_t [])values
11672 forKeys:(const BOOL [])keys 11731 forKeys:(const BOOL [])keys
11673 count:(NSUInteger)count { 11732 count:(NSUInteger)count {
11674 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 11733 // Cast is needed so the compiler knows what class we are invoking initWithUIn t64s:forKeys:count:
11675 // on to get the type correct. 11734 // on to get the type correct.
11676 return [[(GPBBoolUInt64Dictionary*)[self alloc] initWithValues:values 11735 return [[(GPBBoolUInt64Dictionary*)[self alloc] initWithUInt64s:values
11677 forKeys:keys 11736 forKeys:keys
11678 count:count] autorele ase]; 11737 count:count] autorel ease];
11679 } 11738 }
11680 11739
11681 + (instancetype)dictionaryWithDictionary:(GPBBoolUInt64Dictionary *)dictionary { 11740 + (instancetype)dictionaryWithDictionary:(GPBBoolUInt64Dictionary *)dictionary {
11682 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 11741 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
11683 // on to get the type correct. 11742 // on to get the type correct.
11684 return [[(GPBBoolUInt64Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 11743 return [[(GPBBoolUInt64Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
11685 } 11744 }
11686 11745
11687 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 11746 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
11688 return [[[self alloc] initWithCapacity:numItems] autorelease]; 11747 return [[[self alloc] initWithCapacity:numItems] autorelease];
11689 } 11748 }
11690 11749
11691 - (instancetype)init { 11750 - (instancetype)init {
11692 return [self initWithValues:NULL forKeys:NULL count:0]; 11751 return [self initWithUInt64s:NULL forKeys:NULL count:0];
11693 } 11752 }
11694 11753
11695 - (instancetype)initWithValues:(const uint64_t [])values 11754 - (instancetype)initWithUInt64s:(const uint64_t [])values
11696 forKeys:(const BOOL [])keys 11755 forKeys:(const BOOL [])keys
11697 count:(NSUInteger)count { 11756 count:(NSUInteger)count {
11698 self = [super init]; 11757 self = [super init];
11699 if (self) { 11758 if (self) {
11700 for (NSUInteger i = 0; i < count; ++i) { 11759 for (NSUInteger i = 0; i < count; ++i) {
11701 int idx = keys[i] ? 1 : 0; 11760 int idx = keys[i] ? 1 : 0;
11702 _values[idx] = values[i]; 11761 _values[idx] = values[i];
11703 _valueSet[idx] = YES; 11762 _valueSet[idx] = YES;
11704 } 11763 }
11705 } 11764 }
11706 return self; 11765 return self;
11707 } 11766 }
11708 11767
11709 - (instancetype)initWithDictionary:(GPBBoolUInt64Dictionary *)dictionary { 11768 - (instancetype)initWithDictionary:(GPBBoolUInt64Dictionary *)dictionary {
11710 self = [self initWithValues:NULL forKeys:NULL count:0]; 11769 self = [self initWithUInt64s:NULL forKeys:NULL count:0];
11711 if (self) { 11770 if (self) {
11712 if (dictionary) { 11771 if (dictionary) {
11713 for (int i = 0; i < 2; ++i) { 11772 for (int i = 0; i < 2; ++i) {
11714 if (dictionary->_valueSet[i]) { 11773 if (dictionary->_valueSet[i]) {
11715 _values[i] = dictionary->_values[i]; 11774 _values[i] = dictionary->_values[i];
11716 _valueSet[i] = YES; 11775 _valueSet[i] = YES;
11717 } 11776 }
11718 } 11777 }
11719 } 11778 }
11720 } 11779 }
11721 return self; 11780 return self;
11722 } 11781 }
11723 11782
11724 - (instancetype)initWithCapacity:(NSUInteger)numItems { 11783 - (instancetype)initWithCapacity:(NSUInteger)numItems {
11725 #pragma unused(numItems) 11784 #pragma unused(numItems)
11726 return [self initWithValues:NULL forKeys:NULL count:0]; 11785 return [self initWithUInt64s:NULL forKeys:NULL count:0];
11727 } 11786 }
11728 11787
11729 #if !defined(NS_BLOCK_ASSERTIONS) 11788 #if !defined(NS_BLOCK_ASSERTIONS)
11730 - (void)dealloc { 11789 - (void)dealloc {
11731 NSAssert(!_autocreator, 11790 NSAssert(!_autocreator,
11732 @"%@: Autocreator must be cleared before release, autocreator: %@", 11791 @"%@: Autocreator must be cleared before release, autocreator: %@",
11733 [self class], _autocreator); 11792 [self class], _autocreator);
11734 [super dealloc]; 11793 [super dealloc];
11735 } 11794 }
11736 #endif // !defined(NS_BLOCK_ASSERTIONS) 11795 #endif // !defined(NS_BLOCK_ASSERTIONS)
11737 11796
11738 - (instancetype)copyWithZone:(NSZone *)zone { 11797 - (instancetype)copyWithZone:(NSZone *)zone {
11739 return [[GPBBoolUInt64Dictionary allocWithZone:zone] initWithDictionary:self]; 11798 return [[GPBBoolUInt64Dictionary allocWithZone:zone] initWithDictionary:self];
11740 } 11799 }
11741 11800
11742 - (BOOL)isEqual:(GPBBoolUInt64Dictionary *)other { 11801 - (BOOL)isEqual:(id)other {
11743 if (self == other) { 11802 if (self == other) {
11744 return YES; 11803 return YES;
11745 } 11804 }
11746 if (![other isKindOfClass:[GPBBoolUInt64Dictionary class]]) { 11805 if (![other isKindOfClass:[GPBBoolUInt64Dictionary class]]) {
11747 return NO; 11806 return NO;
11748 } 11807 }
11749 if ((_valueSet[0] != other->_valueSet[0]) || 11808 GPBBoolUInt64Dictionary *otherDictionary = other;
11750 (_valueSet[1] != other->_valueSet[1])) { 11809 if ((_valueSet[0] != otherDictionary->_valueSet[0]) ||
11810 (_valueSet[1] != otherDictionary->_valueSet[1])) {
11751 return NO; 11811 return NO;
11752 } 11812 }
11753 if ((_valueSet[0] && (_values[0] != other->_values[0])) || 11813 if ((_valueSet[0] && (_values[0] != otherDictionary->_values[0])) ||
11754 (_valueSet[1] && (_values[1] != other->_values[1]))) { 11814 (_valueSet[1] && (_values[1] != otherDictionary->_values[1]))) {
11755 return NO; 11815 return NO;
11756 } 11816 }
11757 return YES; 11817 return YES;
11758 } 11818 }
11759 11819
11760 - (NSUInteger)hash { 11820 - (NSUInteger)hash {
11761 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 11821 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
11762 } 11822 }
11763 11823
11764 - (NSString *)description { 11824 - (NSString *)description {
11765 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self]; 11825 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self];
11766 if (_valueSet[0]) { 11826 if (_valueSet[0]) {
11767 [result appendFormat:@"NO: %llu", _values[0]]; 11827 [result appendFormat:@"NO: %llu", _values[0]];
11768 } 11828 }
11769 if (_valueSet[1]) { 11829 if (_valueSet[1]) {
11770 [result appendFormat:@"YES: %llu", _values[1]]; 11830 [result appendFormat:@"YES: %llu", _values[1]];
11771 } 11831 }
11772 [result appendString:@" }"]; 11832 [result appendString:@" }"];
11773 return result; 11833 return result;
11774 } 11834 }
11775 11835
11776 - (NSUInteger)count { 11836 - (NSUInteger)count {
11777 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 11837 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
11778 } 11838 }
11779 11839
11780 - (BOOL)valueForKey:(BOOL)key value:(uint64_t *)value { 11840 - (BOOL)getUInt64:(uint64_t *)value forKey:(BOOL)key {
11781 int idx = (key ? 1 : 0); 11841 int idx = (key ? 1 : 0);
11782 if (_valueSet[idx]) { 11842 if (_valueSet[idx]) {
11783 if (value) { 11843 if (value) {
11784 *value = _values[idx]; 11844 *value = _values[idx];
11785 } 11845 }
11786 return YES; 11846 return YES;
11787 } 11847 }
11788 return NO; 11848 return NO;
11789 } 11849 }
11790 11850
11791 - (void)setGPBGenericValue:(GPBGenericValue *)value 11851 - (void)setGPBGenericValue:(GPBGenericValue *)value
11792 forGPBGenericValueKey:(GPBGenericValue *)key { 11852 forGPBGenericValueKey:(GPBGenericValue *)key {
11793 int idx = (key->valueBool ? 1 : 0); 11853 int idx = (key->valueBool ? 1 : 0);
11794 _values[idx] = value->valueUInt64; 11854 _values[idx] = value->valueUInt64;
11795 _valueSet[idx] = YES; 11855 _valueSet[idx] = YES;
11796 } 11856 }
11797 11857
11798 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 11858 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
11799 if (_valueSet[0]) { 11859 if (_valueSet[0]) {
11800 block(@"false", [NSString stringWithFormat:@"%llu", _values[0]]); 11860 block(@"false", [NSString stringWithFormat:@"%llu", _values[0]]);
11801 } 11861 }
11802 if (_valueSet[1]) { 11862 if (_valueSet[1]) {
11803 block(@"true", [NSString stringWithFormat:@"%llu", _values[1]]); 11863 block(@"true", [NSString stringWithFormat:@"%llu", _values[1]]);
11804 } 11864 }
11805 } 11865 }
11806 11866
11807 - (void)enumerateKeysAndValuesUsingBlock: 11867 - (void)enumerateKeysAndUInt64sUsingBlock:
11808 (void (^)(BOOL key, uint64_t value, BOOL *stop))block { 11868 (void (^)(BOOL key, uint64_t value, BOOL *stop))block {
11809 BOOL stop = NO; 11869 BOOL stop = NO;
11810 if (_valueSet[0]) { 11870 if (_valueSet[0]) {
11811 block(NO, _values[0], &stop); 11871 block(NO, _values[0], &stop);
11812 } 11872 }
11813 if (!stop && _valueSet[1]) { 11873 if (!stop && _valueSet[1]) {
11814 block(YES, _values[1], &stop); 11874 block(YES, _values[1], &stop);
11815 } 11875 }
11816 } 11876 }
11817 11877
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
11858 _valueSet[i] = YES; 11918 _valueSet[i] = YES;
11859 _values[i] = otherDictionary->_values[i]; 11919 _values[i] = otherDictionary->_values[i];
11860 } 11920 }
11861 } 11921 }
11862 if (_autocreator) { 11922 if (_autocreator) {
11863 GPBAutocreatedDictionaryModified(_autocreator, self); 11923 GPBAutocreatedDictionaryModified(_autocreator, self);
11864 } 11924 }
11865 } 11925 }
11866 } 11926 }
11867 11927
11868 - (void)setValue:(uint64_t)value forKey:(BOOL)key { 11928 - (void)setUInt64:(uint64_t)value forKey:(BOOL)key {
11869 int idx = (key ? 1 : 0); 11929 int idx = (key ? 1 : 0);
11870 _values[idx] = value; 11930 _values[idx] = value;
11871 _valueSet[idx] = YES; 11931 _valueSet[idx] = YES;
11872 if (_autocreator) { 11932 if (_autocreator) {
11873 GPBAutocreatedDictionaryModified(_autocreator, self); 11933 GPBAutocreatedDictionaryModified(_autocreator, self);
11874 } 11934 }
11875 } 11935 }
11876 11936
11877 - (void)removeValueForKey:(BOOL)aKey { 11937 - (void)removeUInt64ForKey:(BOOL)aKey {
11878 _valueSet[aKey ? 1 : 0] = NO; 11938 _valueSet[aKey ? 1 : 0] = NO;
11879 } 11939 }
11880 11940
11881 - (void)removeAll { 11941 - (void)removeAll {
11882 _valueSet[0] = NO; 11942 _valueSet[0] = NO;
11883 _valueSet[1] = NO; 11943 _valueSet[1] = NO;
11884 } 11944 }
11885 11945
11886 @end 11946 @end
11887 11947
11888 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Int64, int64_t) 11948 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Int64, int64_t)
11889 // This block of code is generated, do not edit it directly. 11949 // This block of code is generated, do not edit it directly.
11890 11950
11891 #pragma mark - Bool -> Int64 11951 #pragma mark - Bool -> Int64
11892 11952
11893 @implementation GPBBoolInt64Dictionary { 11953 @implementation GPBBoolInt64Dictionary {
11894 @package 11954 @package
11895 int64_t _values[2]; 11955 int64_t _values[2];
11896 BOOL _valueSet[2]; 11956 BOOL _valueSet[2];
11897 } 11957 }
11898 11958
11899 + (instancetype)dictionary { 11959 + (instancetype)dictionary {
11900 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 11960 return [[[self alloc] initWithInt64s:NULL forKeys:NULL count:0] autorelease];
11901 } 11961 }
11902 11962
11903 + (instancetype)dictionaryWithValue:(int64_t)value 11963 + (instancetype)dictionaryWithInt64:(int64_t)value
11904 forKey:(BOOL)key { 11964 forKey:(BOOL)key {
11905 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 11965 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
11906 // on to get the type correct. 11966 // on to get the type correct.
11907 return [[(GPBBoolInt64Dictionary*)[self alloc] initWithValues:&value 11967 return [[(GPBBoolInt64Dictionary*)[self alloc] initWithInt64s:&value
11908 forKeys:&key 11968 forKeys:&key
11909 count:1] autorelease]; 11969 count:1] autorelease];
11910 } 11970 }
11911 11971
11912 + (instancetype)dictionaryWithValues:(const int64_t [])values 11972 + (instancetype)dictionaryWithInt64s:(const int64_t [])values
11913 forKeys:(const BOOL [])keys 11973 forKeys:(const BOOL [])keys
11914 count:(NSUInteger)count { 11974 count:(NSUInteger)count {
11915 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 11975 // Cast is needed so the compiler knows what class we are invoking initWithInt 64s:forKeys:count:
11916 // on to get the type correct. 11976 // on to get the type correct.
11917 return [[(GPBBoolInt64Dictionary*)[self alloc] initWithValues:values 11977 return [[(GPBBoolInt64Dictionary*)[self alloc] initWithInt64s:values
11918 forKeys:keys 11978 forKeys:keys
11919 count:count] autorelea se]; 11979 count:count] autorelea se];
11920 } 11980 }
11921 11981
11922 + (instancetype)dictionaryWithDictionary:(GPBBoolInt64Dictionary *)dictionary { 11982 + (instancetype)dictionaryWithDictionary:(GPBBoolInt64Dictionary *)dictionary {
11923 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 11983 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
11924 // on to get the type correct. 11984 // on to get the type correct.
11925 return [[(GPBBoolInt64Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 11985 return [[(GPBBoolInt64Dictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
11926 } 11986 }
11927 11987
11928 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 11988 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
11929 return [[[self alloc] initWithCapacity:numItems] autorelease]; 11989 return [[[self alloc] initWithCapacity:numItems] autorelease];
11930 } 11990 }
11931 11991
11932 - (instancetype)init { 11992 - (instancetype)init {
11933 return [self initWithValues:NULL forKeys:NULL count:0]; 11993 return [self initWithInt64s:NULL forKeys:NULL count:0];
11934 } 11994 }
11935 11995
11936 - (instancetype)initWithValues:(const int64_t [])values 11996 - (instancetype)initWithInt64s:(const int64_t [])values
11937 forKeys:(const BOOL [])keys 11997 forKeys:(const BOOL [])keys
11938 count:(NSUInteger)count { 11998 count:(NSUInteger)count {
11939 self = [super init]; 11999 self = [super init];
11940 if (self) { 12000 if (self) {
11941 for (NSUInteger i = 0; i < count; ++i) { 12001 for (NSUInteger i = 0; i < count; ++i) {
11942 int idx = keys[i] ? 1 : 0; 12002 int idx = keys[i] ? 1 : 0;
11943 _values[idx] = values[i]; 12003 _values[idx] = values[i];
11944 _valueSet[idx] = YES; 12004 _valueSet[idx] = YES;
11945 } 12005 }
11946 } 12006 }
11947 return self; 12007 return self;
11948 } 12008 }
11949 12009
11950 - (instancetype)initWithDictionary:(GPBBoolInt64Dictionary *)dictionary { 12010 - (instancetype)initWithDictionary:(GPBBoolInt64Dictionary *)dictionary {
11951 self = [self initWithValues:NULL forKeys:NULL count:0]; 12011 self = [self initWithInt64s:NULL forKeys:NULL count:0];
11952 if (self) { 12012 if (self) {
11953 if (dictionary) { 12013 if (dictionary) {
11954 for (int i = 0; i < 2; ++i) { 12014 for (int i = 0; i < 2; ++i) {
11955 if (dictionary->_valueSet[i]) { 12015 if (dictionary->_valueSet[i]) {
11956 _values[i] = dictionary->_values[i]; 12016 _values[i] = dictionary->_values[i];
11957 _valueSet[i] = YES; 12017 _valueSet[i] = YES;
11958 } 12018 }
11959 } 12019 }
11960 } 12020 }
11961 } 12021 }
11962 return self; 12022 return self;
11963 } 12023 }
11964 12024
11965 - (instancetype)initWithCapacity:(NSUInteger)numItems { 12025 - (instancetype)initWithCapacity:(NSUInteger)numItems {
11966 #pragma unused(numItems) 12026 #pragma unused(numItems)
11967 return [self initWithValues:NULL forKeys:NULL count:0]; 12027 return [self initWithInt64s:NULL forKeys:NULL count:0];
11968 } 12028 }
11969 12029
11970 #if !defined(NS_BLOCK_ASSERTIONS) 12030 #if !defined(NS_BLOCK_ASSERTIONS)
11971 - (void)dealloc { 12031 - (void)dealloc {
11972 NSAssert(!_autocreator, 12032 NSAssert(!_autocreator,
11973 @"%@: Autocreator must be cleared before release, autocreator: %@", 12033 @"%@: Autocreator must be cleared before release, autocreator: %@",
11974 [self class], _autocreator); 12034 [self class], _autocreator);
11975 [super dealloc]; 12035 [super dealloc];
11976 } 12036 }
11977 #endif // !defined(NS_BLOCK_ASSERTIONS) 12037 #endif // !defined(NS_BLOCK_ASSERTIONS)
11978 12038
11979 - (instancetype)copyWithZone:(NSZone *)zone { 12039 - (instancetype)copyWithZone:(NSZone *)zone {
11980 return [[GPBBoolInt64Dictionary allocWithZone:zone] initWithDictionary:self]; 12040 return [[GPBBoolInt64Dictionary allocWithZone:zone] initWithDictionary:self];
11981 } 12041 }
11982 12042
11983 - (BOOL)isEqual:(GPBBoolInt64Dictionary *)other { 12043 - (BOOL)isEqual:(id)other {
11984 if (self == other) { 12044 if (self == other) {
11985 return YES; 12045 return YES;
11986 } 12046 }
11987 if (![other isKindOfClass:[GPBBoolInt64Dictionary class]]) { 12047 if (![other isKindOfClass:[GPBBoolInt64Dictionary class]]) {
11988 return NO; 12048 return NO;
11989 } 12049 }
11990 if ((_valueSet[0] != other->_valueSet[0]) || 12050 GPBBoolInt64Dictionary *otherDictionary = other;
11991 (_valueSet[1] != other->_valueSet[1])) { 12051 if ((_valueSet[0] != otherDictionary->_valueSet[0]) ||
12052 (_valueSet[1] != otherDictionary->_valueSet[1])) {
11992 return NO; 12053 return NO;
11993 } 12054 }
11994 if ((_valueSet[0] && (_values[0] != other->_values[0])) || 12055 if ((_valueSet[0] && (_values[0] != otherDictionary->_values[0])) ||
11995 (_valueSet[1] && (_values[1] != other->_values[1]))) { 12056 (_valueSet[1] && (_values[1] != otherDictionary->_values[1]))) {
11996 return NO; 12057 return NO;
11997 } 12058 }
11998 return YES; 12059 return YES;
11999 } 12060 }
12000 12061
12001 - (NSUInteger)hash { 12062 - (NSUInteger)hash {
12002 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 12063 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
12003 } 12064 }
12004 12065
12005 - (NSString *)description { 12066 - (NSString *)description {
12006 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self]; 12067 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self];
12007 if (_valueSet[0]) { 12068 if (_valueSet[0]) {
12008 [result appendFormat:@"NO: %lld", _values[0]]; 12069 [result appendFormat:@"NO: %lld", _values[0]];
12009 } 12070 }
12010 if (_valueSet[1]) { 12071 if (_valueSet[1]) {
12011 [result appendFormat:@"YES: %lld", _values[1]]; 12072 [result appendFormat:@"YES: %lld", _values[1]];
12012 } 12073 }
12013 [result appendString:@" }"]; 12074 [result appendString:@" }"];
12014 return result; 12075 return result;
12015 } 12076 }
12016 12077
12017 - (NSUInteger)count { 12078 - (NSUInteger)count {
12018 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 12079 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
12019 } 12080 }
12020 12081
12021 - (BOOL)valueForKey:(BOOL)key value:(int64_t *)value { 12082 - (BOOL)getInt64:(int64_t *)value forKey:(BOOL)key {
12022 int idx = (key ? 1 : 0); 12083 int idx = (key ? 1 : 0);
12023 if (_valueSet[idx]) { 12084 if (_valueSet[idx]) {
12024 if (value) { 12085 if (value) {
12025 *value = _values[idx]; 12086 *value = _values[idx];
12026 } 12087 }
12027 return YES; 12088 return YES;
12028 } 12089 }
12029 return NO; 12090 return NO;
12030 } 12091 }
12031 12092
12032 - (void)setGPBGenericValue:(GPBGenericValue *)value 12093 - (void)setGPBGenericValue:(GPBGenericValue *)value
12033 forGPBGenericValueKey:(GPBGenericValue *)key { 12094 forGPBGenericValueKey:(GPBGenericValue *)key {
12034 int idx = (key->valueBool ? 1 : 0); 12095 int idx = (key->valueBool ? 1 : 0);
12035 _values[idx] = value->valueInt64; 12096 _values[idx] = value->valueInt64;
12036 _valueSet[idx] = YES; 12097 _valueSet[idx] = YES;
12037 } 12098 }
12038 12099
12039 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 12100 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
12040 if (_valueSet[0]) { 12101 if (_valueSet[0]) {
12041 block(@"false", [NSString stringWithFormat:@"%lld", _values[0]]); 12102 block(@"false", [NSString stringWithFormat:@"%lld", _values[0]]);
12042 } 12103 }
12043 if (_valueSet[1]) { 12104 if (_valueSet[1]) {
12044 block(@"true", [NSString stringWithFormat:@"%lld", _values[1]]); 12105 block(@"true", [NSString stringWithFormat:@"%lld", _values[1]]);
12045 } 12106 }
12046 } 12107 }
12047 12108
12048 - (void)enumerateKeysAndValuesUsingBlock: 12109 - (void)enumerateKeysAndInt64sUsingBlock:
12049 (void (^)(BOOL key, int64_t value, BOOL *stop))block { 12110 (void (^)(BOOL key, int64_t value, BOOL *stop))block {
12050 BOOL stop = NO; 12111 BOOL stop = NO;
12051 if (_valueSet[0]) { 12112 if (_valueSet[0]) {
12052 block(NO, _values[0], &stop); 12113 block(NO, _values[0], &stop);
12053 } 12114 }
12054 if (!stop && _valueSet[1]) { 12115 if (!stop && _valueSet[1]) {
12055 block(YES, _values[1], &stop); 12116 block(YES, _values[1], &stop);
12056 } 12117 }
12057 } 12118 }
12058 12119
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
12099 _valueSet[i] = YES; 12160 _valueSet[i] = YES;
12100 _values[i] = otherDictionary->_values[i]; 12161 _values[i] = otherDictionary->_values[i];
12101 } 12162 }
12102 } 12163 }
12103 if (_autocreator) { 12164 if (_autocreator) {
12104 GPBAutocreatedDictionaryModified(_autocreator, self); 12165 GPBAutocreatedDictionaryModified(_autocreator, self);
12105 } 12166 }
12106 } 12167 }
12107 } 12168 }
12108 12169
12109 - (void)setValue:(int64_t)value forKey:(BOOL)key { 12170 - (void)setInt64:(int64_t)value forKey:(BOOL)key {
12110 int idx = (key ? 1 : 0); 12171 int idx = (key ? 1 : 0);
12111 _values[idx] = value; 12172 _values[idx] = value;
12112 _valueSet[idx] = YES; 12173 _valueSet[idx] = YES;
12113 if (_autocreator) { 12174 if (_autocreator) {
12114 GPBAutocreatedDictionaryModified(_autocreator, self); 12175 GPBAutocreatedDictionaryModified(_autocreator, self);
12115 } 12176 }
12116 } 12177 }
12117 12178
12118 - (void)removeValueForKey:(BOOL)aKey { 12179 - (void)removeInt64ForKey:(BOOL)aKey {
12119 _valueSet[aKey ? 1 : 0] = NO; 12180 _valueSet[aKey ? 1 : 0] = NO;
12120 } 12181 }
12121 12182
12122 - (void)removeAll { 12183 - (void)removeAll {
12123 _valueSet[0] = NO; 12184 _valueSet[0] = NO;
12124 _valueSet[1] = NO; 12185 _valueSet[1] = NO;
12125 } 12186 }
12126 12187
12127 @end 12188 @end
12128 12189
12129 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Bool, BOOL) 12190 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Bool, BOOL)
12130 // This block of code is generated, do not edit it directly. 12191 // This block of code is generated, do not edit it directly.
12131 12192
12132 #pragma mark - Bool -> Bool 12193 #pragma mark - Bool -> Bool
12133 12194
12134 @implementation GPBBoolBoolDictionary { 12195 @implementation GPBBoolBoolDictionary {
12135 @package 12196 @package
12136 BOOL _values[2]; 12197 BOOL _values[2];
12137 BOOL _valueSet[2]; 12198 BOOL _valueSet[2];
12138 } 12199 }
12139 12200
12140 + (instancetype)dictionary { 12201 + (instancetype)dictionary {
12141 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 12202 return [[[self alloc] initWithBools:NULL forKeys:NULL count:0] autorelease];
12142 } 12203 }
12143 12204
12144 + (instancetype)dictionaryWithValue:(BOOL)value 12205 + (instancetype)dictionaryWithBool:(BOOL)value
12145 forKey:(BOOL)key { 12206 forKey:(BOOL)key {
12146 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 12207 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
12147 // on to get the type correct. 12208 // on to get the type correct.
12148 return [[(GPBBoolBoolDictionary*)[self alloc] initWithValues:&value 12209 return [[(GPBBoolBoolDictionary*)[self alloc] initWithBools:&value
12149 forKeys:&key 12210 forKeys:&key
12150 count:1] autorelease]; 12211 count:1] autorelease];
12151 } 12212 }
12152 12213
12153 + (instancetype)dictionaryWithValues:(const BOOL [])values 12214 + (instancetype)dictionaryWithBools:(const BOOL [])values
12154 forKeys:(const BOOL [])keys 12215 forKeys:(const BOOL [])keys
12155 count:(NSUInteger)count { 12216 count:(NSUInteger)count {
12156 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 12217 // Cast is needed so the compiler knows what class we are invoking initWithBoo ls:forKeys:count:
12157 // on to get the type correct. 12218 // on to get the type correct.
12158 return [[(GPBBoolBoolDictionary*)[self alloc] initWithValues:values 12219 return [[(GPBBoolBoolDictionary*)[self alloc] initWithBools:values
12159 forKeys:keys 12220 forKeys:keys
12160 count:count] autoreleas e]; 12221 count:count] autorelease ];
12161 } 12222 }
12162 12223
12163 + (instancetype)dictionaryWithDictionary:(GPBBoolBoolDictionary *)dictionary { 12224 + (instancetype)dictionaryWithDictionary:(GPBBoolBoolDictionary *)dictionary {
12164 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 12225 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
12165 // on to get the type correct. 12226 // on to get the type correct.
12166 return [[(GPBBoolBoolDictionary*)[self alloc] initWithDictionary:dictionary] a utorelease]; 12227 return [[(GPBBoolBoolDictionary*)[self alloc] initWithDictionary:dictionary] a utorelease];
12167 } 12228 }
12168 12229
12169 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 12230 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
12170 return [[[self alloc] initWithCapacity:numItems] autorelease]; 12231 return [[[self alloc] initWithCapacity:numItems] autorelease];
12171 } 12232 }
12172 12233
12173 - (instancetype)init { 12234 - (instancetype)init {
12174 return [self initWithValues:NULL forKeys:NULL count:0]; 12235 return [self initWithBools:NULL forKeys:NULL count:0];
12175 } 12236 }
12176 12237
12177 - (instancetype)initWithValues:(const BOOL [])values 12238 - (instancetype)initWithBools:(const BOOL [])values
12178 forKeys:(const BOOL [])keys 12239 forKeys:(const BOOL [])keys
12179 count:(NSUInteger)count { 12240 count:(NSUInteger)count {
12180 self = [super init]; 12241 self = [super init];
12181 if (self) { 12242 if (self) {
12182 for (NSUInteger i = 0; i < count; ++i) { 12243 for (NSUInteger i = 0; i < count; ++i) {
12183 int idx = keys[i] ? 1 : 0; 12244 int idx = keys[i] ? 1 : 0;
12184 _values[idx] = values[i]; 12245 _values[idx] = values[i];
12185 _valueSet[idx] = YES; 12246 _valueSet[idx] = YES;
12186 } 12247 }
12187 } 12248 }
12188 return self; 12249 return self;
12189 } 12250 }
12190 12251
12191 - (instancetype)initWithDictionary:(GPBBoolBoolDictionary *)dictionary { 12252 - (instancetype)initWithDictionary:(GPBBoolBoolDictionary *)dictionary {
12192 self = [self initWithValues:NULL forKeys:NULL count:0]; 12253 self = [self initWithBools:NULL forKeys:NULL count:0];
12193 if (self) { 12254 if (self) {
12194 if (dictionary) { 12255 if (dictionary) {
12195 for (int i = 0; i < 2; ++i) { 12256 for (int i = 0; i < 2; ++i) {
12196 if (dictionary->_valueSet[i]) { 12257 if (dictionary->_valueSet[i]) {
12197 _values[i] = dictionary->_values[i]; 12258 _values[i] = dictionary->_values[i];
12198 _valueSet[i] = YES; 12259 _valueSet[i] = YES;
12199 } 12260 }
12200 } 12261 }
12201 } 12262 }
12202 } 12263 }
12203 return self; 12264 return self;
12204 } 12265 }
12205 12266
12206 - (instancetype)initWithCapacity:(NSUInteger)numItems { 12267 - (instancetype)initWithCapacity:(NSUInteger)numItems {
12207 #pragma unused(numItems) 12268 #pragma unused(numItems)
12208 return [self initWithValues:NULL forKeys:NULL count:0]; 12269 return [self initWithBools:NULL forKeys:NULL count:0];
12209 } 12270 }
12210 12271
12211 #if !defined(NS_BLOCK_ASSERTIONS) 12272 #if !defined(NS_BLOCK_ASSERTIONS)
12212 - (void)dealloc { 12273 - (void)dealloc {
12213 NSAssert(!_autocreator, 12274 NSAssert(!_autocreator,
12214 @"%@: Autocreator must be cleared before release, autocreator: %@", 12275 @"%@: Autocreator must be cleared before release, autocreator: %@",
12215 [self class], _autocreator); 12276 [self class], _autocreator);
12216 [super dealloc]; 12277 [super dealloc];
12217 } 12278 }
12218 #endif // !defined(NS_BLOCK_ASSERTIONS) 12279 #endif // !defined(NS_BLOCK_ASSERTIONS)
12219 12280
12220 - (instancetype)copyWithZone:(NSZone *)zone { 12281 - (instancetype)copyWithZone:(NSZone *)zone {
12221 return [[GPBBoolBoolDictionary allocWithZone:zone] initWithDictionary:self]; 12282 return [[GPBBoolBoolDictionary allocWithZone:zone] initWithDictionary:self];
12222 } 12283 }
12223 12284
12224 - (BOOL)isEqual:(GPBBoolBoolDictionary *)other { 12285 - (BOOL)isEqual:(id)other {
12225 if (self == other) { 12286 if (self == other) {
12226 return YES; 12287 return YES;
12227 } 12288 }
12228 if (![other isKindOfClass:[GPBBoolBoolDictionary class]]) { 12289 if (![other isKindOfClass:[GPBBoolBoolDictionary class]]) {
12229 return NO; 12290 return NO;
12230 } 12291 }
12231 if ((_valueSet[0] != other->_valueSet[0]) || 12292 GPBBoolBoolDictionary *otherDictionary = other;
12232 (_valueSet[1] != other->_valueSet[1])) { 12293 if ((_valueSet[0] != otherDictionary->_valueSet[0]) ||
12294 (_valueSet[1] != otherDictionary->_valueSet[1])) {
12233 return NO; 12295 return NO;
12234 } 12296 }
12235 if ((_valueSet[0] && (_values[0] != other->_values[0])) || 12297 if ((_valueSet[0] && (_values[0] != otherDictionary->_values[0])) ||
12236 (_valueSet[1] && (_values[1] != other->_values[1]))) { 12298 (_valueSet[1] && (_values[1] != otherDictionary->_values[1]))) {
12237 return NO; 12299 return NO;
12238 } 12300 }
12239 return YES; 12301 return YES;
12240 } 12302 }
12241 12303
12242 - (NSUInteger)hash { 12304 - (NSUInteger)hash {
12243 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 12305 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
12244 } 12306 }
12245 12307
12246 - (NSString *)description { 12308 - (NSString *)description {
12247 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self]; 12309 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self];
12248 if (_valueSet[0]) { 12310 if (_valueSet[0]) {
12249 [result appendFormat:@"NO: %d", _values[0]]; 12311 [result appendFormat:@"NO: %d", _values[0]];
12250 } 12312 }
12251 if (_valueSet[1]) { 12313 if (_valueSet[1]) {
12252 [result appendFormat:@"YES: %d", _values[1]]; 12314 [result appendFormat:@"YES: %d", _values[1]];
12253 } 12315 }
12254 [result appendString:@" }"]; 12316 [result appendString:@" }"];
12255 return result; 12317 return result;
12256 } 12318 }
12257 12319
12258 - (NSUInteger)count { 12320 - (NSUInteger)count {
12259 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 12321 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
12260 } 12322 }
12261 12323
12262 - (BOOL)valueForKey:(BOOL)key value:(BOOL *)value { 12324 - (BOOL)getBool:(BOOL *)value forKey:(BOOL)key {
12263 int idx = (key ? 1 : 0); 12325 int idx = (key ? 1 : 0);
12264 if (_valueSet[idx]) { 12326 if (_valueSet[idx]) {
12265 if (value) { 12327 if (value) {
12266 *value = _values[idx]; 12328 *value = _values[idx];
12267 } 12329 }
12268 return YES; 12330 return YES;
12269 } 12331 }
12270 return NO; 12332 return NO;
12271 } 12333 }
12272 12334
12273 - (void)setGPBGenericValue:(GPBGenericValue *)value 12335 - (void)setGPBGenericValue:(GPBGenericValue *)value
12274 forGPBGenericValueKey:(GPBGenericValue *)key { 12336 forGPBGenericValueKey:(GPBGenericValue *)key {
12275 int idx = (key->valueBool ? 1 : 0); 12337 int idx = (key->valueBool ? 1 : 0);
12276 _values[idx] = value->valueBool; 12338 _values[idx] = value->valueBool;
12277 _valueSet[idx] = YES; 12339 _valueSet[idx] = YES;
12278 } 12340 }
12279 12341
12280 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 12342 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
12281 if (_valueSet[0]) { 12343 if (_valueSet[0]) {
12282 block(@"false", (_values[0] ? @"true" : @"false")); 12344 block(@"false", (_values[0] ? @"true" : @"false"));
12283 } 12345 }
12284 if (_valueSet[1]) { 12346 if (_valueSet[1]) {
12285 block(@"true", (_values[1] ? @"true" : @"false")); 12347 block(@"true", (_values[1] ? @"true" : @"false"));
12286 } 12348 }
12287 } 12349 }
12288 12350
12289 - (void)enumerateKeysAndValuesUsingBlock: 12351 - (void)enumerateKeysAndBoolsUsingBlock:
12290 (void (^)(BOOL key, BOOL value, BOOL *stop))block { 12352 (void (^)(BOOL key, BOOL value, BOOL *stop))block {
12291 BOOL stop = NO; 12353 BOOL stop = NO;
12292 if (_valueSet[0]) { 12354 if (_valueSet[0]) {
12293 block(NO, _values[0], &stop); 12355 block(NO, _values[0], &stop);
12294 } 12356 }
12295 if (!stop && _valueSet[1]) { 12357 if (!stop && _valueSet[1]) {
12296 block(YES, _values[1], &stop); 12358 block(YES, _values[1], &stop);
12297 } 12359 }
12298 } 12360 }
12299 12361
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
12340 _valueSet[i] = YES; 12402 _valueSet[i] = YES;
12341 _values[i] = otherDictionary->_values[i]; 12403 _values[i] = otherDictionary->_values[i];
12342 } 12404 }
12343 } 12405 }
12344 if (_autocreator) { 12406 if (_autocreator) {
12345 GPBAutocreatedDictionaryModified(_autocreator, self); 12407 GPBAutocreatedDictionaryModified(_autocreator, self);
12346 } 12408 }
12347 } 12409 }
12348 } 12410 }
12349 12411
12350 - (void)setValue:(BOOL)value forKey:(BOOL)key { 12412 - (void)setBool:(BOOL)value forKey:(BOOL)key {
12351 int idx = (key ? 1 : 0); 12413 int idx = (key ? 1 : 0);
12352 _values[idx] = value; 12414 _values[idx] = value;
12353 _valueSet[idx] = YES; 12415 _valueSet[idx] = YES;
12354 if (_autocreator) { 12416 if (_autocreator) {
12355 GPBAutocreatedDictionaryModified(_autocreator, self); 12417 GPBAutocreatedDictionaryModified(_autocreator, self);
12356 } 12418 }
12357 } 12419 }
12358 12420
12359 - (void)removeValueForKey:(BOOL)aKey { 12421 - (void)removeBoolForKey:(BOOL)aKey {
12360 _valueSet[aKey ? 1 : 0] = NO; 12422 _valueSet[aKey ? 1 : 0] = NO;
12361 } 12423 }
12362 12424
12363 - (void)removeAll { 12425 - (void)removeAll {
12364 _valueSet[0] = NO; 12426 _valueSet[0] = NO;
12365 _valueSet[1] = NO; 12427 _valueSet[1] = NO;
12366 } 12428 }
12367 12429
12368 @end 12430 @end
12369 12431
12370 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Float, float) 12432 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Float, float)
12371 // This block of code is generated, do not edit it directly. 12433 // This block of code is generated, do not edit it directly.
12372 12434
12373 #pragma mark - Bool -> Float 12435 #pragma mark - Bool -> Float
12374 12436
12375 @implementation GPBBoolFloatDictionary { 12437 @implementation GPBBoolFloatDictionary {
12376 @package 12438 @package
12377 float _values[2]; 12439 float _values[2];
12378 BOOL _valueSet[2]; 12440 BOOL _valueSet[2];
12379 } 12441 }
12380 12442
12381 + (instancetype)dictionary { 12443 + (instancetype)dictionary {
12382 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 12444 return [[[self alloc] initWithFloats:NULL forKeys:NULL count:0] autorelease];
12383 } 12445 }
12384 12446
12385 + (instancetype)dictionaryWithValue:(float)value 12447 + (instancetype)dictionaryWithFloat:(float)value
12386 forKey:(BOOL)key { 12448 forKey:(BOOL)key {
12387 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 12449 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
12388 // on to get the type correct. 12450 // on to get the type correct.
12389 return [[(GPBBoolFloatDictionary*)[self alloc] initWithValues:&value 12451 return [[(GPBBoolFloatDictionary*)[self alloc] initWithFloats:&value
12390 forKeys:&key 12452 forKeys:&key
12391 count:1] autorelease]; 12453 count:1] autorelease];
12392 } 12454 }
12393 12455
12394 + (instancetype)dictionaryWithValues:(const float [])values 12456 + (instancetype)dictionaryWithFloats:(const float [])values
12395 forKeys:(const BOOL [])keys 12457 forKeys:(const BOOL [])keys
12396 count:(NSUInteger)count { 12458 count:(NSUInteger)count {
12397 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 12459 // Cast is needed so the compiler knows what class we are invoking initWithFlo ats:forKeys:count:
12398 // on to get the type correct. 12460 // on to get the type correct.
12399 return [[(GPBBoolFloatDictionary*)[self alloc] initWithValues:values 12461 return [[(GPBBoolFloatDictionary*)[self alloc] initWithFloats:values
12400 forKeys:keys 12462 forKeys:keys
12401 count:count] autorelea se]; 12463 count:count] autorelea se];
12402 } 12464 }
12403 12465
12404 + (instancetype)dictionaryWithDictionary:(GPBBoolFloatDictionary *)dictionary { 12466 + (instancetype)dictionaryWithDictionary:(GPBBoolFloatDictionary *)dictionary {
12405 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 12467 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
12406 // on to get the type correct. 12468 // on to get the type correct.
12407 return [[(GPBBoolFloatDictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 12469 return [[(GPBBoolFloatDictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
12408 } 12470 }
12409 12471
12410 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 12472 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
12411 return [[[self alloc] initWithCapacity:numItems] autorelease]; 12473 return [[[self alloc] initWithCapacity:numItems] autorelease];
12412 } 12474 }
12413 12475
12414 - (instancetype)init { 12476 - (instancetype)init {
12415 return [self initWithValues:NULL forKeys:NULL count:0]; 12477 return [self initWithFloats:NULL forKeys:NULL count:0];
12416 } 12478 }
12417 12479
12418 - (instancetype)initWithValues:(const float [])values 12480 - (instancetype)initWithFloats:(const float [])values
12419 forKeys:(const BOOL [])keys 12481 forKeys:(const BOOL [])keys
12420 count:(NSUInteger)count { 12482 count:(NSUInteger)count {
12421 self = [super init]; 12483 self = [super init];
12422 if (self) { 12484 if (self) {
12423 for (NSUInteger i = 0; i < count; ++i) { 12485 for (NSUInteger i = 0; i < count; ++i) {
12424 int idx = keys[i] ? 1 : 0; 12486 int idx = keys[i] ? 1 : 0;
12425 _values[idx] = values[i]; 12487 _values[idx] = values[i];
12426 _valueSet[idx] = YES; 12488 _valueSet[idx] = YES;
12427 } 12489 }
12428 } 12490 }
12429 return self; 12491 return self;
12430 } 12492 }
12431 12493
12432 - (instancetype)initWithDictionary:(GPBBoolFloatDictionary *)dictionary { 12494 - (instancetype)initWithDictionary:(GPBBoolFloatDictionary *)dictionary {
12433 self = [self initWithValues:NULL forKeys:NULL count:0]; 12495 self = [self initWithFloats:NULL forKeys:NULL count:0];
12434 if (self) { 12496 if (self) {
12435 if (dictionary) { 12497 if (dictionary) {
12436 for (int i = 0; i < 2; ++i) { 12498 for (int i = 0; i < 2; ++i) {
12437 if (dictionary->_valueSet[i]) { 12499 if (dictionary->_valueSet[i]) {
12438 _values[i] = dictionary->_values[i]; 12500 _values[i] = dictionary->_values[i];
12439 _valueSet[i] = YES; 12501 _valueSet[i] = YES;
12440 } 12502 }
12441 } 12503 }
12442 } 12504 }
12443 } 12505 }
12444 return self; 12506 return self;
12445 } 12507 }
12446 12508
12447 - (instancetype)initWithCapacity:(NSUInteger)numItems { 12509 - (instancetype)initWithCapacity:(NSUInteger)numItems {
12448 #pragma unused(numItems) 12510 #pragma unused(numItems)
12449 return [self initWithValues:NULL forKeys:NULL count:0]; 12511 return [self initWithFloats:NULL forKeys:NULL count:0];
12450 } 12512 }
12451 12513
12452 #if !defined(NS_BLOCK_ASSERTIONS) 12514 #if !defined(NS_BLOCK_ASSERTIONS)
12453 - (void)dealloc { 12515 - (void)dealloc {
12454 NSAssert(!_autocreator, 12516 NSAssert(!_autocreator,
12455 @"%@: Autocreator must be cleared before release, autocreator: %@", 12517 @"%@: Autocreator must be cleared before release, autocreator: %@",
12456 [self class], _autocreator); 12518 [self class], _autocreator);
12457 [super dealloc]; 12519 [super dealloc];
12458 } 12520 }
12459 #endif // !defined(NS_BLOCK_ASSERTIONS) 12521 #endif // !defined(NS_BLOCK_ASSERTIONS)
12460 12522
12461 - (instancetype)copyWithZone:(NSZone *)zone { 12523 - (instancetype)copyWithZone:(NSZone *)zone {
12462 return [[GPBBoolFloatDictionary allocWithZone:zone] initWithDictionary:self]; 12524 return [[GPBBoolFloatDictionary allocWithZone:zone] initWithDictionary:self];
12463 } 12525 }
12464 12526
12465 - (BOOL)isEqual:(GPBBoolFloatDictionary *)other { 12527 - (BOOL)isEqual:(id)other {
12466 if (self == other) { 12528 if (self == other) {
12467 return YES; 12529 return YES;
12468 } 12530 }
12469 if (![other isKindOfClass:[GPBBoolFloatDictionary class]]) { 12531 if (![other isKindOfClass:[GPBBoolFloatDictionary class]]) {
12470 return NO; 12532 return NO;
12471 } 12533 }
12472 if ((_valueSet[0] != other->_valueSet[0]) || 12534 GPBBoolFloatDictionary *otherDictionary = other;
12473 (_valueSet[1] != other->_valueSet[1])) { 12535 if ((_valueSet[0] != otherDictionary->_valueSet[0]) ||
12536 (_valueSet[1] != otherDictionary->_valueSet[1])) {
12474 return NO; 12537 return NO;
12475 } 12538 }
12476 if ((_valueSet[0] && (_values[0] != other->_values[0])) || 12539 if ((_valueSet[0] && (_values[0] != otherDictionary->_values[0])) ||
12477 (_valueSet[1] && (_values[1] != other->_values[1]))) { 12540 (_valueSet[1] && (_values[1] != otherDictionary->_values[1]))) {
12478 return NO; 12541 return NO;
12479 } 12542 }
12480 return YES; 12543 return YES;
12481 } 12544 }
12482 12545
12483 - (NSUInteger)hash { 12546 - (NSUInteger)hash {
12484 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 12547 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
12485 } 12548 }
12486 12549
12487 - (NSString *)description { 12550 - (NSString *)description {
12488 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self]; 12551 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self];
12489 if (_valueSet[0]) { 12552 if (_valueSet[0]) {
12490 [result appendFormat:@"NO: %f", _values[0]]; 12553 [result appendFormat:@"NO: %f", _values[0]];
12491 } 12554 }
12492 if (_valueSet[1]) { 12555 if (_valueSet[1]) {
12493 [result appendFormat:@"YES: %f", _values[1]]; 12556 [result appendFormat:@"YES: %f", _values[1]];
12494 } 12557 }
12495 [result appendString:@" }"]; 12558 [result appendString:@" }"];
12496 return result; 12559 return result;
12497 } 12560 }
12498 12561
12499 - (NSUInteger)count { 12562 - (NSUInteger)count {
12500 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 12563 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
12501 } 12564 }
12502 12565
12503 - (BOOL)valueForKey:(BOOL)key value:(float *)value { 12566 - (BOOL)getFloat:(float *)value forKey:(BOOL)key {
12504 int idx = (key ? 1 : 0); 12567 int idx = (key ? 1 : 0);
12505 if (_valueSet[idx]) { 12568 if (_valueSet[idx]) {
12506 if (value) { 12569 if (value) {
12507 *value = _values[idx]; 12570 *value = _values[idx];
12508 } 12571 }
12509 return YES; 12572 return YES;
12510 } 12573 }
12511 return NO; 12574 return NO;
12512 } 12575 }
12513 12576
12514 - (void)setGPBGenericValue:(GPBGenericValue *)value 12577 - (void)setGPBGenericValue:(GPBGenericValue *)value
12515 forGPBGenericValueKey:(GPBGenericValue *)key { 12578 forGPBGenericValueKey:(GPBGenericValue *)key {
12516 int idx = (key->valueBool ? 1 : 0); 12579 int idx = (key->valueBool ? 1 : 0);
12517 _values[idx] = value->valueFloat; 12580 _values[idx] = value->valueFloat;
12518 _valueSet[idx] = YES; 12581 _valueSet[idx] = YES;
12519 } 12582 }
12520 12583
12521 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 12584 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
12522 if (_valueSet[0]) { 12585 if (_valueSet[0]) {
12523 block(@"false", [NSString stringWithFormat:@"%.*g", FLT_DIG, _values[0]]); 12586 block(@"false", [NSString stringWithFormat:@"%.*g", FLT_DIG, _values[0]]);
12524 } 12587 }
12525 if (_valueSet[1]) { 12588 if (_valueSet[1]) {
12526 block(@"true", [NSString stringWithFormat:@"%.*g", FLT_DIG, _values[1]]); 12589 block(@"true", [NSString stringWithFormat:@"%.*g", FLT_DIG, _values[1]]);
12527 } 12590 }
12528 } 12591 }
12529 12592
12530 - (void)enumerateKeysAndValuesUsingBlock: 12593 - (void)enumerateKeysAndFloatsUsingBlock:
12531 (void (^)(BOOL key, float value, BOOL *stop))block { 12594 (void (^)(BOOL key, float value, BOOL *stop))block {
12532 BOOL stop = NO; 12595 BOOL stop = NO;
12533 if (_valueSet[0]) { 12596 if (_valueSet[0]) {
12534 block(NO, _values[0], &stop); 12597 block(NO, _values[0], &stop);
12535 } 12598 }
12536 if (!stop && _valueSet[1]) { 12599 if (!stop && _valueSet[1]) {
12537 block(YES, _values[1], &stop); 12600 block(YES, _values[1], &stop);
12538 } 12601 }
12539 } 12602 }
12540 12603
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
12581 _valueSet[i] = YES; 12644 _valueSet[i] = YES;
12582 _values[i] = otherDictionary->_values[i]; 12645 _values[i] = otherDictionary->_values[i];
12583 } 12646 }
12584 } 12647 }
12585 if (_autocreator) { 12648 if (_autocreator) {
12586 GPBAutocreatedDictionaryModified(_autocreator, self); 12649 GPBAutocreatedDictionaryModified(_autocreator, self);
12587 } 12650 }
12588 } 12651 }
12589 } 12652 }
12590 12653
12591 - (void)setValue:(float)value forKey:(BOOL)key { 12654 - (void)setFloat:(float)value forKey:(BOOL)key {
12592 int idx = (key ? 1 : 0); 12655 int idx = (key ? 1 : 0);
12593 _values[idx] = value; 12656 _values[idx] = value;
12594 _valueSet[idx] = YES; 12657 _valueSet[idx] = YES;
12595 if (_autocreator) { 12658 if (_autocreator) {
12596 GPBAutocreatedDictionaryModified(_autocreator, self); 12659 GPBAutocreatedDictionaryModified(_autocreator, self);
12597 } 12660 }
12598 } 12661 }
12599 12662
12600 - (void)removeValueForKey:(BOOL)aKey { 12663 - (void)removeFloatForKey:(BOOL)aKey {
12601 _valueSet[aKey ? 1 : 0] = NO; 12664 _valueSet[aKey ? 1 : 0] = NO;
12602 } 12665 }
12603 12666
12604 - (void)removeAll { 12667 - (void)removeAll {
12605 _valueSet[0] = NO; 12668 _valueSet[0] = NO;
12606 _valueSet[1] = NO; 12669 _valueSet[1] = NO;
12607 } 12670 }
12608 12671
12609 @end 12672 @end
12610 12673
12611 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Double, double) 12674 //%PDDM-EXPAND DICTIONARY_BOOL_KEY_TO_POD_IMPL(Double, double)
12612 // This block of code is generated, do not edit it directly. 12675 // This block of code is generated, do not edit it directly.
12613 12676
12614 #pragma mark - Bool -> Double 12677 #pragma mark - Bool -> Double
12615 12678
12616 @implementation GPBBoolDoubleDictionary { 12679 @implementation GPBBoolDoubleDictionary {
12617 @package 12680 @package
12618 double _values[2]; 12681 double _values[2];
12619 BOOL _valueSet[2]; 12682 BOOL _valueSet[2];
12620 } 12683 }
12621 12684
12622 + (instancetype)dictionary { 12685 + (instancetype)dictionary {
12623 return [[[self alloc] initWithValues:NULL forKeys:NULL count:0] autorelease]; 12686 return [[[self alloc] initWithDoubles:NULL forKeys:NULL count:0] autorelease];
12624 } 12687 }
12625 12688
12626 + (instancetype)dictionaryWithValue:(double)value 12689 + (instancetype)dictionaryWithDouble:(double)value
12627 forKey:(BOOL)key { 12690 forKey:(BOOL)key {
12628 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 12691 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
12629 // on to get the type correct. 12692 // on to get the type correct.
12630 return [[(GPBBoolDoubleDictionary*)[self alloc] initWithValues:&value 12693 return [[(GPBBoolDoubleDictionary*)[self alloc] initWithDoubles:&value
12631 forKeys:&key 12694 forKeys:&key
12632 count:1] autorelease] ; 12695 count:1] autorelease ];
12633 } 12696 }
12634 12697
12635 + (instancetype)dictionaryWithValues:(const double [])values 12698 + (instancetype)dictionaryWithDoubles:(const double [])values
12636 forKeys:(const BOOL [])keys 12699 forKeys:(const BOOL [])keys
12637 count:(NSUInteger)count { 12700 count:(NSUInteger)count {
12638 // Cast is needed so the compiler knows what class we are invoking initWithVal ues:forKeys:count: 12701 // Cast is needed so the compiler knows what class we are invoking initWithDou bles:forKeys:count:
12639 // on to get the type correct. 12702 // on to get the type correct.
12640 return [[(GPBBoolDoubleDictionary*)[self alloc] initWithValues:values 12703 return [[(GPBBoolDoubleDictionary*)[self alloc] initWithDoubles:values
12641 forKeys:keys 12704 forKeys:keys
12642 count:count] autorele ase]; 12705 count:count] autorel ease];
12643 } 12706 }
12644 12707
12645 + (instancetype)dictionaryWithDictionary:(GPBBoolDoubleDictionary *)dictionary { 12708 + (instancetype)dictionaryWithDictionary:(GPBBoolDoubleDictionary *)dictionary {
12646 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary: 12709 // Cast is needed so the compiler knows what class we are invoking initWithDic tionary:
12647 // on to get the type correct. 12710 // on to get the type correct.
12648 return [[(GPBBoolDoubleDictionary*)[self alloc] initWithDictionary:dictionary] autorelease]; 12711 return [[(GPBBoolDoubleDictionary*)[self alloc] initWithDictionary:dictionary] autorelease];
12649 } 12712 }
12650 12713
12651 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems { 12714 + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems {
12652 return [[[self alloc] initWithCapacity:numItems] autorelease]; 12715 return [[[self alloc] initWithCapacity:numItems] autorelease];
12653 } 12716 }
12654 12717
12655 - (instancetype)init { 12718 - (instancetype)init {
12656 return [self initWithValues:NULL forKeys:NULL count:0]; 12719 return [self initWithDoubles:NULL forKeys:NULL count:0];
12657 } 12720 }
12658 12721
12659 - (instancetype)initWithValues:(const double [])values 12722 - (instancetype)initWithDoubles:(const double [])values
12660 forKeys:(const BOOL [])keys 12723 forKeys:(const BOOL [])keys
12661 count:(NSUInteger)count { 12724 count:(NSUInteger)count {
12662 self = [super init]; 12725 self = [super init];
12663 if (self) { 12726 if (self) {
12664 for (NSUInteger i = 0; i < count; ++i) { 12727 for (NSUInteger i = 0; i < count; ++i) {
12665 int idx = keys[i] ? 1 : 0; 12728 int idx = keys[i] ? 1 : 0;
12666 _values[idx] = values[i]; 12729 _values[idx] = values[i];
12667 _valueSet[idx] = YES; 12730 _valueSet[idx] = YES;
12668 } 12731 }
12669 } 12732 }
12670 return self; 12733 return self;
12671 } 12734 }
12672 12735
12673 - (instancetype)initWithDictionary:(GPBBoolDoubleDictionary *)dictionary { 12736 - (instancetype)initWithDictionary:(GPBBoolDoubleDictionary *)dictionary {
12674 self = [self initWithValues:NULL forKeys:NULL count:0]; 12737 self = [self initWithDoubles:NULL forKeys:NULL count:0];
12675 if (self) { 12738 if (self) {
12676 if (dictionary) { 12739 if (dictionary) {
12677 for (int i = 0; i < 2; ++i) { 12740 for (int i = 0; i < 2; ++i) {
12678 if (dictionary->_valueSet[i]) { 12741 if (dictionary->_valueSet[i]) {
12679 _values[i] = dictionary->_values[i]; 12742 _values[i] = dictionary->_values[i];
12680 _valueSet[i] = YES; 12743 _valueSet[i] = YES;
12681 } 12744 }
12682 } 12745 }
12683 } 12746 }
12684 } 12747 }
12685 return self; 12748 return self;
12686 } 12749 }
12687 12750
12688 - (instancetype)initWithCapacity:(NSUInteger)numItems { 12751 - (instancetype)initWithCapacity:(NSUInteger)numItems {
12689 #pragma unused(numItems) 12752 #pragma unused(numItems)
12690 return [self initWithValues:NULL forKeys:NULL count:0]; 12753 return [self initWithDoubles:NULL forKeys:NULL count:0];
12691 } 12754 }
12692 12755
12693 #if !defined(NS_BLOCK_ASSERTIONS) 12756 #if !defined(NS_BLOCK_ASSERTIONS)
12694 - (void)dealloc { 12757 - (void)dealloc {
12695 NSAssert(!_autocreator, 12758 NSAssert(!_autocreator,
12696 @"%@: Autocreator must be cleared before release, autocreator: %@", 12759 @"%@: Autocreator must be cleared before release, autocreator: %@",
12697 [self class], _autocreator); 12760 [self class], _autocreator);
12698 [super dealloc]; 12761 [super dealloc];
12699 } 12762 }
12700 #endif // !defined(NS_BLOCK_ASSERTIONS) 12763 #endif // !defined(NS_BLOCK_ASSERTIONS)
12701 12764
12702 - (instancetype)copyWithZone:(NSZone *)zone { 12765 - (instancetype)copyWithZone:(NSZone *)zone {
12703 return [[GPBBoolDoubleDictionary allocWithZone:zone] initWithDictionary:self]; 12766 return [[GPBBoolDoubleDictionary allocWithZone:zone] initWithDictionary:self];
12704 } 12767 }
12705 12768
12706 - (BOOL)isEqual:(GPBBoolDoubleDictionary *)other { 12769 - (BOOL)isEqual:(id)other {
12707 if (self == other) { 12770 if (self == other) {
12708 return YES; 12771 return YES;
12709 } 12772 }
12710 if (![other isKindOfClass:[GPBBoolDoubleDictionary class]]) { 12773 if (![other isKindOfClass:[GPBBoolDoubleDictionary class]]) {
12711 return NO; 12774 return NO;
12712 } 12775 }
12713 if ((_valueSet[0] != other->_valueSet[0]) || 12776 GPBBoolDoubleDictionary *otherDictionary = other;
12714 (_valueSet[1] != other->_valueSet[1])) { 12777 if ((_valueSet[0] != otherDictionary->_valueSet[0]) ||
12778 (_valueSet[1] != otherDictionary->_valueSet[1])) {
12715 return NO; 12779 return NO;
12716 } 12780 }
12717 if ((_valueSet[0] && (_values[0] != other->_values[0])) || 12781 if ((_valueSet[0] && (_values[0] != otherDictionary->_values[0])) ||
12718 (_valueSet[1] && (_values[1] != other->_values[1]))) { 12782 (_valueSet[1] && (_values[1] != otherDictionary->_values[1]))) {
12719 return NO; 12783 return NO;
12720 } 12784 }
12721 return YES; 12785 return YES;
12722 } 12786 }
12723 12787
12724 - (NSUInteger)hash { 12788 - (NSUInteger)hash {
12725 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 12789 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
12726 } 12790 }
12727 12791
12728 - (NSString *)description { 12792 - (NSString *)description {
12729 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self]; 12793 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self];
12730 if (_valueSet[0]) { 12794 if (_valueSet[0]) {
12731 [result appendFormat:@"NO: %lf", _values[0]]; 12795 [result appendFormat:@"NO: %lf", _values[0]];
12732 } 12796 }
12733 if (_valueSet[1]) { 12797 if (_valueSet[1]) {
12734 [result appendFormat:@"YES: %lf", _values[1]]; 12798 [result appendFormat:@"YES: %lf", _values[1]];
12735 } 12799 }
12736 [result appendString:@" }"]; 12800 [result appendString:@" }"];
12737 return result; 12801 return result;
12738 } 12802 }
12739 12803
12740 - (NSUInteger)count { 12804 - (NSUInteger)count {
12741 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 12805 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
12742 } 12806 }
12743 12807
12744 - (BOOL)valueForKey:(BOOL)key value:(double *)value { 12808 - (BOOL)getDouble:(double *)value forKey:(BOOL)key {
12745 int idx = (key ? 1 : 0); 12809 int idx = (key ? 1 : 0);
12746 if (_valueSet[idx]) { 12810 if (_valueSet[idx]) {
12747 if (value) { 12811 if (value) {
12748 *value = _values[idx]; 12812 *value = _values[idx];
12749 } 12813 }
12750 return YES; 12814 return YES;
12751 } 12815 }
12752 return NO; 12816 return NO;
12753 } 12817 }
12754 12818
12755 - (void)setGPBGenericValue:(GPBGenericValue *)value 12819 - (void)setGPBGenericValue:(GPBGenericValue *)value
12756 forGPBGenericValueKey:(GPBGenericValue *)key { 12820 forGPBGenericValueKey:(GPBGenericValue *)key {
12757 int idx = (key->valueBool ? 1 : 0); 12821 int idx = (key->valueBool ? 1 : 0);
12758 _values[idx] = value->valueDouble; 12822 _values[idx] = value->valueDouble;
12759 _valueSet[idx] = YES; 12823 _valueSet[idx] = YES;
12760 } 12824 }
12761 12825
12762 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block { 12826 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block {
12763 if (_valueSet[0]) { 12827 if (_valueSet[0]) {
12764 block(@"false", [NSString stringWithFormat:@"%.*lg", DBL_DIG, _values[0]]); 12828 block(@"false", [NSString stringWithFormat:@"%.*lg", DBL_DIG, _values[0]]);
12765 } 12829 }
12766 if (_valueSet[1]) { 12830 if (_valueSet[1]) {
12767 block(@"true", [NSString stringWithFormat:@"%.*lg", DBL_DIG, _values[1]]); 12831 block(@"true", [NSString stringWithFormat:@"%.*lg", DBL_DIG, _values[1]]);
12768 } 12832 }
12769 } 12833 }
12770 12834
12771 - (void)enumerateKeysAndValuesUsingBlock: 12835 - (void)enumerateKeysAndDoublesUsingBlock:
12772 (void (^)(BOOL key, double value, BOOL *stop))block { 12836 (void (^)(BOOL key, double value, BOOL *stop))block {
12773 BOOL stop = NO; 12837 BOOL stop = NO;
12774 if (_valueSet[0]) { 12838 if (_valueSet[0]) {
12775 block(NO, _values[0], &stop); 12839 block(NO, _values[0], &stop);
12776 } 12840 }
12777 if (!stop && _valueSet[1]) { 12841 if (!stop && _valueSet[1]) {
12778 block(YES, _values[1], &stop); 12842 block(YES, _values[1], &stop);
12779 } 12843 }
12780 } 12844 }
12781 12845
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
12822 _valueSet[i] = YES; 12886 _valueSet[i] = YES;
12823 _values[i] = otherDictionary->_values[i]; 12887 _values[i] = otherDictionary->_values[i];
12824 } 12888 }
12825 } 12889 }
12826 if (_autocreator) { 12890 if (_autocreator) {
12827 GPBAutocreatedDictionaryModified(_autocreator, self); 12891 GPBAutocreatedDictionaryModified(_autocreator, self);
12828 } 12892 }
12829 } 12893 }
12830 } 12894 }
12831 12895
12832 - (void)setValue:(double)value forKey:(BOOL)key { 12896 - (void)setDouble:(double)value forKey:(BOOL)key {
12833 int idx = (key ? 1 : 0); 12897 int idx = (key ? 1 : 0);
12834 _values[idx] = value; 12898 _values[idx] = value;
12835 _valueSet[idx] = YES; 12899 _valueSet[idx] = YES;
12836 if (_autocreator) { 12900 if (_autocreator) {
12837 GPBAutocreatedDictionaryModified(_autocreator, self); 12901 GPBAutocreatedDictionaryModified(_autocreator, self);
12838 } 12902 }
12839 } 12903 }
12840 12904
12841 - (void)removeValueForKey:(BOOL)aKey { 12905 - (void)removeDoubleForKey:(BOOL)aKey {
12842 _valueSet[aKey ? 1 : 0] = NO; 12906 _valueSet[aKey ? 1 : 0] = NO;
12843 } 12907 }
12844 12908
12845 - (void)removeAll { 12909 - (void)removeAll {
12846 _valueSet[0] = NO; 12910 _valueSet[0] = NO;
12847 _valueSet[1] = NO; 12911 _valueSet[1] = NO;
12848 } 12912 }
12849 12913
12850 @end 12914 @end
12851 12915
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
12936 [self class], _autocreator); 13000 [self class], _autocreator);
12937 [_values[0] release]; 13001 [_values[0] release];
12938 [_values[1] release]; 13002 [_values[1] release];
12939 [super dealloc]; 13003 [super dealloc];
12940 } 13004 }
12941 13005
12942 - (instancetype)copyWithZone:(NSZone *)zone { 13006 - (instancetype)copyWithZone:(NSZone *)zone {
12943 return [[GPBBoolObjectDictionary allocWithZone:zone] initWithDictionary:self]; 13007 return [[GPBBoolObjectDictionary allocWithZone:zone] initWithDictionary:self];
12944 } 13008 }
12945 13009
12946 - (BOOL)isEqual:(GPBBoolObjectDictionary *)other { 13010 - (BOOL)isEqual:(id)other {
12947 if (self == other) { 13011 if (self == other) {
12948 return YES; 13012 return YES;
12949 } 13013 }
12950 if (![other isKindOfClass:[GPBBoolObjectDictionary class]]) { 13014 if (![other isKindOfClass:[GPBBoolObjectDictionary class]]) {
12951 return NO; 13015 return NO;
12952 } 13016 }
12953 if (((_values[0] != nil) != (other->_values[0] != nil)) || 13017 GPBBoolObjectDictionary *otherDictionary = other;
12954 ((_values[1] != nil) != (other->_values[1] != nil))) { 13018 if (((_values[0] != nil) != (otherDictionary->_values[0] != nil)) ||
13019 ((_values[1] != nil) != (otherDictionary->_values[1] != nil))) {
12955 return NO; 13020 return NO;
12956 } 13021 }
12957 if (((_values[0] != nil) && (![_values[0] isEqual:other->_values[0]])) || 13022 if (((_values[0] != nil) && (![_values[0] isEqual:otherDictionary->_values[0]] )) ||
12958 ((_values[1] != nil) && (![_values[1] isEqual:other->_values[1]]))) { 13023 ((_values[1] != nil) && (![_values[1] isEqual:otherDictionary->_values[1]] ))) {
12959 return NO; 13024 return NO;
12960 } 13025 }
12961 return YES; 13026 return YES;
12962 } 13027 }
12963 13028
12964 - (NSUInteger)hash { 13029 - (NSUInteger)hash {
12965 return ((_values[0] != nil) ? 1 : 0) + ((_values[1] != nil) ? 1 : 0); 13030 return ((_values[0] != nil) ? 1 : 0) + ((_values[1] != nil) ? 1 : 0);
12966 } 13031 }
12967 13032
12968 - (NSString *)description { 13033 - (NSString *)description {
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
13226 @"%@: Autocreator must be cleared before release, autocreator: %@", 13291 @"%@: Autocreator must be cleared before release, autocreator: %@",
13227 [self class], _autocreator); 13292 [self class], _autocreator);
13228 [super dealloc]; 13293 [super dealloc];
13229 } 13294 }
13230 #endif // !defined(NS_BLOCK_ASSERTIONS) 13295 #endif // !defined(NS_BLOCK_ASSERTIONS)
13231 13296
13232 - (instancetype)copyWithZone:(NSZone *)zone { 13297 - (instancetype)copyWithZone:(NSZone *)zone {
13233 return [[GPBBoolEnumDictionary allocWithZone:zone] initWithDictionary:self]; 13298 return [[GPBBoolEnumDictionary allocWithZone:zone] initWithDictionary:self];
13234 } 13299 }
13235 13300
13236 - (BOOL)isEqual:(GPBBoolEnumDictionary *)other { 13301 - (BOOL)isEqual:(id)other {
13237 if (self == other) { 13302 if (self == other) {
13238 return YES; 13303 return YES;
13239 } 13304 }
13240 if (![other isKindOfClass:[GPBBoolEnumDictionary class]]) { 13305 if (![other isKindOfClass:[GPBBoolEnumDictionary class]]) {
13241 return NO; 13306 return NO;
13242 } 13307 }
13243 if ((_valueSet[0] != other->_valueSet[0]) || 13308 GPBBoolEnumDictionary *otherDictionary = other;
13244 (_valueSet[1] != other->_valueSet[1])) { 13309 if ((_valueSet[0] != otherDictionary->_valueSet[0]) ||
13310 (_valueSet[1] != otherDictionary->_valueSet[1])) {
13245 return NO; 13311 return NO;
13246 } 13312 }
13247 if ((_valueSet[0] && (_values[0] != other->_values[0])) || 13313 if ((_valueSet[0] && (_values[0] != otherDictionary->_values[0])) ||
13248 (_valueSet[1] && (_values[1] != other->_values[1]))) { 13314 (_valueSet[1] && (_values[1] != otherDictionary->_values[1]))) {
13249 return NO; 13315 return NO;
13250 } 13316 }
13251 return YES; 13317 return YES;
13252 } 13318 }
13253 13319
13254 - (NSUInteger)hash { 13320 - (NSUInteger)hash {
13255 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 13321 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
13256 } 13322 }
13257 13323
13258 - (NSString *)description { 13324 - (NSString *)description {
13259 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self]; 13325 NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p> {", [sel f class], self];
13260 if (_valueSet[0]) { 13326 if (_valueSet[0]) {
13261 [result appendFormat:@"NO: %d", _values[0]]; 13327 [result appendFormat:@"NO: %d", _values[0]];
13262 } 13328 }
13263 if (_valueSet[1]) { 13329 if (_valueSet[1]) {
13264 [result appendFormat:@"YES: %d", _values[1]]; 13330 [result appendFormat:@"YES: %d", _values[1]];
13265 } 13331 }
13266 [result appendString:@" }"]; 13332 [result appendString:@" }"];
13267 return result; 13333 return result;
13268 } 13334 }
13269 13335
13270 - (NSUInteger)count { 13336 - (NSUInteger)count {
13271 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0); 13337 return (_valueSet[0] ? 1 : 0) + (_valueSet[1] ? 1 : 0);
13272 } 13338 }
13273 13339
13274 - (BOOL)valueForKey:(BOOL)key value:(int32_t*)value { 13340 - (BOOL)getEnum:(int32_t*)value forKey:(BOOL)key {
13275 int idx = (key ? 1 : 0); 13341 int idx = (key ? 1 : 0);
13276 if (_valueSet[idx]) { 13342 if (_valueSet[idx]) {
13277 if (value) { 13343 if (value) {
13278 int32_t result = _values[idx]; 13344 int32_t result = _values[idx];
13279 if (!_validationFunc(result)) { 13345 if (!_validationFunc(result)) {
13280 result = kGPBUnrecognizedEnumeratorValue; 13346 result = kGPBUnrecognizedEnumeratorValue;
13281 } 13347 }
13282 *value = result; 13348 *value = result;
13283 } 13349 }
13284 return YES; 13350 return YES;
13285 } 13351 }
13286 return NO; 13352 return NO;
13287 } 13353 }
13288 13354
13289 - (BOOL)valueForKey:(BOOL)key rawValue:(int32_t*)rawValue { 13355 - (BOOL)getRawValue:(int32_t*)rawValue forKey:(BOOL)key {
13290 int idx = (key ? 1 : 0); 13356 int idx = (key ? 1 : 0);
13291 if (_valueSet[idx]) { 13357 if (_valueSet[idx]) {
13292 if (rawValue) { 13358 if (rawValue) {
13293 *rawValue = _values[idx]; 13359 *rawValue = _values[idx];
13294 } 13360 }
13295 return YES; 13361 return YES;
13296 } 13362 }
13297 return NO; 13363 return NO;
13298 } 13364 }
13299 13365
13300 - (void)enumerateKeysAndValuesUsingBlock: 13366 - (void)enumerateKeysAndRawValuesUsingBlock:
13301 (void (^)(BOOL key, int32_t value, BOOL *stop))block { 13367 (void (^)(BOOL key, int32_t value, BOOL *stop))block {
13302 BOOL stop = NO; 13368 BOOL stop = NO;
13303 if (_valueSet[0]) { 13369 if (_valueSet[0]) {
13304 block(NO, _values[0], &stop); 13370 block(NO, _values[0], &stop);
13305 } 13371 }
13306 if (!stop && _valueSet[1]) { 13372 if (!stop && _valueSet[1]) {
13307 block(YES, _values[1], &stop); 13373 block(YES, _values[1], &stop);
13308 } 13374 }
13309 } 13375 }
13310 13376
13311 - (void)enumerateKeysAndRawValuesUsingBlock: 13377 - (void)enumerateKeysAndEnumsUsingBlock:
13312 (void (^)(BOOL key, int32_t rawValue, BOOL *stop))block { 13378 (void (^)(BOOL key, int32_t rawValue, BOOL *stop))block {
13313 BOOL stop = NO; 13379 BOOL stop = NO;
13314 GPBEnumValidationFunc func = _validationFunc; 13380 GPBEnumValidationFunc func = _validationFunc;
13315 int32_t validatedValue; 13381 int32_t validatedValue;
13316 if (_valueSet[0]) { 13382 if (_valueSet[0]) {
13317 validatedValue = _values[0]; 13383 validatedValue = _values[0];
13318 if (!func(validatedValue)) { 13384 if (!func(validatedValue)) {
13319 validatedValue = kGPBUnrecognizedEnumeratorValue; 13385 validatedValue = kGPBUnrecognizedEnumeratorValue;
13320 } 13386 }
13321 block(NO, validatedValue, &stop); 13387 block(NO, validatedValue, &stop);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
13406 _valueSet[i] = YES; 13472 _valueSet[i] = YES;
13407 _values[i] = otherDictionary->_values[i]; 13473 _values[i] = otherDictionary->_values[i];
13408 } 13474 }
13409 } 13475 }
13410 if (_autocreator) { 13476 if (_autocreator) {
13411 GPBAutocreatedDictionaryModified(_autocreator, self); 13477 GPBAutocreatedDictionaryModified(_autocreator, self);
13412 } 13478 }
13413 } 13479 }
13414 } 13480 }
13415 13481
13416 - (void)setValue:(int32_t)value forKey:(BOOL)key { 13482 - (void)setEnum:(int32_t)value forKey:(BOOL)key {
13417 if (!_validationFunc(value)) { 13483 if (!_validationFunc(value)) {
13418 [NSException raise:NSInvalidArgumentException 13484 [NSException raise:NSInvalidArgumentException
13419 format:@"GPBBoolEnumDictionary: Attempt to set an unknown enum v alue (%d)", 13485 format:@"GPBBoolEnumDictionary: Attempt to set an unknown enum v alue (%d)",
13420 value]; 13486 value];
13421 } 13487 }
13422 int idx = (key ? 1 : 0); 13488 int idx = (key ? 1 : 0);
13423 _values[idx] = value; 13489 _values[idx] = value;
13424 _valueSet[idx] = YES; 13490 _valueSet[idx] = YES;
13425 if (_autocreator) { 13491 if (_autocreator) {
13426 GPBAutocreatedDictionaryModified(_autocreator, self); 13492 GPBAutocreatedDictionaryModified(_autocreator, self);
13427 } 13493 }
13428 } 13494 }
13429 13495
13430 - (void)setRawValue:(int32_t)rawValue forKey:(BOOL)key { 13496 - (void)setRawValue:(int32_t)rawValue forKey:(BOOL)key {
13431 int idx = (key ? 1 : 0); 13497 int idx = (key ? 1 : 0);
13432 _values[idx] = rawValue; 13498 _values[idx] = rawValue;
13433 _valueSet[idx] = YES; 13499 _valueSet[idx] = YES;
13434 if (_autocreator) { 13500 if (_autocreator) {
13435 GPBAutocreatedDictionaryModified(_autocreator, self); 13501 GPBAutocreatedDictionaryModified(_autocreator, self);
13436 } 13502 }
13437 } 13503 }
13438 13504
13439 - (void)removeValueForKey:(BOOL)aKey { 13505 - (void)removeEnumForKey:(BOOL)aKey {
13440 _valueSet[aKey ? 1 : 0] = NO; 13506 _valueSet[aKey ? 1 : 0] = NO;
13441 } 13507 }
13442 13508
13443 - (void)removeAll { 13509 - (void)removeAll {
13444 _valueSet[0] = NO; 13510 _valueSet[0] = NO;
13445 _valueSet[1] = NO; 13511 _valueSet[1] = NO;
13446 } 13512 }
13447 13513
13448 @end 13514 @end
13449 13515
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
13546 } 13612 }
13547 13613
13548 - (void)enumerateKeysAndObjectsWithOptions:(NSEnumerationOptions)opts 13614 - (void)enumerateKeysAndObjectsWithOptions:(NSEnumerationOptions)opts
13549 usingBlock:(void (^)(id key, 13615 usingBlock:(void (^)(id key,
13550 id obj, 13616 id obj,
13551 BOOL *stop))block { 13617 BOOL *stop))block {
13552 [_dictionary enumerateKeysAndObjectsWithOptions:opts usingBlock:block]; 13618 [_dictionary enumerateKeysAndObjectsWithOptions:opts usingBlock:block];
13553 } 13619 }
13554 13620
13555 @end 13621 @end
13622
13623 #pragma clang diagnostic pop
OLDNEW
« no previous file with comments | « third_party/protobuf/objectivec/GPBDictionary.h ('k') | third_party/protobuf/objectivec/GPBExtensionInternals.m » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698