1#ifndef PRISM_INTERNAL_ENCODING_H
2#define PRISM_INTERNAL_ENCODING_H
20 size_t (*char_width)(
const uint8_t *b, ptrdiff_t n);
27 size_t (*alpha_char)(
const uint8_t *b, ptrdiff_t n);
34 size_t (*alnum_char)(
const uint8_t *b, ptrdiff_t n);
41 bool (*isupper_char)(
const uint8_t *b, ptrdiff_t n);
57#define PRISM_ENCODING_ALPHABETIC_BIT 1 << 0
63#define PRISM_ENCODING_ALPHANUMERIC_BIT 1 << 1
69#define PRISM_ENCODING_UPPERCASE_BIT 1 << 2
72size_t pm_encoding_utf_8_char_width(
const uint8_t *b, ptrdiff_t n);
78size_t pm_encoding_utf_8_alpha_char(
const uint8_t *b, ptrdiff_t n);
84size_t pm_encoding_utf_8_alnum_char(
const uint8_t *b, ptrdiff_t n);
90bool pm_encoding_utf_8_isupper_char(
const uint8_t *b, ptrdiff_t n);
98extern const uint8_t pm_encoding_unicode_table[256];
102 PM_ENCODING_UTF_8 = 0,
103 PM_ENCODING_US_ASCII,
104 PM_ENCODING_ASCII_8BIT,
106 PM_ENCODING_WINDOWS_31J,
110#ifndef PRISM_ENCODING_EXCLUDE_FULL
112 PM_ENCODING_BIG5_HKSCS,
113 PM_ENCODING_BIG5_UAO,
122 PM_ENCODING_EMACS_MULE,
123 PM_ENCODING_EUC_JP_MS,
124 PM_ENCODING_EUC_JIS_2004,
147 PM_ENCODING_ISO_8859_1,
148 PM_ENCODING_ISO_8859_2,
149 PM_ENCODING_ISO_8859_3,
150 PM_ENCODING_ISO_8859_4,
151 PM_ENCODING_ISO_8859_5,
152 PM_ENCODING_ISO_8859_6,
153 PM_ENCODING_ISO_8859_7,
154 PM_ENCODING_ISO_8859_8,
155 PM_ENCODING_ISO_8859_9,
156 PM_ENCODING_ISO_8859_10,
157 PM_ENCODING_ISO_8859_11,
158 PM_ENCODING_ISO_8859_13,
159 PM_ENCODING_ISO_8859_14,
160 PM_ENCODING_ISO_8859_15,
161 PM_ENCODING_ISO_8859_16,
164 PM_ENCODING_MAC_CENT_EURO,
165 PM_ENCODING_MAC_CROATIAN,
166 PM_ENCODING_MAC_CYRILLIC,
167 PM_ENCODING_MAC_GREEK,
168 PM_ENCODING_MAC_ICELAND,
169 PM_ENCODING_MAC_JAPANESE,
170 PM_ENCODING_MAC_ROMAN,
171 PM_ENCODING_MAC_ROMANIA,
172 PM_ENCODING_MAC_THAI,
173 PM_ENCODING_MAC_TURKISH,
174 PM_ENCODING_MAC_UKRAINE,
175 PM_ENCODING_SHIFT_JIS,
176 PM_ENCODING_SJIS_DOCOMO,
177 PM_ENCODING_SJIS_KDDI,
178 PM_ENCODING_SJIS_SOFTBANK,
179 PM_ENCODING_STATELESS_ISO_2022_JP,
180 PM_ENCODING_STATELESS_ISO_2022_JP_KDDI,
182 PM_ENCODING_UTF8_MAC,
183 PM_ENCODING_UTF8_DOCOMO,
184 PM_ENCODING_UTF8_KDDI,
185 PM_ENCODING_UTF8_SOFTBANK,
186 PM_ENCODING_WINDOWS_1250,
187 PM_ENCODING_WINDOWS_1251,
188 PM_ENCODING_WINDOWS_1252,
189 PM_ENCODING_WINDOWS_1253,
190 PM_ENCODING_WINDOWS_1254,
191 PM_ENCODING_WINDOWS_1255,
192 PM_ENCODING_WINDOWS_1256,
193 PM_ENCODING_WINDOWS_1257,
194 PM_ENCODING_WINDOWS_1258,
195 PM_ENCODING_WINDOWS_874,
208#define PM_ENCODING_UTF_8_ENTRY (&pm_encodings[PM_ENCODING_UTF_8])
215#define PM_ENCODING_US_ASCII_ENTRY (&pm_encodings[PM_ENCODING_US_ASCII])
222#define PM_ENCODING_ASCII_8BIT_ENTRY (&pm_encodings[PM_ENCODING_ASCII_8BIT])
228#define PM_ENCODING_EUC_JP_ENTRY (&pm_encodings[PM_ENCODING_EUC_JP])
234#define PM_ENCODING_WINDOWS_31J_ENTRY (&pm_encodings[PM_ENCODING_WINDOWS_31J])
240const pm_encoding_t * pm_encoding_find(
const uint8_t *start,
const uint8_t *end);