// 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) 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