︙ | | | ︙ | |
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
{
of_unichar_t c;
of_unichar_t *unicodeString;
size_t unicodeLen, newCStringLength, cLen;
size_t i, j, d;
char *newCString;
if (!s->isUTF8) {
assert(tableSize >= 1);
uint8_t *p = (uint8_t*)s->cString + s->cStringLength;
uint8_t t;
while (--p >= (uint8_t*)s->cString)
if ((t = table[0][*p]) != 0)
|
|
|
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
{
of_unichar_t c;
of_unichar_t *unicodeString;
size_t unicodeLen, newCStringLength, cLen;
size_t i, j, d;
char *newCString;
if (!s->UTF8) {
assert(tableSize >= 1);
uint8_t *p = (uint8_t*)s->cString + s->cStringLength;
uint8_t t;
while (--p >= (uint8_t*)s->cString)
if ((t = table[0][*p]) != 0)
|
︙ | | | ︙ | |
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
if (UTF8StringLength >= 3 && !memcmp(UTF8String, "\xEF\xBB\xBF", 3)) {
UTF8String += 3;
UTF8StringLength -= 3;
}
switch (of_string_check_utf8(UTF8String, UTF8StringLength, &length)) {
case 1:
s->isUTF8 = YES;
break;
case -1:
@throw [OFInvalidEncodingException newWithClass: isa];
}
s->cString = [self resizeMemory: s->cString
toSize: s->cStringLength +
|
|
|
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
if (UTF8StringLength >= 3 && !memcmp(UTF8String, "\xEF\xBB\xBF", 3)) {
UTF8String += 3;
UTF8StringLength -= 3;
}
switch (of_string_check_utf8(UTF8String, UTF8StringLength, &length)) {
case 1:
s->UTF8 = YES;
break;
case -1:
@throw [OFInvalidEncodingException newWithClass: isa];
}
s->cString = [self resizeMemory: s->cString
toSize: s->cStringLength +
|
︙ | | | ︙ | |
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
if (UTF8StringLength >= 3 && !memcmp(UTF8String, "\xEF\xBB\xBF", 3)) {
UTF8String += 3;
UTF8StringLength -= 3;
}
switch (of_string_check_utf8(UTF8String, UTF8StringLength, &length)) {
case 1:
s->isUTF8 = YES;
break;
case -1:
@throw [OFInvalidEncodingException newWithClass: isa];
}
s->cString = [self resizeMemory: s->cString
toSize: s->cStringLength +
|
|
|
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
if (UTF8StringLength >= 3 && !memcmp(UTF8String, "\xEF\xBB\xBF", 3)) {
UTF8String += 3;
UTF8StringLength -= 3;
}
switch (of_string_check_utf8(UTF8String, UTF8StringLength, &length)) {
case 1:
s->UTF8 = YES;
break;
case -1:
@throw [OFInvalidEncodingException newWithClass: isa];
}
s->cString = [self resizeMemory: s->cString
toSize: s->cStringLength +
|
︙ | | | ︙ | |
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
UTF8StringLength);
s->cStringLength += UTF8StringLength;
s->length += string->s->length;
s->cString[s->cStringLength] = 0;
if (string->s->isUTF8)
s->isUTF8 = YES;
}
- (void)appendFormat: (OFConstantString*)format, ...
{
va_list arguments;
va_start(arguments, format);
|
|
|
|
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
UTF8StringLength);
s->cStringLength += UTF8StringLength;
s->length += string->s->length;
s->cString[s->cStringLength] = 0;
if (string->s->UTF8)
s->UTF8 = YES;
}
- (void)appendFormat: (OFConstantString*)format, ...
{
va_list arguments;
va_start(arguments, format);
|
︙ | | | ︙ | |
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
|
for (i = 0, j = s->cStringLength - 1; i < s->cStringLength / 2;
i++, j--) {
s->cString[i] ^= s->cString[j];
s->cString[j] ^= s->cString[i];
s->cString[i] ^= s->cString[j];
}
if (!s->isUTF8) {
madvise(s->cString, s->cStringLength, MADV_NORMAL);
return;
}
for (i = 0; i < s->cStringLength; i++) {
/* ASCII */
if (OF_LIKELY(!(s->cString[i] & 0x80)))
|
|
|
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
|
for (i = 0, j = s->cStringLength - 1; i < s->cStringLength / 2;
i++, j--) {
s->cString[i] ^= s->cString[j];
s->cString[j] ^= s->cString[i];
s->cString[i] ^= s->cString[j];
}
if (!s->UTF8) {
madvise(s->cString, s->cStringLength, MADV_NORMAL);
return;
}
for (i = 0; i < s->cStringLength; i++) {
/* ASCII */
if (OF_LIKELY(!(s->cString[i] & 0x80)))
|
︙ | | | ︙ | |
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
|
atIndex: (size_t)index
{
size_t newCStringLength;
if (index > s->length)
@throw [OFOutOfRangeException newWithClass: isa];
if (s->isUTF8)
index = of_string_index_to_position(s->cString, index,
s->cStringLength);
newCStringLength = s->cStringLength + [string UTF8StringLength];
s->cString = [self resizeMemory: s->cString
toSize: newCStringLength + 1];
|
|
|
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
|
atIndex: (size_t)index
{
size_t newCStringLength;
if (index > s->length)
@throw [OFOutOfRangeException newWithClass: isa];
if (s->UTF8)
index = of_string_index_to_position(s->cString, index,
s->cStringLength);
newCStringLength = s->cStringLength + [string UTF8StringLength];
s->cString = [self resizeMemory: s->cString
toSize: newCStringLength + 1];
|
︙ | | | ︙ | |
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
|
selector: _cmd];
if (end > s->length)
@throw [OFOutOfRangeException newWithClass: isa];
s->length -= end - start;
if (s->isUTF8) {
start = of_string_index_to_position(s->cString, start,
s->cStringLength);
end = of_string_index_to_position(s->cString, end,
s->cStringLength);
}
memmove(s->cString + start, s->cString + end, s->cStringLength - end);
|
|
|
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
|
selector: _cmd];
if (end > s->length)
@throw [OFOutOfRangeException newWithClass: isa];
s->length -= end - start;
if (s->UTF8) {
start = of_string_index_to_position(s->cString, start,
s->cStringLength);
end = of_string_index_to_position(s->cString, end,
s->cStringLength);
}
memmove(s->cString + start, s->cString + end, s->cStringLength - end);
|
︙ | | | ︙ | |
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
|
selector: _cmd];
if (end > s->length)
@throw [OFOutOfRangeException newWithClass: isa];
newLength = s->length - (end - start) + [replacement length];
if (s->isUTF8) {
start = of_string_index_to_position(s->cString, start,
s->cStringLength);
end = of_string_index_to_position(s->cString, end,
s->cStringLength);
}
newCStringLength = s->cStringLength - (end - start) +
|
|
|
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
|
selector: _cmd];
if (end > s->length)
@throw [OFOutOfRangeException newWithClass: isa];
newLength = s->length - (end - start) + [replacement length];
if (s->UTF8) {
start = of_string_index_to_position(s->cString, start,
s->cStringLength);
end = of_string_index_to_position(s->cString, end,
s->cStringLength);
}
newCStringLength = s->cStringLength - (end - start) +
|
︙ | | | ︙ | |