From 3b093cfe4f7018b57cb6d25e03fb51c1a9342cd8 Mon Sep 17 00:00:00 2001 From: CaS Date: Tue, 24 Apr 2001 12:28:07 +0000 Subject: [PATCH] Key-value update git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@9682 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 ++++ Source/NSObject.m | 62 +++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9fcd61346..b1453957a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2001-04-24 Richard Frith-Macdonald + + * Source/NSObject.m: Fixes for string capitalisation in + key-value methods. + 2001-04-23 Adam Fedor * configure.in: Simplify NeXT checks. diff --git a/Source/NSObject.m b/Source/NSObject.m index 71acee583..c45a5a7ff 100644 --- a/Source/NSObject.m +++ b/Source/NSObject.m @@ -1922,13 +1922,26 @@ GSSetValue(NSObject *self, NSString *key, id val, SEL sel, unsigned size; unsigned off; NSString *name; + NSString *cap; if ([[self class] useStoredAccessor] == NO) { return [self valueForKey: aKey]; } - name = [NSString stringWithFormat: @"_get%@", [aKey capitalizedString]]; + size = [aKey length]; + if (size < 1) + { + [NSException raise: NSInvalidArgumentException + format: @"storedValueForKey: ... empty key"]; + } + cap = [[aKey substringToIndex: 1] uppercaseString]; + if (size > 1) + { + cap = [cap stringByAppendingString: [aKey substringFromIndex: 1]]; + } + + name = [NSString stringWithFormat: @"_get%@", cap]; sel = NSSelectorFromString(name); if (sel == 0 || [self respondsToSelector: sel] == NO) { @@ -1952,8 +1965,7 @@ GSSetValue(NSObject *self, NSString *key, id val, SEL sel, } if (type == NULL) { - name = [NSString stringWithFormat: @"get%@", - [aKey capitalizedString]]; + name = [NSString stringWithFormat: @"get%@", cap]; sel = NSSelectorFromString(name); if (sel == 0 || [self respondsToSelector: sel] == NO) { @@ -1985,7 +1997,18 @@ GSSetValue(NSObject *self, NSString *key, id val, SEL sel, return; } - cap = [aKey capitalizedString]; + size = [aKey length]; + if (size < 1) + { + [NSException raise: NSInvalidArgumentException + format: @"takeStoredValue:forKey: ... empty key"]; + } + cap = [[aKey substringToIndex: 1] uppercaseString]; + if (size > 1) + { + cap = [cap stringByAppendingString: [aKey substringFromIndex: 1]]; + } + name = [NSString stringWithFormat: @"_set%@:", cap]; type = NULL; sel = NSSelectorFromString(name); @@ -2024,7 +2047,18 @@ GSSetValue(NSObject *self, NSString *key, id val, SEL sel, NSString *cap; NSString *name; - cap = [aKey capitalizedString]; + size = [aKey length]; + if (size < 1) + { + [NSException raise: NSInvalidArgumentException + format: @"takeValue:forKey: ... empty key"]; + } + cap = [[aKey substringToIndex: 1] uppercaseString]; + if (size > 1) + { + cap = [cap stringByAppendingString: [aKey substringFromIndex: 1]]; + } + name = [NSString stringWithFormat: @"set%@:", cap]; type = NULL; sel = NSSelectorFromString(name); @@ -2094,12 +2128,25 @@ GSSetValue(NSObject *self, NSString *key, id val, SEL sel, - (id) valueForKey: (NSString*)aKey { SEL sel = 0; + NSString *cap; NSString *name = nil; const char *type = NULL; unsigned size; unsigned off; - name = [NSString stringWithFormat: @"get%@", [aKey capitalizedString]]; + size = [aKey length]; + if (size < 1) + { + [NSException raise: NSInvalidArgumentException + format: @"valueForKey: ... empty key"]; + } + cap = [[aKey substringToIndex: 1] uppercaseString]; + if (size > 1) + { + cap = [cap stringByAppendingString: [aKey substringFromIndex: 1]]; + } + + name = [@"get" stringByAppendingString: cap]; sel = NSSelectorFromString(name); if (sel == 0 || [self respondsToSelector: sel] == NO) { @@ -2107,8 +2154,7 @@ GSSetValue(NSObject *self, NSString *key, id val, SEL sel, sel = NSSelectorFromString(name); if (sel == 0 || [self respondsToSelector: sel] == NO) { - name = [NSString stringWithFormat: @"_get%@", - [aKey capitalizedString]]; + name = [@"_get" stringByAppendingString: cap]; sel = NSSelectorFromString(name); if (sel == 0 || [self respondsToSelector: sel] == NO) {