925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
|
- (void)getCharacters: (of_unichar_t*)buffer
inRange: (of_range_t)range
{
size_t i;
for (i = 0; i < range.length; i++)
buffer[i] = [self characterAtIndex: range.start + i];
}
- (BOOL)isEqual: (id)object
{
void *pool;
OFString *otherString;
const of_unichar_t *unicodeString, *otherUnicodeString;
|
|
|
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
|
- (void)getCharacters: (of_unichar_t*)buffer
inRange: (of_range_t)range
{
size_t i;
for (i = 0; i < range.length; i++)
buffer[i] = [self characterAtIndex: range.location + i];
}
- (BOOL)isEqual: (id)object
{
void *pool;
OFString *otherString;
const of_unichar_t *unicodeString, *otherUnicodeString;
|
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
|
inRange: range];
if (options & OF_STRING_SEARCH_BACKWARDS) {
for (i = range.length - searchLength;; i--) {
if (!memcmp(unicodeString + i, searchString,
searchLength * sizeof(of_unichar_t))) {
objc_autoreleasePoolPop(pool);
return of_range(range.start + i,
searchLength);
}
/* No match and we're at the last character */
if (i == 0)
break;
}
} else {
for (i = 0; i <= range.length - searchLength; i++) {
if (!memcmp(unicodeString + i, searchString,
searchLength * sizeof(of_unichar_t))) {
objc_autoreleasePoolPop(pool);
return of_range(range.start + i,
searchLength);
}
}
}
} @finally {
free(unicodeString);
}
|
|
|
|
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
|
inRange: range];
if (options & OF_STRING_SEARCH_BACKWARDS) {
for (i = range.length - searchLength;; i--) {
if (!memcmp(unicodeString + i, searchString,
searchLength * sizeof(of_unichar_t))) {
objc_autoreleasePoolPop(pool);
return of_range(range.location + i,
searchLength);
}
/* No match and we're at the last character */
if (i == 0)
break;
}
} else {
for (i = 0; i <= range.length - searchLength; i++) {
if (!memcmp(unicodeString + i, searchString,
searchLength * sizeof(of_unichar_t))) {
objc_autoreleasePoolPop(pool);
return of_range(range.location + i,
searchLength);
}
}
}
} @finally {
free(unicodeString);
}
|
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
|
}
- (OFString*)substringWithRange: (of_range_t)range
{
void *pool;
OFString *ret;
if (range.start + range.length > [self length])
@throw [OFOutOfRangeException
exceptionWithClass: [self class]];
pool = objc_autoreleasePoolPush();
ret = [[OFString alloc]
initWithUnicodeString: [self unicodeString] + range.start
length: range.length];
objc_autoreleasePoolPop(pool);
return [ret autorelease];
}
- (OFString*)stringByAppendingString: (OFString*)string
|
|
|
|
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
|
}
- (OFString*)substringWithRange: (of_range_t)range
{
void *pool;
OFString *ret;
if (range.location + range.length > [self length])
@throw [OFOutOfRangeException
exceptionWithClass: [self class]];
pool = objc_autoreleasePoolPush();
ret = [[OFString alloc]
initWithUnicodeString: [self unicodeString] + range.location
length: range.length];
objc_autoreleasePoolPop(pool);
return [ret autorelease];
}
- (OFString*)stringByAppendingString: (OFString*)string
|