446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
|
}
- (void)replaceCharactersInRange: (of_range_t)range
withString: (OFString*)replacement
{
[self deleteCharactersInRange: range];
[self insertString: replacement
atIndex: range.start];
}
- (void)replaceOccurrencesOfString: (OFString*)string
withString: (OFString*)replacement
{
[self replaceOccurrencesOfString: string
withString: replacement
|
|
|
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
|
}
- (void)replaceCharactersInRange: (of_range_t)range
withString: (OFString*)replacement
{
[self deleteCharactersInRange: range];
[self insertString: replacement
atIndex: range.location];
}
- (void)replaceOccurrencesOfString: (OFString*)string
withString: (OFString*)replacement
{
[self replaceOccurrencesOfString: string
withString: replacement
|
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
|
void *pool = objc_autoreleasePoolPush(), *pool2;
const of_unichar_t *unicodeString;
const of_unichar_t *searchString = [string unicodeString];
size_t searchLength = [string length];
size_t replacementLength = [replacement length];
size_t i;
if (range.start + range.length > [self length])
@throw [OFOutOfRangeException exceptionWithClass: [self class]];
if (searchLength > range.length) {
objc_autoreleasePoolPop(pool);
return;
}
pool2 = objc_autoreleasePoolPush();
unicodeString = [self unicodeString];
for (i = range.start; i <= range.length - searchLength; i++) {
if (memcmp(unicodeString + i, searchString,
searchLength * sizeof(of_unichar_t)))
continue;
[self replaceCharactersInRange: of_range(i, searchLength)
withString: replacement];
|
|
|
|
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
|
void *pool = objc_autoreleasePoolPush(), *pool2;
const of_unichar_t *unicodeString;
const of_unichar_t *searchString = [string unicodeString];
size_t searchLength = [string length];
size_t replacementLength = [replacement length];
size_t i;
if (range.location + range.length > [self length])
@throw [OFOutOfRangeException exceptionWithClass: [self class]];
if (searchLength > range.length) {
objc_autoreleasePoolPop(pool);
return;
}
pool2 = objc_autoreleasePoolPush();
unicodeString = [self unicodeString];
for (i = range.location; i <= range.length - searchLength; i++) {
if (memcmp(unicodeString + i, searchString,
searchLength * sizeof(of_unichar_t)))
continue;
[self replaceCharactersInRange: of_range(i, searchLength)
withString: replacement];
|