@@ -376,16 +376,16 @@ @interface OFString_placeholder: OFString @end @implementation OFString_placeholder -- init +- (instancetype)init { return (id)[[OFString_UTF8 alloc] init]; } -- initWithUTF8String: (const char *)UTF8String +- (instancetype)initWithUTF8String: (const char *)UTF8String { id string; size_t length; void *storage; @@ -396,12 +396,12 @@ return (id)[string of_initWithUTF8String: UTF8String length: length storage: storage]; } -- initWithUTF8String: (const char *)UTF8String - length: (size_t)UTF8StringLength +- (instancetype)initWithUTF8String: (const char *)UTF8String + length: (size_t)UTF8StringLength { id string; void *storage; string = of_alloc_object([OFString_UTF8 class], @@ -410,20 +410,20 @@ return (id)[string of_initWithUTF8String: UTF8String length: UTF8StringLength storage: storage]; } -- initWithUTF8StringNoCopy: (char *)UTF8String - freeWhenDone: (bool)freeWhenDone +- (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String + freeWhenDone: (bool)freeWhenDone { return (id)[[OFString_UTF8 alloc] initWithUTF8StringNoCopy: UTF8String freeWhenDone: freeWhenDone]; } -- initWithCString: (const char *)cString - encoding: (of_string_encoding_t)encoding +- (instancetype)initWithCString: (const char *)cString + encoding: (of_string_encoding_t)encoding { if (encoding == OF_STRING_ENCODING_UTF_8) { id string; size_t length; void *storage; @@ -439,13 +439,13 @@ return (id)[[OFString_UTF8 alloc] initWithCString: cString encoding: encoding]; } -- initWithCString: (const char *)cString - encoding: (of_string_encoding_t)encoding - length: (size_t)cStringLength +- (instancetype)initWithCString: (const char *)cString + encoding: (of_string_encoding_t)encoding + length: (size_t)cStringLength { if (encoding == OF_STRING_ENCODING_UTF_8) { id string; void *storage; @@ -460,86 +460,86 @@ return (id)[[OFString_UTF8 alloc] initWithCString: cString encoding: encoding length: cStringLength]; } -- initWithData: (OFData *)data - encoding: (of_string_encoding_t)encoding +- (instancetype)initWithData: (OFData *)data + encoding: (of_string_encoding_t)encoding { return (id)[[OFString_UTF8 alloc] initWithData: data encoding: encoding]; } -- initWithString: (OFString *)string +- (instancetype)initWithString: (OFString *)string { return (id)[[OFString_UTF8 alloc] initWithString: string]; } -- initWithCharacters: (const of_unichar_t *)string - length: (size_t)length +- (instancetype)initWithCharacters: (const of_unichar_t *)string + length: (size_t)length { return (id)[[OFString_UTF8 alloc] initWithCharacters: string length: length]; } -- initWithUTF16String: (const char16_t *)string +- (instancetype)initWithUTF16String: (const char16_t *)string { return (id)[[OFString_UTF8 alloc] initWithUTF16String: string]; } -- initWithUTF16String: (const char16_t *)string - length: (size_t)length +- (instancetype)initWithUTF16String: (const char16_t *)string + length: (size_t)length { return (id)[[OFString_UTF8 alloc] initWithUTF16String: string length: length]; } -- initWithUTF16String: (const char16_t *)string - byteOrder: (of_byte_order_t)byteOrder +- (instancetype)initWithUTF16String: (const char16_t *)string + byteOrder: (of_byte_order_t)byteOrder { return (id)[[OFString_UTF8 alloc] initWithUTF16String: string byteOrder: byteOrder]; } -- initWithUTF16String: (const char16_t *)string - length: (size_t)length - byteOrder: (of_byte_order_t)byteOrder +- (instancetype)initWithUTF16String: (const char16_t *)string + length: (size_t)length + byteOrder: (of_byte_order_t)byteOrder { return (id)[[OFString_UTF8 alloc] initWithUTF16String: string length: length byteOrder: byteOrder]; } -- initWithUTF32String: (const char32_t *)string +- (instancetype)initWithUTF32String: (const char32_t *)string { return (id)[[OFString_UTF8 alloc] initWithUTF32String: string]; } -- initWithUTF32String: (const char32_t *)string - length: (size_t)length +- (instancetype)initWithUTF32String: (const char32_t *)string + length: (size_t)length { return (id)[[OFString_UTF8 alloc] initWithUTF32String: string length: length]; } -- initWithUTF32String: (const char32_t *)string - byteOrder: (of_byte_order_t)byteOrder +- (instancetype)initWithUTF32String: (const char32_t *)string + byteOrder: (of_byte_order_t)byteOrder { return (id)[[OFString_UTF8 alloc] initWithUTF32String: string byteOrder: byteOrder]; } -- initWithUTF32String: (const char32_t *)string - length: (size_t)length - byteOrder: (of_byte_order_t)byteOrder +- (instancetype)initWithUTF32String: (const char32_t *)string + length: (size_t)length + byteOrder: (of_byte_order_t)byteOrder { return (id)[[OFString_UTF8 alloc] initWithUTF32String: string length: length byteOrder: byteOrder]; } -- initWithFormat: (OFConstantString *)format, ... +- (instancetype)initWithFormat: (OFConstantString *)format, ... { id ret; va_list arguments; va_start(arguments, format); @@ -548,56 +548,56 @@ va_end(arguments); return ret; } -- initWithFormat: (OFConstantString *)format - arguments: (va_list)arguments +- (instancetype)initWithFormat: (OFConstantString *)format + arguments: (va_list)arguments { return (id)[[OFString_UTF8 alloc] initWithFormat: format arguments: arguments]; } #ifdef OF_HAVE_FILES -- initWithContentsOfFile: (OFString *)path +- (instancetype)initWithContentsOfFile: (OFString *)path { return (id)[[OFString_UTF8 alloc] initWithContentsOfFile: path]; } -- initWithContentsOfFile: (OFString *)path - encoding: (of_string_encoding_t)encoding +- (instancetype)initWithContentsOfFile: (OFString *)path + encoding: (of_string_encoding_t)encoding { return (id)[[OFString_UTF8 alloc] initWithContentsOfFile: path encoding: encoding]; } #endif #if defined(OF_HAVE_FILES) || defined(OF_HAVE_SOCKETS) -- initWithContentsOfURL: (OFURL *)URL +- (instancetype)initWithContentsOfURL: (OFURL *)URL { return (id)[[OFString_UTF8 alloc] initWithContentsOfURL: URL]; } -- initWithContentsOfURL: (OFURL *)URL - encoding: (of_string_encoding_t)encoding +- (instancetype)initWithContentsOfURL: (OFURL *)URL + encoding: (of_string_encoding_t)encoding { return (id)[[OFString_UTF8 alloc] initWithContentsOfURL: URL encoding: encoding]; } #endif -- initWithSerialization: (OFXMLElement *)element +- (instancetype)initWithSerialization: (OFXMLElement *)element { return (id)[[OFString_UTF8 alloc] initWithSerialization: element]; } -- retain +- (instancetype)retain { return self; } -- autorelease +- (instancetype)autorelease { return self; } - (void)release @@ -623,11 +623,11 @@ @throw [OFInitializationFailedException exceptionWithClass: self]; #endif } -+ alloc ++ (instancetype)alloc { if (self == [OFString class]) return (id)&placeholder; return [super alloc]; @@ -806,11 +806,11 @@ } return ret; } -- init +- (instancetype)init { if (object_getClass(self) == [OFString class]) { @try { [self doesNotRecognizeSelector: _cmd]; } @catch (id e) { @@ -822,48 +822,48 @@ } return [super init]; } -- initWithUTF8String: (const char *)UTF8String +- (instancetype)initWithUTF8String: (const char *)UTF8String { return [self initWithCString: UTF8String encoding: OF_STRING_ENCODING_UTF_8 length: strlen(UTF8String)]; } -- initWithUTF8String: (const char *)UTF8String - length: (size_t)UTF8StringLength +- (instancetype)initWithUTF8String: (const char *)UTF8String + length: (size_t)UTF8StringLength { return [self initWithCString: UTF8String encoding: OF_STRING_ENCODING_UTF_8 length: UTF8StringLength]; } -- initWithUTF8StringNoCopy: (char *)UTF8String - freeWhenDone: (bool)freeWhenDone +- (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String + freeWhenDone: (bool)freeWhenDone { return [self initWithUTF8String: UTF8String]; } -- initWithCString: (const char *)cString - encoding: (of_string_encoding_t)encoding +- (instancetype)initWithCString: (const char *)cString + encoding: (of_string_encoding_t)encoding { return [self initWithCString: cString encoding: encoding length: strlen(cString)]; } -- initWithCString: (const char *)cString - encoding: (of_string_encoding_t)encoding - length: (size_t)cStringLength +- (instancetype)initWithCString: (const char *)cString + encoding: (of_string_encoding_t)encoding + length: (size_t)cStringLength { OF_INVALID_INIT_METHOD } -- initWithData: (OFData *)data - encoding: (of_string_encoding_t)encoding +- (instancetype)initWithData: (OFData *)data + encoding: (of_string_encoding_t)encoding { @try { if ([data itemSize] != 1) @throw [OFInvalidArgumentException exception]; @@ -876,82 +876,82 @@ } return self; } -- initWithString: (OFString *)string +- (instancetype)initWithString: (OFString *)string { OF_INVALID_INIT_METHOD } -- initWithCharacters: (const of_unichar_t *)string - length: (size_t)length +- (instancetype)initWithCharacters: (const of_unichar_t *)string + length: (size_t)length { OF_INVALID_INIT_METHOD } -- initWithUTF16String: (const char16_t *)string +- (instancetype)initWithUTF16String: (const char16_t *)string { return [self initWithUTF16String: string length: of_string_utf16_length(string) byteOrder: OF_BYTE_ORDER_NATIVE]; } -- initWithUTF16String: (const char16_t *)string - length: (size_t)length +- (instancetype)initWithUTF16String: (const char16_t *)string + length: (size_t)length { return [self initWithUTF16String: string length: length byteOrder: OF_BYTE_ORDER_NATIVE]; } -- initWithUTF16String: (const char16_t *)string - byteOrder: (of_byte_order_t)byteOrder +- (instancetype)initWithUTF16String: (const char16_t *)string + byteOrder: (of_byte_order_t)byteOrder { return [self initWithUTF16String: string length: of_string_utf16_length(string) byteOrder: byteOrder]; } -- initWithUTF16String: (const char16_t *)string - length: (size_t)length - byteOrder: (of_byte_order_t)byteOrder +- (instancetype)initWithUTF16String: (const char16_t *)string + length: (size_t)length + byteOrder: (of_byte_order_t)byteOrder { OF_INVALID_INIT_METHOD } -- initWithUTF32String: (const char32_t *)string +- (instancetype)initWithUTF32String: (const char32_t *)string { return [self initWithUTF32String: string length: of_string_utf32_length(string) byteOrder: OF_BYTE_ORDER_NATIVE]; } -- initWithUTF32String: (const char32_t *)string - length: (size_t)length +- (instancetype)initWithUTF32String: (const char32_t *)string + length: (size_t)length { return [self initWithUTF32String: string length: length byteOrder: OF_BYTE_ORDER_NATIVE]; } -- initWithUTF32String: (const char32_t *)string - byteOrder: (of_byte_order_t)byteOrder +- (instancetype)initWithUTF32String: (const char32_t *)string + byteOrder: (of_byte_order_t)byteOrder { return [self initWithUTF32String: string length: of_string_utf32_length(string) byteOrder: byteOrder]; } -- initWithUTF32String: (const char32_t *)string - length: (size_t)length - byteOrder: (of_byte_order_t)byteOrder +- (instancetype)initWithUTF32String: (const char32_t *)string + length: (size_t)length + byteOrder: (of_byte_order_t)byteOrder { OF_INVALID_INIT_METHOD } -- initWithFormat: (OFConstantString *)format, ... +- (instancetype)initWithFormat: (OFConstantString *)format, ... { id ret; va_list arguments; va_start(arguments, format); @@ -960,25 +960,25 @@ va_end(arguments); return ret; } -- initWithFormat: (OFConstantString *)format - arguments: (va_list)arguments +- (instancetype)initWithFormat: (OFConstantString *)format + arguments: (va_list)arguments { OF_INVALID_INIT_METHOD } #ifdef OF_HAVE_FILES -- initWithContentsOfFile: (OFString *)path +- (instancetype)initWithContentsOfFile: (OFString *)path { return [self initWithContentsOfFile: path encoding: OF_STRING_ENCODING_UTF_8]; } -- initWithContentsOfFile: (OFString *)path - encoding: (of_string_encoding_t)encoding +- (instancetype)initWithContentsOfFile: (OFString *)path + encoding: (of_string_encoding_t)encoding { char *tmp; of_offset_t fileSize; @try { @@ -1022,18 +1022,18 @@ return self; } #endif #if defined(OF_HAVE_FILES) || defined(OF_HAVE_SOCKETS) -- initWithContentsOfURL: (OFURL *)URL +- (instancetype)initWithContentsOfURL: (OFURL *)URL { return [self initWithContentsOfURL: URL encoding: OF_STRING_ENCODING_AUTODETECT]; } -- initWithContentsOfURL: (OFURL *)URL - encoding: (of_string_encoding_t)encoding +- (instancetype)initWithContentsOfURL: (OFURL *)URL + encoding: (of_string_encoding_t)encoding { void *pool = objc_autoreleasePoolPush(); OFString *scheme = [URL scheme]; # ifdef OF_HAVE_FILES @@ -1051,11 +1051,11 @@ return self; } #endif -- initWithSerialization: (OFXMLElement *)element +- (instancetype)initWithSerialization: (OFXMLElement *)element { @try { void *pool = objc_autoreleasePoolPush(); if (![[element namespace] isEqual: OF_SERIALIZATION_NS]) @@ -1498,16 +1498,16 @@ objc_autoreleasePoolPop(pool); return true; } -- copy +- (id)copy { return [self retain]; } -- mutableCopy +- (id)mutableCopy { return [[OFMutableString alloc] initWithString: self]; } - (of_comparison_result_t)compare: (id )object