session-ios/Libraries/ProtocolBuffers/MutableExtensionRegistry.m

66 lines
1.7 KiB
Objective-C

// Copyright 2008 Cyrus Najmabadi
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#import "MutableExtensionRegistry.h"
#import "ExtensionField.h"
@interface PBMutableExtensionRegistry()
@property (retain) NSMutableDictionary* mutableClassMap;
@end
@implementation PBMutableExtensionRegistry
@synthesize mutableClassMap;
- (void) dealloc {
self.mutableClassMap = nil;
}
- (id) initWithClassMap:(NSMutableDictionary*) mutableClassMap_ {
if ((self = [super initWithClassMap:mutableClassMap_])) {
self.mutableClassMap = mutableClassMap_;
}
return self;
}
+ (PBMutableExtensionRegistry*) registry {
return [[PBMutableExtensionRegistry alloc] initWithClassMap:[NSMutableDictionary dictionary]];
}
- (void) addExtension:(id<PBExtensionField>) extension {
if (extension == nil) {
return;
}
Class extendedClass = [extension extendedClass];
id key = [self keyForClass:extendedClass];
NSMutableDictionary* extensionMap = [classMap objectForKey:key];
if (extensionMap == nil) {
extensionMap = [NSMutableDictionary dictionary];
[mutableClassMap setObject:extensionMap forKey:key];
}
[extensionMap setObject:extension
forKey:[NSNumber numberWithInteger:[extension fieldNumber]]];
}
@end