1 | #ifndef ENCODING_H |
1 | #ifndef ENCODING_H |
2 | #define ENCODING_H |
2 | #define ENCODING_H |
3 | |
3 | |
4 | #include <stdint.h> |
4 | #include <inttypes.h> |
5 | |
5 | |
|
|
6 | typedef uint32_t unicode_t; |
|
|
7 | |
|
|
8 | // order must match the table in encoding.C(!) |
6 | enum codeset { |
9 | enum codeset { |
7 | CS_UNKNOWN = 0, |
10 | CS_UNKNOWN = 0, |
8 | CS_SPECIAL, |
|
|
9 | CS_US_ASCII, |
11 | CS_US_ASCII, |
10 | |
12 | |
11 | CS_ISO8859_1, |
13 | CS_ISO8859_1, |
12 | CS_ISO8859_2, |
14 | CS_ISO8859_2, |
13 | CS_ISO8859_3, |
15 | CS_ISO8859_3, |
… | |
… | |
25 | CS_ISO8859_16, |
27 | CS_ISO8859_16, |
26 | |
28 | |
27 | CS_KOI8_R, |
29 | CS_KOI8_R, |
28 | CS_KOI8_U, |
30 | CS_KOI8_U, |
29 | CS_JIS0201_1976_0, |
31 | CS_JIS0201_1976_0, |
30 | CS_JIS0208_1983_0, |
32 | CS_JIS0208_1990_0, |
31 | CS_JIS0212_1990_0, |
33 | CS_JIS0212_1990_0, |
32 | |
|
|
33 | CS_JIS0213_1, |
34 | CS_JIS0213_1, |
34 | CS_JIS0213_2, |
35 | CS_JIS0213_2, |
35 | |
36 | |
36 | CS_KSC5601_1987_0, |
37 | CS_KSC5601_1987_0, |
37 | |
38 | |
… | |
… | |
44 | CS_CNS11643_1992_5, |
45 | CS_CNS11643_1992_5, |
45 | CS_CNS11643_1992_6, |
46 | CS_CNS11643_1992_6, |
46 | CS_CNS11643_1992_7, |
47 | CS_CNS11643_1992_7, |
47 | CS_CNS11643_1992_F, |
48 | CS_CNS11643_1992_F, |
48 | |
49 | |
|
|
50 | CS_BIG5, |
49 | CS_BIG5_EXT, |
51 | CS_BIG5_EXT, |
50 | CS_BIG5_PLUS, |
52 | CS_BIG5_PLUS, |
51 | |
53 | |
52 | CS_VISCII, |
54 | CS_VISCII, |
53 | |
55 | |
… | |
… | |
59 | |
61 | |
60 | codeset codeset_from_name (const char *name); |
62 | codeset codeset_from_name (const char *name); |
61 | |
63 | |
62 | enum { |
64 | enum { |
63 | ZERO_WIDTH_CHAR = 0x200b, |
65 | ZERO_WIDTH_CHAR = 0x200b, |
|
|
66 | REPLACEMENT_CHAR = 0xfffd, |
64 | NOCHAR = 65535, // must be invalid in ANY codeset(!) |
67 | NOCHAR = 65535, // must be invalid in ANY codeset (!) |
65 | }; |
68 | }; |
66 | |
69 | |
67 | struct rxvt_codeset_conv { |
70 | struct rxvt_codeset_conv { |
68 | virtual uint32_t from_unicode (uint32_t unicode) const { return unicode; } |
71 | virtual uint32_t from_unicode (unicode_t unicode) const { return unicode; } |
|
|
72 | #if ENCODING_TO_UNICODE |
69 | virtual uint32_t to_unicode (uint32_t enc) const { return enc; } |
73 | virtual unicode_t to_unicode (uint32_t enc) const { return enc; } |
|
|
74 | #endif |
70 | }; |
75 | }; |
71 | |
76 | |
72 | extern const rxvt_codeset_conv *rxvt_codeset[NUM_CODESETS]; |
77 | extern const rxvt_codeset_conv *rxvt_codeset[NUM_CODESETS]; |
73 | |
78 | |
|
|
79 | extern unicode_t rxvt_compose (unicode_t c1, unicode_t c2); |
|
|
80 | |
74 | #define FROM_UNICODE(cs,code) rxvt_codeset[cs]->from_unicode (code) |
81 | #define FROM_UNICODE(cs,code) rxvt_codeset[cs]->from_unicode (code) |
75 | #define TO_UNICODE(cs,code) rxvt_codeset[cs]->to_unicode (code) |
82 | #define TO_UNICODE(cs,code) rxvt_codeset[cs]->to_unicode (code) |
76 | |
83 | |
|
|
84 | struct unicode { // namespace für arme |
|
|
85 | static bool is_space (unicode_t c); |
|
|
86 | }; |
|
|
87 | |
77 | #endif |
88 | #endif |
78 | |
89 | |