From e619a410d3bbfb14091baa2fd952cad67e562b64 Mon Sep 17 00:00:00 2001 From: rfm Date: Fri, 22 May 2015 15:34:25 +0000 Subject: [PATCH] optimisation and compatiblity tweaks git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@38524 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 7 +++++++ Source/NSKeyValueCoding.m | 12 ++++++------ Source/NSString.m | 8 +++++--- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 95040072c..cdf13d506 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2015-05-22 Richard Frith-Macdonald + + * Source/NSString.m: + * Source/GSString.m: + Some optimisation. Fix -hasPrefix: and -hasSuffix: to use literal + search as on OSX. + 2015-05-15 Richard Frith-Macdonald * Documentation/install.texi: diff --git a/Source/NSKeyValueCoding.m b/Source/NSKeyValueCoding.m index 0dc3534d6..0713f51f4 100644 --- a/Source/NSKeyValueCoding.m +++ b/Source/NSKeyValueCoding.m @@ -287,7 +287,7 @@ static id ValueForKey(NSObject *self, const char *key, unsigned size) - (NSMutableSet*) mutableSetValueForKeyPath: (NSString*)aKey { - NSRange r = [aKey rangeOfString: @"."]; + NSRange r = [aKey rangeOfString: @"." options: NSLiteralSearch]; if (r.length == 0) { @@ -309,7 +309,7 @@ static id ValueForKey(NSObject *self, const char *key, unsigned size) - (NSMutableArray*) mutableArrayValueForKeyPath: (NSString*)aKey { - NSRange r = [aKey rangeOfString: @"."]; + NSRange r = [aKey rangeOfString: @"." options: NSLiteralSearch]; if (r.length == 0) { @@ -373,7 +373,7 @@ static id ValueForKey(NSObject *self, const char *key, unsigned size) - (void) setValue: (id)anObject forKeyPath: (NSString*)aKey { - NSRange r = [aKey rangeOfString: @"."]; + NSRange r = [aKey rangeOfString: @"." options: NSLiteralSearch]; #ifdef WANT_DEPRECATED_KVC_COMPAT IMP o = [self methodForSelector: @selector(takeValue:forKeyPath:)]; @@ -499,7 +499,7 @@ static id ValueForKey(NSObject *self, const char *key, unsigned size) forKeyPath: (NSString*)aKey error: (NSError**)anError { - NSRange r = [aKey rangeOfString: @"."]; + NSRange r = [aKey rangeOfString: @"." options: NSLiteralSearch]; if (r.length == 0) { @@ -532,7 +532,7 @@ static id ValueForKey(NSObject *self, const char *key, unsigned size) - (id) valueForKeyPath: (NSString*)aKey { - NSRange r = [aKey rangeOfString: @"."]; + NSRange r = [aKey rangeOfString: @"." options: NSLiteralSearch]; if (r.length == 0) { @@ -858,7 +858,7 @@ static id ValueForKey(NSObject *self, const char *key, unsigned size) - (void) takeValue: (id)anObject forKeyPath: (NSString*)aKey { - NSRange r = [aKey rangeOfString: @"."]; + NSRange r = [aKey rangeOfString: @"." options: NSLiteralSearch]; GSOnceMLog(@"This method is deprecated, use -setValue:forKeyPath:"); if (r.length == 0) diff --git a/Source/NSString.m b/Source/NSString.m index 345dc18a5..77c638601 100644 --- a/Source/NSString.m +++ b/Source/NSString.m @@ -2532,7 +2532,7 @@ GSICUCollatorOpen(NSStringCompareOptions mask, NSLocale *locale) } - (NSUInteger) indexOfString: (NSString*)substring - fromIndex: (NSUInteger)index + fromIndex: (NSUInteger)index { NSRange range = {index, [self length] - index}; @@ -2638,9 +2638,10 @@ static BOOL (*nbImp)(id, SEL, unichar) = 0; - (BOOL) hasPrefix: (NSString*)aString { NSRange range = NSMakeRange(0, [self length]); + NSUInteger mask = NSLiteralSearch | NSAnchoredSearch; range = [self rangeOfString: aString - options: NSAnchoredSearch + options: mask range: range locale: nil]; return (range.length > 0) ? YES : NO; @@ -2652,9 +2653,10 @@ static BOOL (*nbImp)(id, SEL, unichar) = 0; - (BOOL) hasSuffix: (NSString*)aString { NSRange range = NSMakeRange(0, [self length]); + NSUInteger mask = NSLiteralSearch | NSAnchoredSearch | NSBackwardsSearch; range = [self rangeOfString: aString - options: NSAnchoredSearch | NSBackwardsSearch + options: mask range: range locale: nil]; return (range.length > 0) ? YES : NO;