Line | Count | Source (jump to first uncovered line) |
1 | | |
2 | | #include "wc.h" |
3 | | #include "wtf.h" |
4 | | |
5 | | Str |
6 | | wc_conv_from_priv1(Str is, wc_ces ces) |
7 | 465 | { |
8 | 465 | Str os; |
9 | 465 | wc_uchar *sp = (wc_uchar *)is->ptr; |
10 | 465 | wc_uchar *ep = sp + is->length; |
11 | 465 | wc_uchar *p; |
12 | 465 | wc_ccs ccs = WcCesInfo[WC_CCS_INDEX(ces)].gset[1].ccs; |
13 | | |
14 | 1.14k | for (p = sp; p < ep && *p < 0x80; p++) |
15 | 682 | ; |
16 | 465 | if (p == ep) |
17 | 87 | return is; |
18 | 378 | os = Strnew_size(is->length); |
19 | 378 | if (p > sp) |
20 | 38 | Strcat_charp_n(os, is->ptr, (int)(p - sp)); |
21 | | |
22 | 4.06M | for (; p < ep; p++) { |
23 | 4.06M | if (*p & 0x80) |
24 | 3.72M | wtf_push(os, ccs, (wc_uint32)*p); |
25 | 335k | else |
26 | 335k | Strcat_char(os, (char)*p); |
27 | 4.06M | } |
28 | 378 | return os; |
29 | 465 | } |
30 | | |
31 | | Str |
32 | | wc_char_conv_from_priv1(wc_uchar c, wc_status *st) |
33 | 0 | { |
34 | 0 | Str os = Strnew_size(1); |
35 | |
|
36 | 0 | if (c & 0x80) |
37 | 0 | wtf_push(os, st->ces_info->gset[1].ccs, (wc_uint32)c); |
38 | 0 | else |
39 | 0 | Strcat_char(os, (char)c); |
40 | 0 | return os; |
41 | 0 | } |
42 | | |
43 | | Str |
44 | | wc_conv_from_ascii(Str is, wc_ces ces) |
45 | 1.36k | { |
46 | 1.36k | Str os; |
47 | 1.36k | wc_uchar *sp = (wc_uchar *)is->ptr; |
48 | 1.36k | wc_uchar *ep = sp + is->length; |
49 | 1.36k | wc_uchar *p; |
50 | | |
51 | 15.9k | for (p = sp; p < ep && *p < 0x80; p++) |
52 | 14.6k | ; |
53 | 1.36k | if (p == ep) |
54 | 949 | return is; |
55 | 420 | os = Strnew_size(is->length); |
56 | 420 | if (p > sp) |
57 | 118 | Strcat_charp_n(os, is->ptr, (int)(p - sp)); |
58 | | |
59 | 2.18M | for (; p < ep; p++) { |
60 | 2.18M | if (*p & 0x80) |
61 | 1.22M | wtf_push_unknown(os, p, 1); |
62 | 957k | else |
63 | 957k | Strcat_char(os, (char)*p); |
64 | 2.18M | } |
65 | 420 | return os; |
66 | 1.36k | } |
67 | | |
68 | | void |
69 | | wc_push_to_raw(Str os, wc_wchar_t cc, wc_status *st) |
70 | 988k | { |
71 | | |
72 | 988k | switch (cc.ccs) { |
73 | 350 | case WC_CCS_US_ASCII: |
74 | 951k | case WC_CCS_RAW: |
75 | 951k | Strcat_char(os, (char)cc.code); |
76 | 988k | } |
77 | 988k | return; |
78 | 988k | } |