From 763dba098eb02f7f8fa4ca3dcf083cb6f946954a Mon Sep 17 00:00:00 2001 From: FredKiefer Date: Tue, 12 Sep 2000 23:09:50 +0000 Subject: [PATCH] Added basic implementation for missing methods [stringWithUTF8String:], [initWithUTF8String:], [UTF8String], [stringWithContentsOfURL:], [initWithContentsOfURL:], [writeToURL:atomically:], [localizedCaseInsensitiveCompare:], [localizedCompare:], [compare:options:range:locale:] git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@7488 72102866-910b-0410-8b05-ffd578937521 --- Source/NSString.m | 81 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/Source/NSString.m b/Source/NSString.m index 023c45a8c..caaef9c96 100644 --- a/Source/NSString.m +++ b/Source/NSString.m @@ -308,12 +308,24 @@ handle_printf_atsign (FILE *stream, NSDefaultMallocZone()] initWithCString: byteString length: length]); } ++ (id)stringWithUTF8String:(const char *)bytes +{ + return AUTORELEASE([[self allocWithZone: NSDefaultMallocZone()] + initWithUTF8String: bytes]); +} + + (id) stringWithContentsOfFile: (NSString *)path { return AUTORELEASE([[self allocWithZone: NSDefaultMallocZone()] initWithContentsOfFile: path]); } ++ (id) stringWithContentsOfURL: (NSURL *)url +{ + return AUTORELEASE([[self allocWithZone: NSDefaultMallocZone()] + initWithContentsOfURL: url]); +} + + (id) stringWithFormat: (NSString*)format,... { va_list ap; @@ -459,6 +471,12 @@ handle_printf_atsign (FILE *stream, fromZone: z]; } +- (id) initWithUTF8String:(const char *)bytes +{ + [self subclassResponsibility: _cmd]; + return self; +} + - (id) initWithFormat: (NSString*)format,... { va_list ap; @@ -847,6 +865,24 @@ handle_printf_atsign (FILE *stream, return [self initWithData: d encoding: enc]; } +- (id) initWithContentsOfURL: (NSURL*)url +{ + NSStringEncoding enc; + NSData *d = [NSData_class dataWithContentsOfURL: url]; + const unsigned char *test; + + if (d == nil) + return nil; + if ([d length] < 2) + return @""; + test = [d bytes]; + if (test && (((test[0]==0xFF) && (test[1]==0xFE)) || ((test[1]==0xFF) && (test[0]==0xFE)))) + enc = NSUnicodeStringEncoding; + else + enc = [NSString defaultCStringEncoding]; + return [self initWithData: d encoding: enc]; +} + - (id) init { self = [super init]; @@ -1619,6 +1655,16 @@ handle_printf_atsign (FILE *stream, return (const char*)[d bytes]; } +- (const char *)UTF8String +{ + NSData *d; + + // FIXME: This won't be NULL + d = [self dataUsingEncoding: NSUTF8StringEncoding + allowLossyConversion: NO]; + return (const char*)[d bytes]; +} + - (unsigned) cStringLength { NSData *d; @@ -2491,6 +2537,33 @@ handle_printf_atsign (FILE *stream, range: ((NSRange){0, [self length]})]; } +- (NSComparisonResult)compare:(NSString *)string + options:(unsigned)mask + range:(NSRange)compareRange + locale:(NSDictionary *)dict +{ + // FIXME: This does only a normal compare + return [self compare: string + options: mask + range: compareRange]; +} + +- (NSComparisonResult)localizedCompare:(NSString *)string +{ + // FIXME: This does only a normal compare + return [self compare: string + options: 0 + range: ((NSRange){0, [self length]})]; +} + +- (NSComparisonResult)localizedCaseInsensitiveCompare:(NSString *)string +{ + // FIXME: This does only a normal compare + return [self compare: string + options: NSCaseInsensitiveSearch + range: ((NSRange){0, [self length]})]; +} + - (BOOL) writeToFile: (NSString*)filename atomically: (BOOL)useAuxiliaryFile { @@ -2500,6 +2573,14 @@ handle_printf_atsign (FILE *stream, return [d writeToFile: filename atomically: useAuxiliaryFile]; } +- (BOOL)writeToURL:(NSURL *)anURL atomically:(BOOL)atomically +{ + id d; + if (!(d = [self dataUsingEncoding: [NSString defaultCStringEncoding]])) + d = [self dataUsingEncoding: NSUnicodeStringEncoding]; + return [d writeToURL: anURL atomically: atomically]; +} + - (void) descriptionWithLocale: (NSDictionary*)aLocale indent: (unsigned)level to: (id)output