*** empty log message ***
[dana/urxvt.git] / src / encoding.h
1 #ifndef ENCODING_H
2 #define ENCODING_H
3
4 #include <inttypes.h>
5
6 typedef uint32_t unicode_t;
7
8 // order must match the table in encoding.C(!)
9 enum codeset {
10   CS_UNKNOWN = 0,
11   CS_US_ASCII,
12
13   CS_ISO8859_1,
14   CS_ISO8859_2,
15   CS_ISO8859_3,
16   CS_ISO8859_4,
17   CS_ISO8859_5,
18   CS_ISO8859_6,
19   CS_ISO8859_7,
20   CS_ISO8859_8,
21   CS_ISO8859_9,
22   CS_ISO8859_10,
23   CS_ISO8859_11,
24   CS_ISO8859_13,
25   CS_ISO8859_14,
26   CS_ISO8859_15,
27   CS_ISO8859_16,
28
29   CS_KOI8_R,
30   CS_KOI8_U,
31   CS_JIS0201_1976_0,
32   CS_JIS0208_1990_0,
33   CS_JIS0212_1990_0,
34   CS_JIS0213_1,
35   CS_JIS0213_2,
36
37   CS_KSC5601_1987_0,
38
39   CS_GB2312_1980_0,
40   CS_GBK_0,
41
42   CS_CNS11643_1992_1,
43   CS_CNS11643_1992_2,
44   CS_CNS11643_1992_3,
45   CS_CNS11643_1992_4,
46   CS_CNS11643_1992_5,
47   CS_CNS11643_1992_6,
48   CS_CNS11643_1992_7,
49   CS_CNS11643_1992_F,
50
51   CS_BIG5,
52   CS_BIG5_EXT,
53   CS_BIG5_PLUS,
54
55   CS_VISCII,
56
57   CS_UNICODE_16, /* 16-bit subset of unicode, for X11 */
58   CS_UNICODE,
59
60   NUM_CODESETS
61 };
62
63 codeset codeset_from_name (const char *name);
64
65 enum {
66   ZERO_WIDTH_CHAR = 0x200b,
67   REPLACEMENT_CHAR = 0xfffd,
68   NOCHAR = 65535, // must be invalid in ANY codeset (!)
69 };
70
71 struct rxvt_codeset_conv {
72   uint32_t (*from_unicode) (unicode_t unicode);
73 #if ENCODING_TO_UNICODE
74   unicode_t (*to_unicode) (uint32_t enc);
75 #endif
76 };
77
78 extern const rxvt_codeset_conv rxvt_codeset[NUM_CODESETS];
79
80 extern unicode_t rxvt_compose (unicode_t c1, unicode_t c2);
81
82 #define FROM_UNICODE(cs,code) rxvt_codeset[cs].from_unicode (code)
83 #define TO_UNICODE(cs,code)   rxvt_codeset[cs].to_unicode   (code)
84
85 struct unicode { // namespace für arme
86   static bool is_space (unicode_t c);
87 };
88
89 #endif
90