@@ -146,11 +146,11 @@ of_string_parse_encoding(OFString *string) { void *pool = objc_autoreleasePoolPush(); of_string_encoding_t encoding; - string = [string lowercaseString]; + string = string.lowercaseString; if ([string isEqual: @"utf8"] || [string isEqual: @"utf-8"]) encoding = OF_STRING_ENCODING_UTF_8; else if ([string isEqual: @"ascii"] || [string isEqual: @"us-ascii"]) encoding = OF_STRING_ENCODING_ASCII; @@ -338,12 +338,12 @@ static OFString * decomposedString(OFString *self, const char *const *const *table, size_t size) { OFMutableString *ret = [OFMutableString string]; void *pool = objc_autoreleasePoolPush(); - const of_unichar_t *characters = [self characters]; - size_t length = [self length]; + const of_unichar_t *characters = self.characters; + size_t length = self.length; for (size_t i = 0; i < length; i++) { of_unichar_t c = characters[i]; const char *const *page; @@ -873,20 +873,20 @@ - (instancetype)initWithData: (OFData *)data encoding: (of_string_encoding_t)encoding { @try { - if ([data itemSize] != 1) + if (data.itemSize != 1) @throw [OFInvalidArgumentException exception]; } @catch (id e) { [self release]; @throw e; } - self = [self initWithCString: [data items] + self = [self initWithCString: data.items encoding: encoding - length: [data count]]; + length: data.count]; return self; } - (instancetype)initWithString: (OFString *)string @@ -995,17 +995,17 @@ @try { void *pool = objc_autoreleasePoolPush(); OFFile *file = nil; @try { - fileSize = [[[OFFileManager defaultManager] - attributesOfItemAtPath: path] fileSize]; + fileSize = [[OFFileManager defaultManager] + attributesOfItemAtPath: path].fileSize; } @catch (OFRetrieveItemAttributesFailedException *e) { @throw [OFOpenItemFailedException exceptionWithPath: path mode: @"r" - errNo: errno]; + errNo: e.errNo]; } objc_autoreleasePoolPop(pool); # if UINTMAX_MAX > SIZE_MAX @@ -1078,13 +1078,13 @@ } @catch (id e) { [self release]; @throw e; } - self = [self initWithCString: [data items] + self = [self initWithCString: data.items encoding: encoding - length: [data count]]; + length: data.count * data.itemSize]; objc_autoreleasePoolPop(pool); return self; } @@ -1093,22 +1093,22 @@ { void *pool = objc_autoreleasePoolPush(); OFString *stringValue; @try { - if (![[element namespace] isEqual: OF_SERIALIZATION_NS]) + if (![element.namespace isEqual: OF_SERIALIZATION_NS]) @throw [OFInvalidArgumentException exception]; if ([self isKindOfClass: [OFMutableString class]]) { - if (![[element name] isEqual: @"OFMutableString"]) + if (![element.name isEqual: @"OFMutableString"]) @throw [OFInvalidArgumentException exception]; } else { - if (![[element name] isEqual: @"OFString"]) + if (![element.name isEqual: @"OFString"]) @throw [OFInvalidArgumentException exception]; } - stringValue = [element stringValue]; + stringValue = element.stringValue; } @catch (id e) { [self release]; @throw e; } @@ -1122,12 +1122,12 @@ - (size_t)of_getCString: (char *)cString maxLength: (size_t)maxLength encoding: (of_string_encoding_t)encoding lossy: (bool)lossy { - const of_unichar_t *characters = [self characters]; - size_t i, length = [self length]; + const of_unichar_t *characters = self.characters; + size_t i, length = self.length; switch (encoding) { case OF_STRING_ENCODING_UTF_8:; size_t j = 0; @@ -1372,11 +1372,11 @@ - (const char *)of_cStringWithEncoding: (of_string_encoding_t)encoding lossy: (bool)lossy { OFObject *object = [[[OFObject alloc] init] autorelease]; - size_t length = [self length]; + size_t length = self.length; char *cString; switch (encoding) { case OF_STRING_ENCODING_UTF_8:; size_t cStringLength; @@ -1451,12 +1451,12 @@ switch (encoding) { case OF_STRING_ENCODING_UTF_8:; const of_unichar_t *characters; size_t length, UTF8StringLength = 0; - characters = [self characters]; - length = [self length]; + characters = self.characters; + length = self.length; for (size_t i = 0; i < length; i++) { char buffer[4]; size_t len = of_string_utf8_encode(characters[i], buffer); @@ -1479,11 +1479,11 @@ case OF_STRING_ENCODING_CODEPAGE_850: case OF_STRING_ENCODING_CODEPAGE_858: case OF_STRING_ENCODING_MAC_ROMAN: case OF_STRING_ENCODING_KOI8_R: case OF_STRING_ENCODING_KOI8_U: - return [self length]; + return self.length; default: @throw [OFInvalidEncodingException exception]; } } @@ -1516,19 +1516,19 @@ if (![object isKindOfClass: [OFString class]]) return false; otherString = object; - length = [self length]; + length = self.length; - if ([otherString length] != length) + if (otherString.length != length) return false; pool = objc_autoreleasePoolPush(); - characters = [self characters]; - otherCharacters = [otherString characters]; + characters = self.characters; + otherCharacters = otherString.characters; if (memcmp(characters, otherCharacters, length * sizeof(of_unichar_t)) != 0) { objc_autoreleasePoolPop(pool); return false; @@ -1561,17 +1561,17 @@ if (![(id)object isKindOfClass: [OFString class]]) @throw [OFInvalidArgumentException exception]; otherString = (OFString *)object; - minimumLength = ([self length] > [otherString length] - ? [otherString length] : [self length]); + minimumLength = (self.length > otherString.length + ? otherString.length : self.length); pool = objc_autoreleasePoolPush(); - characters = [self characters]; - otherCharacters = [otherString characters]; + characters = self.characters; + otherCharacters = otherString.characters; for (size_t i = 0; i < minimumLength; i++) { if (characters[i] > otherCharacters[i]) { objc_autoreleasePoolPop(pool); return OF_ORDERED_DESCENDING; @@ -1583,13 +1583,13 @@ } } objc_autoreleasePoolPop(pool); - if ([self length] > [otherString length]) + if (self.length > otherString.length) return OF_ORDERED_DESCENDING; - if ([self length] < [otherString length]) + if (self.length < otherString.length) return OF_ORDERED_ASCENDING; return OF_ORDERED_SAME; } @@ -1600,14 +1600,14 @@ size_t length, otherLength, minimumLength; if (otherString == self) return OF_ORDERED_SAME; - characters = [self characters]; - otherCharacters = [otherString characters]; - length = [self length]; - otherLength = [otherString length]; + characters = self.characters; + otherCharacters = otherString.characters; + length = self.length; + otherLength = otherString.length; minimumLength = (length > otherLength ? otherLength : length); for (size_t i = 0; i < minimumLength; i++) { of_unichar_t c = characters[i]; @@ -1653,22 +1653,22 @@ return OF_ORDERED_SAME; } - (uint32_t)hash { - const of_unichar_t *characters = [self characters]; - size_t length = [self length]; + const of_unichar_t *characters = self.characters; + size_t length = self.length; uint32_t hash; OF_HASH_INIT(hash); for (size_t i = 0; i < length; i++) { const of_unichar_t c = characters[i]; OF_HASH_ADD(hash, (c & 0xFF0000) >> 16); - OF_HASH_ADD(hash, (c & 0x00FF00) >> 8); - OF_HASH_ADD(hash, c & 0x0000FF); + OF_HASH_ADD(hash, (c & 0x00FF00) >> 8); + OF_HASH_ADD(hash, c & 0x0000FF); } OF_HASH_FINALIZE(hash); return hash; @@ -1735,11 +1735,11 @@ if (options & OF_JSON_REPRESENTATION_JSON5) { [JSON replaceOccurrencesOfString: @"\n" withString: @"\\\n"]; if (options & OF_JSON_REPRESENTATION_IDENTIFIER) { - const char *cString = [self UTF8String]; + const char *cString = self.UTF8String; if ((!of_ascii_isalpha(cString[0]) && cString[0] != '_' && cString[0] != '$') || strpbrk(cString, " \n\r\t\b\f\\\"'") != NULL) { [JSON prependString: @"\""]; @@ -1765,11 +1765,11 @@ - (OFData *)messagePackRepresentation { OFMutableData *data; size_t length; - length = [self UTF8StringLength]; + length = self.UTF8StringLength; if (length <= 31) { uint8_t tmp = 0xA0 | ((uint8_t)length & 0x1F); data = [OFMutableData dataWithItemSize: 1 @@ -1806,29 +1806,29 @@ [data addItems: &tmp count: sizeof(tmp)]; } else @throw [OFOutOfRangeException exception]; - [data addItems: [self UTF8String] + [data addItems: self.UTF8String count: length]; return data; } - (of_range_t)rangeOfString: (OFString *)string { return [self rangeOfString: string options: 0 - range: of_range(0, [self length])]; + range: of_range(0, self.length)]; } - (of_range_t)rangeOfString: (OFString *)string options: (int)options { return [self rangeOfString: string options: options - range: of_range(0, [self length])]; + range: of_range(0, self.length)]; } - (of_range_t)rangeOfString: (OFString *)string options: (int)options range: (of_range_t)range @@ -1836,11 +1836,11 @@ void *pool; const of_unichar_t *searchCharacters; of_unichar_t *characters; size_t searchLength; - if ((searchLength = [string length]) == 0) + if ((searchLength = string.length) == 0) return of_range(0, 0); if (searchLength > range.length) return of_range(OF_NOT_FOUND, 0); @@ -1847,11 +1847,11 @@ if (range.length > SIZE_MAX / sizeof(of_unichar_t)) @throw [OFOutOfRangeException exception]; pool = objc_autoreleasePoolPush(); - searchCharacters = [string characters]; + searchCharacters = string.characters; if ((characters = malloc(range.length * sizeof(of_unichar_t))) == NULL) @throw [OFOutOfMemoryException exceptionWithRequestedSize: range.length * sizeof(of_unichar_t)]; @@ -1894,19 +1894,19 @@ - (size_t)indexOfCharacterFromSet: (OFCharacterSet *)characterSet { return [self indexOfCharacterFromSet: characterSet options: 0 - range: of_range(0, [self length])]; + range: of_range(0, self.length)]; } - (size_t)indexOfCharacterFromSet: (OFCharacterSet *)characterSet options: (int)options { return [self indexOfCharacterFromSet: characterSet options: options - range: of_range(0, [self length])]; + range: of_range(0, self.length)]; } - (size_t)indexOfCharacterFromSet: (OFCharacterSet *)characterSet options: (int)options range: (of_range_t)range @@ -1959,20 +1959,20 @@ { void *pool; const of_unichar_t *characters, *searchCharacters; size_t length, searchLength; - if ((searchLength = [string length]) == 0) + if ((searchLength = string.length) == 0) return true; - if (searchLength > (length = [self length])) + if (searchLength > (length = self.length)) return false; pool = objc_autoreleasePoolPush(); - characters = [self characters]; - searchCharacters = [string characters]; + characters = self.characters; + searchCharacters = string.characters; for (size_t i = 0; i <= length - searchLength; i++) { if (memcmp(characters + i, searchCharacters, searchLength * sizeof(of_unichar_t)) == 0) { objc_autoreleasePoolPop(pool); @@ -1989,16 +1989,16 @@ { void *pool; OFString *ret; if (range.length > SIZE_MAX - range.location || - range.location + range.length > [self length]) + range.location + range.length > self.length) @throw [OFOutOfRangeException exception]; pool = objc_autoreleasePoolPush(); ret = [[OFString alloc] - initWithCharacters: [self characters] + range.location + initWithCharacters: self.characters + range.location length: range.length]; objc_autoreleasePoolPop(pool); return [ret autorelease]; } @@ -2150,15 +2150,14 @@ } - (bool)hasPrefix: (OFString *)prefix { of_unichar_t *tmp; - const of_unichar_t *prefixCharacters; size_t prefixLength; bool hasPrefix; - if ((prefixLength = [prefix length]) > [self length]) + if ((prefixLength = prefix.length) > self.length) return false; tmp = [self allocMemoryWithSize: sizeof(of_unichar_t) count: prefixLength]; @try { @@ -2165,12 +2164,11 @@ void *pool = objc_autoreleasePoolPush(); [self getCharacters: tmp inRange: of_range(0, prefixLength)]; - prefixCharacters = [prefix characters]; - hasPrefix = (memcmp(tmp, prefixCharacters, + hasPrefix = (memcmp(tmp, prefix.characters, prefixLength * sizeof(of_unichar_t)) == 0); objc_autoreleasePoolPop(pool); } @finally { [self freeMemory: tmp]; @@ -2184,14 +2182,14 @@ of_unichar_t *tmp; const of_unichar_t *suffixCharacters; size_t length, suffixLength; bool hasSuffix; - if ((suffixLength = [suffix length]) > [self length]) + if ((suffixLength = suffix.length) > self.length) return false; - length = [self length]; + length = self.length; tmp = [self allocMemoryWithSize: sizeof(of_unichar_t) count: suffixLength]; @try { void *pool = objc_autoreleasePoolPush(); @@ -2198,11 +2196,11 @@ [self getCharacters: tmp inRange: of_range(length - suffixLength, suffixLength)]; - suffixCharacters = [suffix characters]; + suffixCharacters = suffix.characters; hasSuffix = (memcmp(tmp, suffixCharacters, suffixLength * sizeof(of_unichar_t)) == 0); objc_autoreleasePoolPop(pool); } @finally { @@ -2223,19 +2221,19 @@ { void *pool; OFMutableArray *array = [OFMutableArray array]; const of_unichar_t *characters, *delimiterCharacters; bool skipEmpty = (options & OF_STRING_SKIP_EMPTY); - size_t length = [self length]; - size_t delimiterLength = [delimiter length]; + size_t length = self.length; + size_t delimiterLength = delimiter.length; size_t last; OFString *component; pool = objc_autoreleasePoolPush(); - characters = [self characters]; - delimiterCharacters = [delimiter characters]; + characters = self.characters; + delimiterCharacters = delimiter.characters; if (delimiterLength > length) { [array addObject: [[self copy] autorelease]]; [array makeImmutable]; @@ -2249,18 +2247,18 @@ if (memcmp(characters + i, delimiterCharacters, delimiterLength * sizeof(of_unichar_t)) != 0) continue; component = [self substringWithRange: of_range(last, i - last)]; - if (!skipEmpty || [component length] > 0) + if (!skipEmpty || component.length > 0) [array addObject: component]; i += delimiterLength - 1; last = i + 1; } component = [self substringWithRange: of_range(last, length - last)]; - if (!skipEmpty || [component length] > 0) + if (!skipEmpty || component.length > 0) [array addObject: component]; [array makeImmutable]; objc_autoreleasePoolPop(pool); @@ -2280,12 +2278,12 @@ options: (int)options { OFMutableArray *array = [OFMutableArray array]; void *pool = objc_autoreleasePoolPush(); bool skipEmpty = (options & OF_STRING_SKIP_EMPTY); - const of_unichar_t *characters = [self characters]; - size_t length = [self length]; + const of_unichar_t *characters = self.characters; + size_t length = self.length; bool (*characterIsMember)(id, SEL, of_unichar_t) = (bool (*)(id, SEL, of_unichar_t))[characterSet methodForSelector: @selector(characterIsMember:)]; size_t last; @@ -2316,12 +2314,12 @@ } - (intmax_t)decimalValue { void *pool = objc_autoreleasePoolPush(); - const of_unichar_t *characters = [self characters]; - size_t i = 0, length = [self length]; + const of_unichar_t *characters = self.characters; + size_t i = 0, length = self.length; intmax_t value = 0; bool expectWhitespace = false; while (length > 0 && of_ascii_isspace(*characters)) { characters++; @@ -2365,12 +2363,12 @@ } - (uintmax_t)hexadecimalValue { void *pool = objc_autoreleasePoolPush(); - const of_unichar_t *characters = [self characters]; - size_t i = 0, length = [self length]; + const of_unichar_t *characters = self.characters; + size_t i = 0, length = self.length; uintmax_t value = 0; bool expectWhitespace = false, foundValue = false; while (length > 0 && of_ascii_isspace(*characters)) { characters++; @@ -2428,12 +2426,12 @@ } - (uintmax_t)octalValue { void *pool = objc_autoreleasePoolPush(); - const of_unichar_t *characters = [self characters]; - size_t i = 0, length = [self length]; + const of_unichar_t *characters = self.characters; + size_t i = 0, length = self.length; uintmax_t value = 0; bool expectWhitespace = false; while (length > 0 && of_ascii_isspace(*characters)) { characters++; @@ -2477,11 +2475,11 @@ - (float)floatValue { void *pool = objc_autoreleasePoolPush(); #if defined(OF_AMIGAOS_M68K) || defined(OF_MORPHOS) - OFString *stripped = [self stringByDeletingEnclosingWhitespaces]; + OFString *stripped = self.stringByDeletingEnclosingWhitespaces; if ([stripped caseInsensitiveCompare: @"INF"] == OF_ORDERED_SAME || [stripped caseInsensitiveCompare: @"INFINITY"] == OF_ORDERED_SAME) return INFINITY; if ([stripped caseInsensitiveCompare: @"-INF"] == OF_ORDERED_SAME || @@ -2488,20 +2486,20 @@ [stripped caseInsensitiveCompare: @"-INFINITY"] == OF_ORDERED_SAME) return -INFINITY; #endif #ifdef HAVE_STRTOF_L - const char *UTF8String = [self UTF8String]; + const char *UTF8String = self.UTF8String; #else /* * If we have no strtof_l, we have no other choice but to replace "." * with the locale's decimal point. */ OFString *decimalPoint = [OFLocale decimalPoint]; - const char *UTF8String = [[self + const char *UTF8String = [self stringByReplacingOccurrencesOfString: @"." - withString: decimalPoint] UTF8String]; + withString: decimalPoint].UTF8String; #endif char *endPointer = NULL; float value; while (of_ascii_isspace(*UTF8String)) @@ -2527,11 +2525,11 @@ - (double)doubleValue { void *pool = objc_autoreleasePoolPush(); #if defined(OF_AMIGAOS_M68K) || defined(OF_MORPHOS) - OFString *stripped = [self stringByDeletingEnclosingWhitespaces]; + OFString *stripped = self.stringByDeletingEnclosingWhitespaces; if ([stripped caseInsensitiveCompare: @"INF"] == OF_ORDERED_SAME || [stripped caseInsensitiveCompare: @"INFINITY"] == OF_ORDERED_SAME) return INFINITY; if ([stripped caseInsensitiveCompare: @"-INF"] == OF_ORDERED_SAME || @@ -2538,20 +2536,20 @@ [stripped caseInsensitiveCompare: @"-INFINITY"] == OF_ORDERED_SAME) return -INFINITY; #endif #ifdef HAVE_STRTOD_L - const char *UTF8String = [self UTF8String]; + const char *UTF8String = self.UTF8String; #else /* * If we have no strtod_l, we have no other choice but to replace "." * with the locale's decimal point. */ OFString *decimalPoint = [OFLocale decimalPoint]; - const char *UTF8String = [[self + const char *UTF8String = [self stringByReplacingOccurrencesOfString: @"." - withString: decimalPoint] UTF8String]; + withString: decimalPoint].UTF8String; #endif char *endPointer = NULL; double value; while (of_ascii_isspace(*UTF8String)) @@ -2575,11 +2573,11 @@ } - (const of_unichar_t *)characters { OFObject *object = [[[OFObject alloc] init] autorelease]; - size_t length = [self length]; + size_t length = self.length; of_unichar_t *ret; ret = [object allocMemoryWithSize: sizeof(of_unichar_t) count: length]; [self getCharacters: ret @@ -2595,12 +2593,12 @@ - (const of_char16_t *)UTF16StringWithByteOrder: (of_byte_order_t)byteOrder { OFObject *object = [[[OFObject alloc] init] autorelease]; void *pool = objc_autoreleasePoolPush(); - const of_unichar_t *characters = [self characters]; - size_t length = [self length]; + const of_unichar_t *characters = self.characters; + size_t length = self.length; of_char16_t *ret; size_t j; bool swap = (byteOrder != OF_BYTE_ORDER_NATIVE); /* Allocate memory for the worst case */ @@ -2645,14 +2643,14 @@ return ret; } - (size_t)UTF16StringLength { - const of_unichar_t *characters = [self characters]; + const of_unichar_t *characters = self.characters; size_t length, UTF16StringLength; - length = UTF16StringLength = [self length]; + length = UTF16StringLength = self.length; for (size_t i = 0; i < length; i++) if (characters[i] > 0xFFFF) UTF16StringLength++; @@ -2665,11 +2663,11 @@ } - (const of_char32_t *)UTF32StringWithByteOrder: (of_byte_order_t)byteOrder { OFObject *object = [[[OFObject alloc] init] autorelease]; - size_t length = [self length]; + size_t length = self.length; of_char32_t *ret; ret = [object allocMemoryWithSize: sizeof(of_char32_t) count: length + 1]; [self getCharacters: ret @@ -2759,12 +2757,12 @@ #ifdef OF_HAVE_BLOCKS - (void)enumerateLinesUsingBlock: (of_string_line_enumeration_block_t)block { void *pool = objc_autoreleasePoolPush(); - const of_unichar_t *characters = [self characters]; - size_t i, last = 0, length = [self length]; + const of_unichar_t *characters = self.characters; + size_t i, last = 0, length = self.length; bool stop = false, lastCarriageReturn = false; for (i = 0; i < length && !stop; i++) { if (lastCarriageReturn && characters[i] == '\n') { lastCarriageReturn = false;