︙ | | | ︙ | |
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
return self;
}
- (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String
length: (size_t)UTF8StringLength
freeWhenDone: (bool)freeWhenDone
{
self = [self initWithUTF8String: UTF8String
length: UTF8StringLength];
if (freeWhenDone)
free(UTF8String);
return self;
}
- (void)of_convertWithWordStartTable: (const of_unichar_t *const[])startTable
wordMiddleTable: (const of_unichar_t *const[])middleTable
wordStartTableSize: (size_t)startTableSize
wordMiddleTableSize: (size_t)middleTableSize OF_DIRECT
{
of_unichar_t *unicodeString;
size_t unicodeLen, newCStringLength;
size_t i, j;
char *newCString;
bool isStart = true;
|
|
<
>
|
|
|
|
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
return self;
}
- (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String
length: (size_t)UTF8StringLength
freeWhenDone: (bool)freeWhenDone
{
self = [self initWithUTF8String: UTF8String length: UTF8StringLength];
if (freeWhenDone)
free(UTF8String);
return self;
}
#ifdef OF_HAVE_UNICODE_TABLES
- (void)of_convertWithWordStartTable: (const of_unichar_t *const [])startTable
wordMiddleTable: (const of_unichar_t *const [])middleTable
wordStartTableSize: (size_t)startTableSize
wordMiddleTableSize: (size_t)middleTableSize
{
of_unichar_t *unicodeString;
size_t unicodeLen, newCStringLength;
size_t i, j;
char *newCString;
bool isStart = true;
|
︙ | | | ︙ | |
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
_s->cStringLength = newCStringLength;
/*
* Even though cStringLength can change, length cannot, therefore no
* need to change it.
*/
}
- (void)setCharacter: (of_unichar_t)character
atIndex: (size_t)idx
{
char buffer[4];
of_unichar_t c;
size_t lenNew;
ssize_t lenOld;
if (_s->isUTF8)
|
>
|
<
|
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
_s->cStringLength = newCStringLength;
/*
* Even though cStringLength can change, length cannot, therefore no
* need to change it.
*/
}
#endif
- (void)setCharacter: (of_unichar_t)character atIndex: (size_t)idx
{
char buffer[4];
of_unichar_t c;
size_t lenNew;
ssize_t lenOld;
if (_s->isUTF8)
|
︙ | | | ︙ | |
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
|
}
- (void)appendCString: (const char *)cString
encoding: (of_string_encoding_t)encoding
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]];
|
|
<
|
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
|
}
- (void)appendCString: (const char *)cString
encoding: (of_string_encoding_t)encoding
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]];
|
︙ | | | ︙ | |
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
|
if (isUTF8)
_s->isUTF8 = true;
} @finally {
free(tmp);
}
}
- (void)appendFormat: (OFConstantString *)format
arguments: (va_list)arguments
{
char *UTF8String;
int UTF8StringLength;
if (format == nil)
@throw [OFInvalidArgumentException exception];
if ((UTF8StringLength = of_vasprintf(&UTF8String, format.UTF8String,
arguments)) == -1)
@throw [OFInvalidFormatException exception];
@try {
[self appendUTF8String: UTF8String
length: UTF8StringLength];
} @finally {
free(UTF8String);
}
}
- (void)reverse
{
|
|
<
|
<
|
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
|
if (isUTF8)
_s->isUTF8 = true;
} @finally {
free(tmp);
}
}
- (void)appendFormat: (OFConstantString *)format arguments: (va_list)arguments
{
char *UTF8String;
int UTF8StringLength;
if (format == nil)
@throw [OFInvalidArgumentException exception];
if ((UTF8StringLength = of_vasprintf(&UTF8String, format.UTF8String,
arguments)) == -1)
@throw [OFInvalidFormatException exception];
@try {
[self appendUTF8String: UTF8String length: UTF8StringLength];
} @finally {
free(UTF8String);
}
}
- (void)reverse
{
|
︙ | | | ︙ | |
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
|
}
/* UTF-8 does not allow more than 4 bytes per character */
@throw [OFInvalidEncodingException exception];
}
}
- (void)insertString: (OFString *)string
atIndex: (size_t)idx
{
size_t newCStringLength;
if (idx > _s->length)
@throw [OFOutOfRangeException exception];
if (_s->isUTF8)
|
|
<
|
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
|
}
/* UTF-8 does not allow more than 4 bytes per character */
@throw [OFInvalidEncodingException exception];
}
}
- (void)insertString: (OFString *)string atIndex: (size_t)idx
{
size_t newCStringLength;
if (idx > _s->length)
@throw [OFOutOfRangeException exception];
if (_s->isUTF8)
|
︙ | | | ︙ | |