︙ | | |
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
-
+
-
+
|
return 4;
}
return 0;
}
size_t
of_string_utf16_length(const char16_t *string)
of_string_utf16_length(const of_char16_t *string)
{
size_t length = 0;
while (*string++ != 0)
length++;
return length;
}
size_t
of_string_utf32_length(const char32_t *string)
of_string_utf32_length(const of_char32_t *string)
{
size_t length = 0;
while (*string++ != 0)
length++;
return length;
|
︙ | | |
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
|
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
|
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
|
- (instancetype)initWithCharacters: (const of_unichar_t *)string
length: (size_t)length
{
return (id)[[OFString_UTF8 alloc] initWithCharacters: string
length: length];
}
- (instancetype)initWithUTF16String: (const char16_t *)string
- (instancetype)initWithUTF16String: (const of_char16_t *)string
{
return (id)[[OFString_UTF8 alloc] initWithUTF16String: string];
}
- (instancetype)initWithUTF16String: (const char16_t *)string
- (instancetype)initWithUTF16String: (const of_char16_t *)string
length: (size_t)length
{
return (id)[[OFString_UTF8 alloc] initWithUTF16String: string
length: length];
}
- (instancetype)initWithUTF16String: (const char16_t *)string
- (instancetype)initWithUTF16String: (const of_char16_t *)string
byteOrder: (of_byte_order_t)byteOrder
{
return (id)[[OFString_UTF8 alloc] initWithUTF16String: string
byteOrder: byteOrder];
}
- (instancetype)initWithUTF16String: (const char16_t *)string
- (instancetype)initWithUTF16String: (const of_char16_t *)string
length: (size_t)length
byteOrder: (of_byte_order_t)byteOrder
{
return (id)[[OFString_UTF8 alloc] initWithUTF16String: string
length: length
byteOrder: byteOrder];
}
- (instancetype)initWithUTF32String: (const char32_t *)string
- (instancetype)initWithUTF32String: (const of_char32_t *)string
{
return (id)[[OFString_UTF8 alloc] initWithUTF32String: string];
}
- (instancetype)initWithUTF32String: (const char32_t *)string
- (instancetype)initWithUTF32String: (const of_char32_t *)string
length: (size_t)length
{
return (id)[[OFString_UTF8 alloc] initWithUTF32String: string
length: length];
}
- (instancetype)initWithUTF32String: (const char32_t *)string
- (instancetype)initWithUTF32String: (const of_char32_t *)string
byteOrder: (of_byte_order_t)byteOrder
{
return (id)[[OFString_UTF8 alloc] initWithUTF32String: string
byteOrder: byteOrder];
}
- (instancetype)initWithUTF32String: (const char32_t *)string
- (instancetype)initWithUTF32String: (const of_char32_t *)string
length: (size_t)length
byteOrder: (of_byte_order_t)byteOrder
{
return (id)[[OFString_UTF8 alloc] initWithUTF32String: string
length: length
byteOrder: byteOrder];
}
|
︙ | | |
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
|
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
|
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
|
+ (instancetype)stringWithCharacters: (const of_unichar_t *)string
length: (size_t)length
{
return [[[self alloc] initWithCharacters: string
length: length] autorelease];
}
+ (instancetype)stringWithUTF16String: (const char16_t *)string
+ (instancetype)stringWithUTF16String: (const of_char16_t *)string
{
return [[[self alloc] initWithUTF16String: string] autorelease];
}
+ (instancetype)stringWithUTF16String: (const char16_t *)string
+ (instancetype)stringWithUTF16String: (const of_char16_t *)string
length: (size_t)length
{
return [[[self alloc] initWithUTF16String: string
length: length] autorelease];
}
+ (instancetype)stringWithUTF16String: (const char16_t *)string
+ (instancetype)stringWithUTF16String: (const of_char16_t *)string
byteOrder: (of_byte_order_t)byteOrder
{
return [[[self alloc] initWithUTF16String: string
byteOrder: byteOrder] autorelease];
}
+ (instancetype)stringWithUTF16String: (const char16_t *)string
+ (instancetype)stringWithUTF16String: (const of_char16_t *)string
length: (size_t)length
byteOrder: (of_byte_order_t)byteOrder
{
return [[[self alloc] initWithUTF16String: string
length: length
byteOrder: byteOrder] autorelease];
}
+ (instancetype)stringWithUTF32String: (const char32_t *)string
+ (instancetype)stringWithUTF32String: (const of_char32_t *)string
{
return [[[self alloc] initWithUTF32String: string] autorelease];
}
+ (instancetype)stringWithUTF32String: (const char32_t *)string
+ (instancetype)stringWithUTF32String: (const of_char32_t *)string
length: (size_t)length
{
return [[[self alloc] initWithUTF32String: string
length: length] autorelease];
}
+ (instancetype)stringWithUTF32String: (const char32_t *)string
+ (instancetype)stringWithUTF32String: (const of_char32_t *)string
byteOrder: (of_byte_order_t)byteOrder
{
return [[[self alloc] initWithUTF32String: string
byteOrder: byteOrder] autorelease];
}
+ (instancetype)stringWithUTF32String: (const char32_t *)string
+ (instancetype)stringWithUTF32String: (const of_char32_t *)string
length: (size_t)length
byteOrder: (of_byte_order_t)byteOrder
{
return [[[self alloc] initWithUTF32String: string
length: length
byteOrder: byteOrder] autorelease];
}
|
︙ | | |
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
|
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
|
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
|
- (instancetype)initWithCharacters: (const of_unichar_t *)string
length: (size_t)length
{
OF_INVALID_INIT_METHOD
}
- (instancetype)initWithUTF16String: (const char16_t *)string
- (instancetype)initWithUTF16String: (const of_char16_t *)string
{
return [self initWithUTF16String: string
length: of_string_utf16_length(string)
byteOrder: OF_BYTE_ORDER_NATIVE];
}
- (instancetype)initWithUTF16String: (const char16_t *)string
- (instancetype)initWithUTF16String: (const of_char16_t *)string
length: (size_t)length
{
return [self initWithUTF16String: string
length: length
byteOrder: OF_BYTE_ORDER_NATIVE];
}
- (instancetype)initWithUTF16String: (const char16_t *)string
- (instancetype)initWithUTF16String: (const of_char16_t *)string
byteOrder: (of_byte_order_t)byteOrder
{
return [self initWithUTF16String: string
length: of_string_utf16_length(string)
byteOrder: byteOrder];
}
- (instancetype)initWithUTF16String: (const char16_t *)string
- (instancetype)initWithUTF16String: (const of_char16_t *)string
length: (size_t)length
byteOrder: (of_byte_order_t)byteOrder
{
OF_INVALID_INIT_METHOD
}
- (instancetype)initWithUTF32String: (const char32_t *)string
- (instancetype)initWithUTF32String: (const of_char32_t *)string
{
return [self initWithUTF32String: string
length: of_string_utf32_length(string)
byteOrder: OF_BYTE_ORDER_NATIVE];
}
- (instancetype)initWithUTF32String: (const char32_t *)string
- (instancetype)initWithUTF32String: (const of_char32_t *)string
length: (size_t)length
{
return [self initWithUTF32String: string
length: length
byteOrder: OF_BYTE_ORDER_NATIVE];
}
- (instancetype)initWithUTF32String: (const char32_t *)string
- (instancetype)initWithUTF32String: (const of_char32_t *)string
byteOrder: (of_byte_order_t)byteOrder
{
return [self initWithUTF32String: string
length: of_string_utf32_length(string)
byteOrder: byteOrder];
}
- (instancetype)initWithUTF32String: (const char32_t *)string
- (instancetype)initWithUTF32String: (const of_char32_t *)string
length: (size_t)length
byteOrder: (of_byte_order_t)byteOrder
{
OF_INVALID_INIT_METHOD
}
- (instancetype)initWithFormat: (OFConstantString *)format, ...
|
︙ | | |
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
|
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
|
-
+
-
+
-
+
-
+
|
count: length];
[self getCharacters: ret
inRange: of_range(0, length)];
return ret;
}
- (const char16_t *)UTF16String
- (const of_char16_t *)UTF16String
{
return [self UTF16StringWithByteOrder: OF_BYTE_ORDER_NATIVE];
}
- (const char16_t *)UTF16StringWithByteOrder: (of_byte_order_t)byteOrder
- (const of_char16_t *)UTF16StringWithByteOrder: (of_byte_order_t)byteOrder
{
OFObject *object = [[[OFObject alloc] init] autorelease];
void *pool = objc_autoreleasePoolPush();
const of_unichar_t *characters = [self characters];
size_t length = [self length];
char16_t *ret;
of_char16_t *ret;
size_t j;
bool swap = (byteOrder != OF_BYTE_ORDER_NATIVE);
/* Allocate memory for the worst case */
ret = [object allocMemoryWithSize: sizeof(char16_t)
ret = [object allocMemoryWithSize: sizeof(of_char16_t)
count: (length + 1) * 2];
j = 0;
for (size_t i = 0; i < length; i++) {
of_unichar_t c = characters[i];
if (c > 0x10FFFF)
|
︙ | | |
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
|
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
|
-
+
|
ret[j++] = c;
}
}
ret[j] = 0;
@try {
ret = [object resizeMemory: ret
size: sizeof(char16_t)
size: sizeof(of_char16_t)
count: j + 1];
} @catch (OFOutOfMemoryException *e) {
/* We don't care, as we only tried to make it smaller */
}
objc_autoreleasePoolPop(pool);
|
︙ | | |
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
|
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
|
-
+
-
+
-
+
-
+
|
for (size_t i = 0; i < length; i++)
if (characters[i] > 0xFFFF)
UTF16StringLength++;
return UTF16StringLength;
}
- (const char32_t *)UTF32String
- (const of_char32_t *)UTF32String
{
return [self UTF32StringWithByteOrder: OF_BYTE_ORDER_NATIVE];
}
- (const char32_t *)UTF32StringWithByteOrder: (of_byte_order_t)byteOrder
- (const of_char32_t *)UTF32StringWithByteOrder: (of_byte_order_t)byteOrder
{
OFObject *object = [[[OFObject alloc] init] autorelease];
size_t length = [self length];
char32_t *ret;
of_char32_t *ret;
ret = [object allocMemoryWithSize: sizeof(char32_t)
ret = [object allocMemoryWithSize: sizeof(of_char32_t)
count: length + 1];
[self getCharacters: ret
inRange: of_range(0, length)];
ret[length] = 0;
if (byteOrder != OF_BYTE_ORDER_NATIVE)
for (size_t i = 0; i < length; i++)
|
︙ | | |