diff options
author | dmaclach <dmaclach@google.com> | 2016-10-07 12:10:23 -0400 |
---|---|---|
committer | Thomas Van Lenten <thomasvl@google.com> | 2016-10-07 12:21:06 -0400 |
commit | 42124b3691197c3c4f52f069775fa0390a8ff942 (patch) | |
tree | ebd373d398ea64b45bdc1d196fa0a2c5f57cabfd /Foundation/GTMNSDictionary+CaseInsensitive.m | |
parent | 57eeab4193210df8ab0c81e9d3f1ee1ad3e24492 (diff) |
First cut at pruning things/updating things.
Remove a bunch of code that Google stopped using/maintaining rather than trying
to update it it. Some would be hard to update, some actually has system provided
replacements; others are patterns that just don't seem as common now.
Prune out the code related to macOS <= 10.5, start pruning some of the really
old iOS support also.
Get the projects mostly limping again with modern Xcodes so tests can be run.
If someone ends up on this commit via history for something they still find
as useful, feel free to do a pull request to bring the snippet of code back to
life and update it for current SDKs.
Diffstat (limited to 'Foundation/GTMNSDictionary+CaseInsensitive.m')
-rw-r--r-- | Foundation/GTMNSDictionary+CaseInsensitive.m | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/Foundation/GTMNSDictionary+CaseInsensitive.m b/Foundation/GTMNSDictionary+CaseInsensitive.m deleted file mode 100644 index 96494c2..0000000 --- a/Foundation/GTMNSDictionary+CaseInsensitive.m +++ /dev/null @@ -1,116 +0,0 @@ -// -// GTMNSDictionary+CaseInsensitive.m -// -// Copyright 2009 Google Inc. -// -// 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 "GTMNSDictionary+CaseInsensitive.h" -#import "GTMDefines.h" -#import <CoreFoundation/CoreFoundation.h> - -@interface NSMutableDictionary (GTMNSMutableDictionaryCaseInsensitiveAdditions) - -// Returns a mutable equivalent to GTMNSDictionaryCaseInsensitiveAdditions. -- (id)gtm_initWithDictionaryCaseInsensitive:(NSDictionary *)dictionary; - -@end - -static Boolean CaseInsensitiveEqualCallback(const void *a, const void *b) { - id idA = (id)a; - id idB = (id)b; - Boolean ret = FALSE; - if ([idA isKindOfClass:[NSString class]] && - [idB isKindOfClass:[NSString class]]) { - ret = ([idA compare:idB options:NSCaseInsensitiveSearch|NSLiteralSearch] - == NSOrderedSame); - } else { - ret = [idA isEqual:idB]; - } - return ret; -} - -static CFHashCode CaseInsensitiveHashCallback(const void *value) { - id idValue = (id)value; - CFHashCode ret = 0; - if ([idValue isKindOfClass:[NSString class]]) { - ret = [[idValue lowercaseString] hash]; - } else { - ret = [idValue hash]; - } - return ret; -} - -@implementation NSDictionary (GTMNSDictionaryCaseInsensitiveAdditions) - -- (id)gtm_initWithDictionaryCaseInsensitive:(NSDictionary *)dictionary { - [self release]; - self = nil; - - CFIndex count = 0; - void *keys = NULL; - void *values = NULL; - - if (dictionary) { - count = CFDictionaryGetCount((CFDictionaryRef)dictionary); - - if (count) { - keys = malloc(count * sizeof(void *)); - values = malloc(count * sizeof(void *)); - if (!keys || !values) { - free(keys); - free(values); - return self; - } - - CFDictionaryGetKeysAndValues((CFDictionaryRef)dictionary, keys, values); - } - } - - CFDictionaryKeyCallBacks keyCallbacks = kCFCopyStringDictionaryKeyCallBacks; - _GTMDevAssert(keyCallbacks.version == 0, - @"CFDictionaryKeyCallBacks structure updated"); - keyCallbacks.equal = CaseInsensitiveEqualCallback; - keyCallbacks.hash = CaseInsensitiveHashCallback; - - self = (id)CFDictionaryCreate(kCFAllocatorDefault, - keys, values, count, &keyCallbacks, - &kCFTypeDictionaryValueCallBacks); - - free(keys); - free(values); - - return self; -} - -+ (id)gtm_dictionaryWithDictionaryCaseInsensitive:(NSDictionary *)dictionary { - return [[[self alloc] - gtm_initWithDictionaryCaseInsensitive:dictionary] autorelease]; -} - -@end - -@implementation NSMutableDictionary (GTMNSMutableDictionaryCaseInsensitiveAdditions) - -- (id)gtm_initWithDictionaryCaseInsensitive:(NSDictionary *)dictionary { - if ((self = [super gtm_initWithDictionaryCaseInsensitive:dictionary])) { - id copy = (id)CFDictionaryCreateMutableCopy(kCFAllocatorDefault, 0, - (CFDictionaryRef)self); - [self release]; - self = copy; - } - return self; -} - -@end |