@@ -9,103 +9,76 @@ * the packaging of this file. */ #import #import + #import "OFString.h" +#import "OFConstCString.h" +#import "OFConstWideCString.h" +#import "OFCString.h" +#import "OFWideCString.h" #import "OFExceptions.h" @implementation OFString -+ new: (const char*)str -{ - return [[OFString alloc] init: str]; -} - -- init -{ - return [self init: NULL]; -} - -- init: (const char*)str -{ - if ((self = [super init])) { - if (str == NULL) { - length = 0; - string = NULL; - } else { - length = strlen(str); - string = [self getMem: length + 1]; - memcpy(string, str, length + 1); - } - } - return self; ++ newWithConstCString: (const char*)str +{ + return [[OFConstCString alloc] initWithConstCString: str]; +} + ++ newWithConstWideCString: (const wchar_t*)str +{ + return [[OFConstWideCString alloc] initWithConstWideCString: str]; +} + ++ newWithCString: (char*)str +{ + return [[OFCString alloc] initWithCString: str]; +} + ++ newWithWideCString: (wchar_t*)str +{ + return [[OFWideCString alloc] initWithWideCString: str]; } - (char*)cString { - return string; + @throw [OFNotImplementedException new: self withMethod: "cString"]; + return NULL; +} + +- (wchar_t*)wcString +{ + @throw [OFNotImplementedException new: self withMethod: "wcString"]; + return NULL; } - (size_t)length { return length; } -- (OFString*)setTo: (OFConstString*)str -{ - char *newstr; - size_t newlen; - - if ([str cString] == NULL) { - [self freeMem: string]; - - length = 0; - string = NULL; - - return self; - } - - newlen = [str length]; - newstr = [self getMem: newlen + 1]; - memcpy(newstr, [str cString], newlen + 1); - - if (string != NULL) - [self freeMem: string]; - - length = newlen; - string = newstr; - +- (OFString*)setTo: (OFString*)str +{ + [self free]; + self = [str clone]; return self; } - (OFString*)clone { - return [OFString new: string]; -} - -- (OFString*)append: (OFConstString*)str -{ - char *newstr; - size_t newlen, strlength; - - if (str == NULL) - return [self setTo: str]; - - strlength = [str length]; - newlen = length + strlength; - - newstr = [self resizeMem: string - toSize: newlen + 1]; - - memcpy(newstr + length, [str cString], strlength + 1); - - length = newlen; - string = newstr; - - return self; -} - -- (int)compare: (OFConstString*)str -{ - return strcmp(string, [str cString]); + @throw [OFNotImplementedException new: self withMethod: "clone"]; + return nil; +} + +- (int)compare: (OFString*)str +{ + @throw [OFNotImplementedException new: self withMethod: "compare:"]; + return 0; +} + +- (OFString*)append: (OFString*)str +{ + @throw [OFNotImplementedException new: self withMethod: "append:"]; + return nil; } @end