aboutsummaryrefslogtreecommitdiff
path: root/objectivec/GPBExtensionRegistry.m
diff options
context:
space:
mode:
authorJon Skeet <skeet@pobox.com>2015-06-17 15:03:47 +0100
committerJon Skeet <skeet@pobox.com>2015-06-17 15:03:47 +0100
commite2acd854250b449a3fdeef2ad52402c4c5d78259 (patch)
treea08126762b6c76d56fde8ce443f8dff36408b6e0 /objectivec/GPBExtensionRegistry.m
parentd9dc05e500807a6f0cd10d4637c599acc9a6aecf (diff)
parentb36395b2bac88f70070544c325bc09234cb1f1a6 (diff)
downloadprotobuf-e2acd854250b449a3fdeef2ad52402c4c5d78259.tar.gz
protobuf-e2acd854250b449a3fdeef2ad52402c4c5d78259.tar.bz2
protobuf-e2acd854250b449a3fdeef2ad52402c4c5d78259.zip
Merged master
Diffstat (limited to 'objectivec/GPBExtensionRegistry.m')
-rw-r--r--objectivec/GPBExtensionRegistry.m32
1 files changed, 17 insertions, 15 deletions
diff --git a/objectivec/GPBExtensionRegistry.m b/objectivec/GPBExtensionRegistry.m
index 4f234f55..df61a17b 100644
--- a/objectivec/GPBExtensionRegistry.m
+++ b/objectivec/GPBExtensionRegistry.m
@@ -32,7 +32,6 @@
#import "GPBBootstrap.h"
#import "GPBDescriptor.h"
-#import "GPBExtensionField.h"
@implementation GPBExtensionRegistry {
// TODO(dmaclach): Reimplement with CFDictionaries that don't use
@@ -60,31 +59,34 @@
return result;
}
-- (NSMutableDictionary *)extensionMapForContainingType:
- (GPBDescriptor *)containingType {
+- (NSMutableDictionary *)extensionMapForContainingMessageClass:
+ (Class)containingMessageClass {
NSMutableDictionary *extensionMap =
- [mutableClassMap_ objectForKey:containingType];
+ [mutableClassMap_ objectForKey:containingMessageClass];
if (extensionMap == nil) {
extensionMap = [NSMutableDictionary dictionary];
- [mutableClassMap_ setObject:extensionMap forKey:containingType];
+ [mutableClassMap_ setObject:extensionMap
+ forKey:(id<NSCopying>)containingMessageClass];
}
return extensionMap;
}
-- (void)addExtension:(GPBExtensionField *)extension {
+- (void)addExtension:(GPBExtensionDescriptor *)extension {
if (extension == nil) {
return;
}
- GPBDescriptor *containingType = [extension containingType];
+ Class containingMessageClass = extension.containingMessageClass;
NSMutableDictionary *extensionMap =
- [self extensionMapForContainingType:containingType];
- [extensionMap setObject:extension forKey:@([extension fieldNumber])];
+ [self extensionMapForContainingMessageClass:containingMessageClass];
+ [extensionMap setObject:extension forKey:@(extension.fieldNumber)];
}
-- (GPBExtensionField *)getExtension:(GPBDescriptor *)containingType
- fieldNumber:(NSInteger)fieldNumber {
- NSDictionary *extensionMap = [mutableClassMap_ objectForKey:containingType];
+- (GPBExtensionDescriptor *)extensionForDescriptor:(GPBDescriptor *)descriptor
+ fieldNumber:(NSInteger)fieldNumber {
+ Class messageClass = descriptor.messageClass;
+ NSDictionary *extensionMap =
+ [mutableClassMap_ objectForKey:messageClass];
return [extensionMap objectForKey:@(fieldNumber)];
}
@@ -94,11 +96,11 @@
return;
}
NSMutableDictionary *otherClassMap = registry->mutableClassMap_;
- for (GPBDescriptor *containingType in otherClassMap) {
+ for (Class containingMessageClass in otherClassMap) {
NSMutableDictionary *extensionMap =
- [self extensionMapForContainingType:containingType];
+ [self extensionMapForContainingMessageClass:containingMessageClass];
NSMutableDictionary *otherExtensionMap =
- [registry extensionMapForContainingType:containingType];
+ [registry extensionMapForContainingMessageClass:containingMessageClass];
[extensionMap addEntriesFromDictionary:otherExtensionMap];
}
}