︙ | | | ︙ | |
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
|
index = of_string_utf8_get_position(_s->cString, index,
_s->cStringLength);
if (index > _s->cStringLength)
@throw [OFOutOfRangeException exception];
/* Shortcut if old and new character both are ASCII */
if (!(character & 0x80) && !(_s->cString[index] & 0x80)) {
_s->hashed = false;
_s->cString[index] = character;
return;
}
if ((lenNew = of_string_utf8_encode(character, buffer)) == 0)
@throw [OFInvalidEncodingException exception];
|
|
|
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
|
index = of_string_utf8_get_position(_s->cString, index,
_s->cStringLength);
if (index > _s->cStringLength)
@throw [OFOutOfRangeException exception];
/* Shortcut if old and new character both are ASCII */
if (character < 0x80 && !(_s->cString[index] & 0x80)) {
_s->hashed = false;
_s->cString[index] = character;
return;
}
if ((lenNew = of_string_utf8_encode(character, buffer)) == 0)
@throw [OFInvalidEncodingException exception];
|
︙ | | | ︙ | |
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
|
_s->cStringLength - index - lenOld);
memcpy(_s->cString + index, buffer, lenNew);
_s->cStringLength -= lenOld;
_s->cStringLength += lenNew;
_s->cString[_s->cStringLength] = '\0';
if (character & 0x80)
_s->isUTF8 = true;
} else if (lenNew < (size_t)lenOld) {
memmove(_s->cString + index + lenNew,
_s->cString + index + lenOld,
_s->cStringLength - index - lenOld);
memcpy(_s->cString + index, buffer, lenNew);
_s->cStringLength -= lenOld;
_s->cStringLength += lenNew;
_s->cString[_s->cStringLength] = '\0';
@try {
_s->cString = [self
resizeMemory: _s->cString
size: _s->cStringLength + 1];
} @catch (OFOutOfMemoryException *e) {
/* We don't really care, as we only made it smaller */
|
|
>
>
>
|
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
|
_s->cStringLength - index - lenOld);
memcpy(_s->cString + index, buffer, lenNew);
_s->cStringLength -= lenOld;
_s->cStringLength += lenNew;
_s->cString[_s->cStringLength] = '\0';
if (character >= 0x80)
_s->isUTF8 = true;
} else if (lenNew < (size_t)lenOld) {
memmove(_s->cString + index + lenNew,
_s->cString + index + lenOld,
_s->cStringLength - index - lenOld);
memcpy(_s->cString + index, buffer, lenNew);
_s->cStringLength -= lenOld;
_s->cStringLength += lenNew;
_s->cString[_s->cStringLength] = '\0';
if (character >= 0x80)
_s->isUTF8 = true;
@try {
_s->cString = [self
resizeMemory: _s->cString
size: _s->cStringLength + 1];
} @catch (OFOutOfMemoryException *e) {
/* We don't really care, as we only made it smaller */
|
︙ | | | ︙ | |
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
|
length: (size_t)cStringLength
{
if (encoding == OF_STRING_ENCODING_UTF_8)
[self appendUTF8String: cString
length: cStringLength];
else {
void *pool = objc_autoreleasePoolPush();
[self appendString:
[OFString stringWithCString: cString
encoding: encoding
length: cStringLength]];
objc_autoreleasePoolPop(pool);
}
}
- (void)appendString: (OFString*)string
{
size_t UTF8StringLength;
|
>
>
|
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
|
length: (size_t)cStringLength
{
if (encoding == OF_STRING_ENCODING_UTF_8)
[self appendUTF8String: cString
length: cStringLength];
else {
void *pool = objc_autoreleasePoolPush();
[self appendString:
[OFString stringWithCString: cString
encoding: encoding
length: cStringLength]];
objc_autoreleasePoolPop(pool);
}
}
- (void)appendString: (OFString*)string
{
size_t UTF8StringLength;
|
︙ | | | ︙ | |
638
639
640
641
642
643
644
645
646
647
648
649
650
651
|
*/
if (newCStringLength < _s->cStringLength)
_s->cString = [self resizeMemory: _s->cString
size: newCStringLength + 1];
_s->cStringLength = newCStringLength;
_s->length = newLength;
}
- (void)replaceOccurrencesOfString: (OFString*)string
withString: (OFString*)replacement
options: (int)options
range: (of_range_t)range
{
|
>
>
>
>
>
>
>
|
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
|
*/
if (newCStringLength < _s->cStringLength)
_s->cString = [self resizeMemory: _s->cString
size: newCStringLength + 1];
_s->cStringLength = newCStringLength;
_s->length = newLength;
if ([replacement isKindOfClass: [OFString_UTF8 class]] ||
[replacement isKindOfClass: [OFMutableString_UTF8 class]]) {
if (((OFString_UTF8*)replacement)->_s->isUTF8)
_s->isUTF8 = true;
} else
_s->isUTF8 = true;
}
- (void)replaceOccurrencesOfString: (OFString*)string
withString: (OFString*)replacement
options: (int)options
range: (of_range_t)range
{
|
︙ | | | ︙ | |
718
719
720
721
722
723
724
725
726
727
728
729
730
731
|
newCString[newCStringLength] = 0;
[self freeMemory: _s->cString];
_s->hashed = false;
_s->cString = newCString;
_s->cStringLength = newCStringLength;
_s->length = newLength;
}
- (void)deleteLeadingWhitespaces
{
size_t i;
for (i = 0; i < _s->cStringLength; i++)
|
>
>
>
>
>
>
>
|
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
|
newCString[newCStringLength] = 0;
[self freeMemory: _s->cString];
_s->hashed = false;
_s->cString = newCString;
_s->cStringLength = newCStringLength;
_s->length = newLength;
if ([replacement isKindOfClass: [OFString_UTF8 class]] ||
[replacement isKindOfClass: [OFMutableString_UTF8 class]]) {
if (((OFString_UTF8*)replacement)->_s->isUTF8)
_s->isUTF8 = true;
} else
_s->isUTF8 = true;
}
- (void)deleteLeadingWhitespaces
{
size_t i;
for (i = 0; i < _s->cStringLength; i++)
|
︙ | | | ︙ | |