Some final tiny optimisations for testing string equality.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@3045 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
richard 1998-10-09 04:24:56 +00:00
parent f57bb849fa
commit 7694a7f14e
7 changed files with 67 additions and 38 deletions

View file

@ -66,6 +66,9 @@
#include <gnustep/base/NSGString.h>
#include <gnustep/base/NSGCString.h>
#include <gnustep/base/fast.x>
// Uncomment when implemented
static NSStringEncoding _availableEncodings[] = {
NSASCIIStringEncoding,
@ -1406,11 +1409,19 @@ else
- (BOOL) isEqual: (id)anObject
{
if (anObject == self)
return YES;
if ([anObject isKindOfClass:[NSString class]] == YES)
return [self isEqualToString:anObject];
return NO;
if (anObject == self) {
return YES;
}
if (anObject != nil) {
Class c = fastClassOfInstance(anObject);
if (c != nil) {
if (fastClassIsKindOfClass(c, _fastCls._NSString)) {
return [self isEqualToString: anObject];
}
}
}
return NO;
}
- (BOOL) isEqualToString: (NSString*)aString
@ -1572,7 +1583,7 @@ else
/*
* The hash caching in our concrete strin classes uses zero to denote
* an empty cache value, so we must not return a hash of zero.
* an empty cache value, so we MUST NOT return a hash of zero.
*/
if (ret == 0)
ret = 0xffffffff;
@ -2640,12 +2651,13 @@ else
- (void) encodeWithCoder: anEncoder
{
[super encodeWithCoder:anEncoder];
[self subclassResponsibility:_cmd];
}
- initWithCoder: aDecoder
{
return [super initWithCoder:aDecoder];
[self subclassResponsibility:_cmd];
return self;
}
@end