This is RCStringComp.m in view mode; [Download] [Up]
#import <RCString.h> /* Copyright (C) 1992. Bruce Ediger. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License. */ // // implementation of "comparison" methods // // Is it better to use strcmp() or bcmp()? bcmp() // may be faster since it can block out the comparison // looping. Or is a custom routine better? @implementation RCString (Comparison) // returns // < 0 if this object is "before" anotherObject // 0 if this object is "same as" anotherObject // > 0 if this object is "in front of" anotherObject // // should the comparison be case-insensitive if _either_ // object is marked as case-insensitive? - (int)compareWithObject: (RCString *)anotherObject { int irRetval; if (p == NULL || p->s == NULL || anotherObject->p == NULL || anotherObject->p->s == NULL) return 0; // one quick special case: are references to the same internal rep? if (p->n > 1 && p == anotherObject->p) return 0; if (!yCaseSensitive) { RCString *oThisObject, *oOtherObject; oThisObject = [RCString newFromObject:self]; oOtherObject = [RCString newFromObject:anotherObject]; [oThisObject toUpper]; [oOtherObject toUpper]; irRetval = strcmp([oThisObject data], [oOtherObject data]); [oThisObject free]; [oOtherObject free]; } else { irRetval = strcmp([self data], [anotherObject data]); } return irRetval; } // returns // < 0 if this object is "before" anAsciiString // 0 if this object is "same as" anAsciiString // > 0 if this object is "in front of" anAsciiString - (int)compareWithString: (char *)anAsciiString { int irRetval; RCString *oTmp = [RCString newFromString:anAsciiString]; irRetval = [self compareWithObject:oTmp]; [oTmp free]; return irRetval; } // set whether or not lexicographic comparisons // are case sensitive. - caseSensitive: (BOOL)isOrNot { yCaseSensitive = isOrNot; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.