@@ -235,11 +235,11 @@ - (size_t)length { return length; } -- (OFString*)clone +- (id)copy { return [OFString stringWithCString: string]; } - setTo: (OFString*)str @@ -268,13 +268,26 @@ memcpy(string, [str cString], length + 1); return self; } -- (int)compareTo: (OFString*)str +- (BOOL)isEqual: (id)obj +{ + if (![obj isKindOf: [OFString class]]) + return NO; + if (strcmp(string, [obj cString])) + return NO; + + return YES; +} + +- (int)compare: (id)obj { - return strcmp(string, [str cString]); + if (![obj isKindOf: [OFString class]]) + @throw [OFInvalidArgumentException newWithClass: [self class]]; + + return strcmp(string, [obj cString]); } - append: (OFString*)str { return [self appendCString: [str cString]];