Line | Count | Source (jump to first uncovered line) |
1 | | |
2 | | #include "wc.h" |
3 | | #include "jis.h" |
4 | | #include "search.h" |
5 | | #ifdef USE_UNICODE |
6 | | #include "ucs.h" |
7 | | #endif |
8 | | |
9 | | #include "map/jisx0201k_jisx0208.map" |
10 | | #include "map/jisx0208_jisx02131.map" |
11 | | |
12 | | wc_wchar_t |
13 | | wc_jisx0201k_to_jisx0208(wc_wchar_t cc) |
14 | 4.64M | { |
15 | 4.64M | cc.code = jisx0201k_jisx0208_map[cc.code & 0x7f]; |
16 | 4.64M | cc.ccs = cc.code ? WC_CCS_JIS_X_0208 : WC_CCS_UNKNOWN_W; |
17 | 4.64M | return cc; |
18 | 4.64M | } |
19 | | |
20 | | wc_wchar_t |
21 | | wc_jisx0212_to_jisx0213(wc_wchar_t cc) |
22 | 0 | { |
23 | 0 | #ifdef USE_UNICODE |
24 | 0 | wc_wchar_t cc2; |
25 | 0 | static wc_table *t1 = NULL; |
26 | 0 | static wc_table *t2 = NULL; |
27 | |
|
28 | 0 | if (t1 == NULL) { |
29 | 0 | t1 = wc_get_ucs_table(WC_CCS_JIS_X_0213_1); |
30 | 0 | t2 = wc_get_ucs_table(WC_CCS_JIS_X_0213_2); |
31 | 0 | } |
32 | 0 | cc2 = wc_any_to_any(cc, t2); |
33 | 0 | if (cc2.ccs == WC_CCS_JIS_X_0212) |
34 | 0 | return cc2; |
35 | 0 | return wc_any_to_any(cc, t1); |
36 | | #else |
37 | | cc.ccs = WC_CCS_UNKNOWN_W; |
38 | | return cc; |
39 | | #endif |
40 | 0 | } |
41 | | |
42 | | wc_wchar_t |
43 | | wc_jisx0213_to_jisx0212(wc_wchar_t cc) |
44 | 0 | { |
45 | 0 | #ifdef USE_UNICODE |
46 | 0 | static wc_table *t = NULL; |
47 | |
|
48 | 0 | if (t == NULL) |
49 | 0 | t = wc_get_ucs_table(WC_CCS_JIS_X_0212); |
50 | 0 | return wc_any_to_any(cc, t); |
51 | | #else |
52 | | cc.ccs = WC_CCS_UNKNOWN_W; |
53 | | return cc; |
54 | | #endif |
55 | 0 | } |
56 | | |
57 | | wc_ccs |
58 | | wc_jisx0208_or_jisx02131(wc_uint16 code) |
59 | 5.90k | { |
60 | 5.90k | return wc_map_range_search(code & 0x7f7f, |
61 | 5.90k | jisx0208_jisx02131_map, N_jisx0208_jisx02131_map) |
62 | 5.90k | ? WC_CCS_JIS_X_0213_1 : WC_CCS_JIS_X_0208; |
63 | 5.90k | } |
64 | | |
65 | | wc_ccs |
66 | | wc_jisx0212_or_jisx02132(wc_uint16 code) |
67 | 2 | { |
68 | 2 | return wc_jisx0212_jisx02132_map[(code >> 8) & 0x7f] |
69 | 2 | ? WC_CCS_JIS_X_0213_2 : WC_CCS_JIS_X_0212; |
70 | 2 | } |