"7bit",
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ NULL,
+ NULL
};
const struct mbfl_convert_vtbl vtbl_8bit_7bit = {
"ArmSCII-8",
(const char *(*)[])&mbfl_encoding_armscii8_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_armscii8_wchar,
+ &vtbl_wchar_armscii8
};
const struct mbfl_identify_vtbl vtbl_identify_armscii8 = {
"US-ASCII", /* preferred MIME name */
(const char *(*)[])&mbfl_encoding_ascii_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_ascii_wchar,
+ &vtbl_wchar_ascii
};
const struct mbfl_identify_vtbl vtbl_identify_ascii = {
"BASE64",
NULL,
NULL,
- MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE,
+ NULL,
+ NULL
};
const struct mbfl_convert_vtbl vtbl_8bit_b64 = {
"BIG5",
(const char *(*)[])&mbfl_encoding_big5_aliases,
mblen_table_big5,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_big5_wchar,
+ &vtbl_wchar_big5
};
const mbfl_encoding mbfl_encoding_cp950 = {
"BIG5",
NULL,
mblen_table_big5,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp950_wchar,
+ &vtbl_wchar_cp950
};
const struct mbfl_identify_vtbl vtbl_identify_big5 = {
NULL,
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_byte2be_wchar,
+ &vtbl_wchar_byte2be
};
const mbfl_encoding mbfl_encoding_byte2le = {
NULL,
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_byte2le_wchar,
+ &vtbl_wchar_byte2le
};
const struct mbfl_convert_vtbl vtbl_byte2be_wchar = {
NULL,
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_byte4be_wchar,
+ &vtbl_wchar_byte4be
};
const mbfl_encoding mbfl_encoding_byte4le = {
NULL,
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_byte4le_wchar,
+ &vtbl_wchar_byte4le
};
const struct mbfl_convert_vtbl vtbl_byte4be_wchar = {
"Windows-1251",
(const char *(*)[])&mbfl_encoding_cp1251_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_cp1251_wchar,
+ &vtbl_wchar_cp1251
};
const struct mbfl_identify_vtbl vtbl_identify_cp1251 = {
"Windows-1252",
(const char *(*)[])&mbfl_encoding_cp1252_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_cp1252_wchar,
+ &vtbl_wchar_cp1252
};
const struct mbfl_identify_vtbl vtbl_identify_cp1252 = {
"Windows-1254",
(const char *(*)[])&mbfl_encoding_cp1254_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_cp1254_wchar,
+ &vtbl_wchar_cp1254
};
const struct mbfl_identify_vtbl vtbl_identify_cp1254 = {
"ISO-2022-JP",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_jis_ms_wchar,
+ &vtbl_wchar_jis_ms
};
const mbfl_encoding mbfl_encoding_cp50220 = {
"ISO-2022-JP",
(const char *(*)[])NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp50220_wchar,
+ &vtbl_wchar_cp50220
};
const mbfl_encoding mbfl_encoding_cp50220raw = {
"ISO-2022-JP",
(const char *(*)[])NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp50220raw_wchar,
+ &vtbl_wchar_cp50220raw
};
const mbfl_encoding mbfl_encoding_cp50221 = {
"ISO-2022-JP",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp50221_wchar,
+ &vtbl_wchar_cp50221
};
const mbfl_encoding mbfl_encoding_cp50222 = {
"ISO-2022-JP",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp50222_wchar,
+ &vtbl_wchar_cp50222
};
const struct mbfl_identify_vtbl vtbl_identify_jis_ms = {
"CP51932",
(const char *(*)[])&mbfl_encoding_cp51932_aliases,
mblen_table_eucjp,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_cp51932_wchar,
+ &vtbl_wchar_cp51932
};
const struct mbfl_convert_vtbl vtbl_cp51932_wchar = {
"CP850",
(const char *(*)[])&mbfl_encoding_cp850_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_cp850_wchar,
+ &vtbl_wchar_cp850
};
const struct mbfl_identify_vtbl vtbl_identify_cp850 = {
"CP866",
(const char *(*)[])&mbfl_encoding_cp866_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_cp866_wchar,
+ &vtbl_wchar_cp866
};
const struct mbfl_identify_vtbl vtbl_identify_cp866 = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_cp932_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp932_wchar,
+ &vtbl_wchar_cp932
};
const struct mbfl_identify_vtbl vtbl_identify_cp932 = {
"CP936",
(const char *(*)[])&mbfl_encoding_cp936_aliases,
mblen_table_cp936,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp936_wchar,
+ &vtbl_wchar_cp936
};
const struct mbfl_identify_vtbl vtbl_identify_cp936 = {
"CN-GB",
(const char *(*)[])&mbfl_encoding_euc_cn_aliases,
mblen_table_euccn,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_euccn_wchar,
+ &vtbl_wchar_euccn
};
const struct mbfl_identify_vtbl vtbl_identify_euccn = {
"EUC-JP",
(const char *(*)[])&mbfl_encoding_euc_jp_aliases,
mblen_table_eucjp,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_eucjp_wchar,
+ &vtbl_wchar_eucjp
};
const struct mbfl_identify_vtbl vtbl_identify_eucjp = {
"EUC-JP",
(const char *(*)[])&mbfl_encoding_eucjp2004_aliases,
mblen_table_eucjp,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_eucjp2004_wchar,
+ &vtbl_wchar_eucjp2004
};
const struct mbfl_identify_vtbl vtbl_identify_eucjp2004 = {
"EUC-JP",
(const char *(*)[])&mbfl_encoding_eucjp_win_aliases,
mblen_table_eucjp,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_eucjpwin_wchar,
+ &vtbl_wchar_eucjpwin
};
const struct mbfl_convert_vtbl vtbl_eucjpwin_wchar = {
"EUC-KR",
(const char *(*)[])&mbfl_encoding_euc_kr_aliases,
mblen_table_euckr,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_euckr_wchar,
+ &vtbl_wchar_euckr
};
const struct mbfl_identify_vtbl vtbl_identify_euckr = {
"GB18030",
(const char *(*)[])&mbfl_encoding_gb18030_aliases,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_gb18030_wchar,
+ &vtbl_wchar_gb18030
};
const struct mbfl_identify_vtbl vtbl_identify_gb18030 = {
"HTML-ENTITIES",
(const char *(*)[])&mbfl_encoding_html_ent_aliases,
NULL,
- MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_html_wchar,
+ &vtbl_wchar_html
};
const struct mbfl_convert_vtbl vtbl_wchar_html = {
"HZ-GB-2312",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_hz_wchar,
+ &vtbl_wchar_hz
};
const struct mbfl_identify_vtbl vtbl_identify_hz = {
"ISO-2022-JP",
(const char *(*)[])&mbfl_encoding_2022jpms_aliases,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_2022jpms_wchar,
+ &vtbl_wchar_2022jpms
};
const struct mbfl_identify_vtbl vtbl_identify_2022jpms = {
"ISO-2022-KR",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_2022kr_wchar,
+ &vtbl_wchar_2022kr
};
const struct mbfl_identify_vtbl vtbl_identify_2022kr = {
"ISO-2022-JP-2004",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_2022jp_2004_wchar,
+ &vtbl_wchar_2022jp_2004
};
const struct mbfl_identify_vtbl vtbl_identify_2022jp_2004 = {
"ISO-2022-JP",
&mbfl_encoding_2022jp_kddi_aliases,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_2022jp_kddi_wchar,
+ &vtbl_wchar_2022jp_kddi
};
const struct mbfl_identify_vtbl vtbl_identify_2022jp_kddi = {
"ISO-8859-1",
(const char *(*)[])&mbfl_encoding_8859_1_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_1_wchar,
+ &vtbl_wchar_8859_1
};
const struct mbfl_identify_vtbl vtbl_identify_8859_1 = {
"ISO-8859-10",
(const char *(*)[])&mbfl_encoding_8859_10_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_10_wchar,
+ &vtbl_wchar_8859_10
};
const struct mbfl_identify_vtbl vtbl_identify_8859_10 = {
"ISO-8859-13",
(const char *(*)[])&mbfl_encoding_8859_13_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_13_wchar,
+ &vtbl_wchar_8859_13
};
const struct mbfl_identify_vtbl vtbl_identify_8859_13 = {
"ISO-8859-14",
(const char *(*)[])&mbfl_encoding_8859_14_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_14_wchar,
+ &vtbl_wchar_8859_14
};
const struct mbfl_identify_vtbl vtbl_identify_8859_14 = {
"ISO-8859-15",
(const char *(*)[])&mbfl_encoding_8859_15_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_15_wchar,
+ &vtbl_wchar_8859_15
};
const struct mbfl_identify_vtbl vtbl_identify_8859_15 = {
"ISO-8859-16",
(const char *(*)[])&mbfl_encoding_8859_16_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_16_wchar,
+ &vtbl_wchar_8859_16
};
const struct mbfl_identify_vtbl vtbl_identify_8859_16 = {
"ISO-8859-2",
(const char *(*)[])&mbfl_encoding_8859_2_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_2_wchar,
+ &vtbl_wchar_8859_2
};
const struct mbfl_identify_vtbl vtbl_identify_8859_2 = {
"ISO-8859-3",
(const char *(*)[])&mbfl_encoding_8859_3_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_3_wchar,
+ &vtbl_wchar_8859_3
};
const struct mbfl_identify_vtbl vtbl_identify_8859_3 = {
"ISO-8859-4",
(const char *(*)[])&mbfl_encoding_8859_4_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_4_wchar,
+ &vtbl_wchar_8859_4
};
const struct mbfl_identify_vtbl vtbl_identify_8859_4 = {
"ISO-8859-5",
(const char *(*)[])&mbfl_encoding_8859_5_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_5_wchar,
+ &vtbl_wchar_8859_5
};
const struct mbfl_identify_vtbl vtbl_identify_8859_5 = {
"ISO-8859-6",
(const char *(*)[])&mbfl_encoding_8859_6_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_6_wchar,
+ &vtbl_wchar_8859_6
};
const struct mbfl_identify_vtbl vtbl_identify_8859_6 = {
"ISO-8859-7",
(const char *(*)[])&mbfl_encoding_8859_7_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_7_wchar,
+ &vtbl_wchar_8859_7
};
const struct mbfl_identify_vtbl vtbl_identify_8859_7 = {
"ISO-8859-8",
(const char *(*)[])&mbfl_encoding_8859_8_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_8_wchar,
+ &vtbl_wchar_8859_8
};
const struct mbfl_identify_vtbl vtbl_identify_8859_8 = {
"ISO-8859-9",
(const char *(*)[])&mbfl_encoding_8859_9_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_9_wchar,
+ &vtbl_wchar_8859_9
};
const struct mbfl_identify_vtbl vtbl_identify_8859_9 = {
"ISO-2022-JP",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_jis_wchar,
+ &vtbl_wchar_jis
};
const mbfl_encoding mbfl_encoding_2022jp = {
"ISO-2022-JP",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_2022jp_wchar,
+ &vtbl_wchar_2022jp
};
const struct mbfl_identify_vtbl vtbl_identify_jis = {
"KOI8-R",
(const char *(*)[])&mbfl_encoding_koi8r_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_koi8r_wchar,
+ &vtbl_wchar_koi8r
};
const struct mbfl_identify_vtbl vtbl_identify_koi8r = {
"KOI8-U",
(const char *(*)[])&mbfl_encoding_koi8u_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_koi8u_wchar,
+ &vtbl_wchar_koi8u
};
const struct mbfl_identify_vtbl vtbl_identify_koi8u = {
"Quoted-Printable",
(const char *(*)[])&mbfl_encoding_qprint_aliases,
NULL,
- MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE,
+ NULL,
+ NULL
};
const struct mbfl_convert_vtbl vtbl_8bit_qprint = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_wchar,
+ &vtbl_wchar_sjis
};
const struct mbfl_identify_vtbl vtbl_identify_sjis = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis2004_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis2004_wchar,
+ &vtbl_wchar_sjis2004
};
const struct mbfl_identify_vtbl vtbl_identify_sjis2004 = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_mac_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_mac_wchar,
+ &vtbl_wchar_sjis_mac
};
const struct mbfl_identify_vtbl vtbl_identify_sjis_mac = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_docomo_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_docomo_wchar,
+ &vtbl_wchar_sjis_docomo
};
const mbfl_encoding mbfl_encoding_sjis_kddi = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_kddi_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_kddi_wchar,
+ &vtbl_wchar_sjis_kddi
};
const mbfl_encoding mbfl_encoding_sjis_sb = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_sb_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_sb_wchar,
+ &vtbl_wchar_sjis_sb
};
const struct mbfl_identify_vtbl vtbl_identify_sjis_docomo = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_open_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_open_wchar,
+ &vtbl_wchar_sjis_open
};
const struct mbfl_identify_vtbl vtbl_identify_sjis_open = {
"UCS-2",
(const char *(*)[])&mbfl_encoding_ucs2_aliases,
NULL,
- MBFL_ENCTYPE_WCS2BE
+ MBFL_ENCTYPE_WCS2BE,
+ &vtbl_ucs2_wchar,
+ &vtbl_wchar_ucs2
};
const mbfl_encoding mbfl_encoding_ucs2be = {
"UCS-2BE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS2BE
+ MBFL_ENCTYPE_WCS2BE,
+ &vtbl_ucs2be_wchar,
+ &vtbl_wchar_ucs2be
};
const mbfl_encoding mbfl_encoding_ucs2le = {
"UCS-2LE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS2LE
+ MBFL_ENCTYPE_WCS2LE,
+ &vtbl_ucs2le_wchar,
+ &vtbl_wchar_ucs2le
};
const struct mbfl_convert_vtbl vtbl_ucs2_wchar = {
"UCS-4",
(const char *(*)[])&mbfl_encoding_ucs4_aliases,
NULL,
- MBFL_ENCTYPE_WCS4BE
+ MBFL_ENCTYPE_WCS4BE,
+ &vtbl_ucs4_wchar,
+ &vtbl_wchar_ucs4
};
const mbfl_encoding mbfl_encoding_ucs4be = {
"UCS-4BE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS4BE
+ MBFL_ENCTYPE_WCS4BE,
+ &vtbl_ucs4be_wchar,
+ &vtbl_wchar_ucs4be
};
const mbfl_encoding mbfl_encoding_ucs4le = {
"UCS-4LE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS4LE
+ MBFL_ENCTYPE_WCS4LE,
+ &vtbl_ucs4le_wchar,
+ &vtbl_wchar_ucs4le
};
const struct mbfl_convert_vtbl vtbl_ucs4_wchar = {
"UHC",
(const char *(*)[])&mbfl_encoding_uhc_aliases,
mblen_table_uhc,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_uhc_wchar,
+ &vtbl_wchar_uhc
};
const struct mbfl_identify_vtbl vtbl_identify_uhc = {
"UTF-16",
(const char *(*)[])&mbfl_encoding_utf16_aliases,
NULL,
- MBFL_ENCTYPE_MWC2BE
+ MBFL_ENCTYPE_MWC2BE,
+ &vtbl_utf16_wchar,
+ &vtbl_wchar_utf16
};
const mbfl_encoding mbfl_encoding_utf16be = {
"UTF-16BE",
NULL,
NULL,
- MBFL_ENCTYPE_MWC2BE
+ MBFL_ENCTYPE_MWC2BE,
+ &vtbl_utf16be_wchar,
+ &vtbl_wchar_utf16be
};
const mbfl_encoding mbfl_encoding_utf16le = {
"UTF-16LE",
NULL,
NULL,
- MBFL_ENCTYPE_MWC2LE
+ MBFL_ENCTYPE_MWC2LE,
+ &vtbl_utf16le_wchar,
+ &vtbl_wchar_utf16le
};
const struct mbfl_convert_vtbl vtbl_utf16_wchar = {
"UTF-32",
(const char *(*)[])&mbfl_encoding_utf32_aliases,
NULL,
- MBFL_ENCTYPE_WCS4BE
+ MBFL_ENCTYPE_WCS4BE,
+ &vtbl_utf32_wchar,
+ &vtbl_wchar_utf32
};
const mbfl_encoding mbfl_encoding_utf32be = {
"UTF-32BE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS4BE
+ MBFL_ENCTYPE_WCS4BE,
+ &vtbl_utf32be_wchar,
+ &vtbl_wchar_utf32be
};
const mbfl_encoding mbfl_encoding_utf32le = {
"UTF-32LE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS4LE
+ MBFL_ENCTYPE_WCS4LE,
+ &vtbl_utf32le_wchar,
+ &vtbl_wchar_utf32le
};
const struct mbfl_convert_vtbl vtbl_utf32_wchar = {
"UTF-7",
(const char *(*)[])&mbfl_encoding_utf7_aliases,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_utf7_wchar,
+ &vtbl_wchar_utf7
};
const struct mbfl_identify_vtbl vtbl_identify_utf7 = {
"UTF-8",
(const char *(*)[])&mbfl_encoding_utf8_aliases,
mblen_table_utf8,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_utf8_wchar,
+ &vtbl_wchar_utf8
};
const struct mbfl_identify_vtbl vtbl_identify_utf8 = {
"UTF-8",
(const char *(*)[])&mbfl_encoding_utf8_docomo_aliases,
mblen_table_utf8,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_utf8_docomo_wchar,
+ &vtbl_wchar_utf8_docomo
};
const mbfl_encoding mbfl_encoding_utf8_kddi_a = {
"UTF-8",
(const char *(*)[])&mbfl_encoding_utf8_kddi_a_aliases,
mblen_table_utf8,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_utf8_kddi_a_wchar,
+ &vtbl_wchar_utf8_kddi_a
};
const mbfl_encoding mbfl_encoding_utf8_kddi_b = {
"UTF-8",
(const char *(*)[])&mbfl_encoding_utf8_kddi_b_aliases,
mblen_table_utf8,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_utf8_kddi_b_wchar,
+ &vtbl_wchar_utf8_kddi_b
};
const mbfl_encoding mbfl_encoding_utf8_sb = {
"UTF-8",
(const char *(*)[])&mbfl_encoding_utf8_sb_aliases,
mblen_table_utf8,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_utf8_sb_wchar,
+ &vtbl_wchar_utf8_sb
};
const struct mbfl_identify_vtbl vtbl_identify_utf8_docomo = {
"x-uuencode",
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ NULL,
+ NULL
};
const struct mbfl_convert_vtbl vtbl_uuencode_8bit = {
/* create convert filter */
convd->filter1 = NULL;
convd->filter2 = NULL;
- if (mbfl_convert_filter_get_vtbl(convd->from->no_encoding, convd->to->no_encoding) != NULL) {
+ if (mbfl_convert_filter_get_vtbl(convd->from, convd->to) != NULL) {
convd->filter1 = mbfl_convert_filter_new(convd->from, convd->to, mbfl_memory_device_output, NULL, &convd->device);
} else {
convd->filter2 = mbfl_convert_filter_new(&mbfl_encoding_wchar, convd->to, mbfl_memory_device_output, NULL, &convd->device);
filter1 = NULL;
filter2 = NULL;
- if (mbfl_convert_filter_get_vtbl(string->encoding->no_encoding, toenc->no_encoding) != NULL) {
+ if (mbfl_convert_filter_get_vtbl(string->encoding, toenc) != NULL) {
filter1 = mbfl_convert_filter_new(string->encoding, toenc, mbfl_memory_device_output, 0, &device);
} else {
filter2 = mbfl_convert_filter_new(&mbfl_encoding_wchar, toenc, mbfl_memory_device_output, 0, &device);
"8bit",
(const char *(*)[])&mbfl_encoding_8bit_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ NULL,
+ NULL
};
NULL,
(const char *(*)[])&mbfl_encoding_pass_aliases,
NULL,
- 0
+ 0,
+ NULL,
+ NULL
};
const struct mbfl_convert_vtbl vtbl_pass = {
NULL,
NULL,
NULL,
- MBFL_ENCTYPE_WCS4BE
+ MBFL_ENCTYPE_WCS4BE,
+ NULL,
+ NULL
};
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46
};
-/* Input filters going from encoding -> wchar */
-static const struct mbfl_convert_vtbl *mbfl_input_filter_list[] = {
- &vtbl_utf8_wchar,
- &vtbl_eucjp_wchar,
- &vtbl_sjis_wchar,
- &vtbl_sjis_open_wchar,
- &vtbl_sjis2004_wchar,
- &vtbl_cp51932_wchar,
- &vtbl_jis_wchar,
- &vtbl_jis_ms_wchar,
- &vtbl_2022jp_wchar,
- &vtbl_2022jpms_wchar,
- &vtbl_2022jp_2004_wchar,
- &vtbl_2022jp_kddi_wchar,
- &vtbl_eucjpwin_wchar,
- &vtbl_eucjp2004_wchar,
- &vtbl_cp932_wchar,
- &vtbl_sjis_docomo_wchar,
- &vtbl_sjis_kddi_wchar,
- &vtbl_sjis_sb_wchar,
- &vtbl_sjis_mac_wchar,
- &vtbl_utf8_docomo_wchar,
- &vtbl_utf8_kddi_a_wchar,
- &vtbl_utf8_kddi_b_wchar,
- &vtbl_utf8_sb_wchar,
- &vtbl_euccn_wchar,
- &vtbl_cp936_wchar,
- &vtbl_gb18030_wchar,
- &vtbl_hz_wchar,
- &vtbl_euctw_wchar,
- &vtbl_big5_wchar,
- &vtbl_cp950_wchar,
- &vtbl_euckr_wchar,
- &vtbl_uhc_wchar,
- &vtbl_2022kr_wchar,
- &vtbl_cp1251_wchar,
- &vtbl_cp866_wchar,
- &vtbl_koi8r_wchar,
- &vtbl_koi8u_wchar,
- &vtbl_cp1252_wchar,
- &vtbl_cp1254_wchar,
- &vtbl_cp50220_wchar,
- &vtbl_cp50220raw_wchar,
- &vtbl_cp50221_wchar,
- &vtbl_cp50222_wchar,
- &vtbl_ascii_wchar,
- &vtbl_8859_1_wchar,
- &vtbl_8859_2_wchar,
- &vtbl_8859_3_wchar,
- &vtbl_8859_4_wchar,
- &vtbl_8859_5_wchar,
- &vtbl_8859_6_wchar,
- &vtbl_8859_7_wchar,
- &vtbl_8859_8_wchar,
- &vtbl_8859_9_wchar,
- &vtbl_8859_10_wchar,
- &vtbl_8859_13_wchar,
- &vtbl_8859_14_wchar,
- &vtbl_8859_15_wchar,
- &vtbl_html_wchar,
- &vtbl_utf7_wchar,
- &vtbl_utf7imap_wchar,
- &vtbl_utf16_wchar,
- &vtbl_utf16be_wchar,
- &vtbl_utf16le_wchar,
- &vtbl_utf32_wchar,
- &vtbl_utf32be_wchar,
- &vtbl_utf32le_wchar,
- &vtbl_ucs4_wchar,
- &vtbl_ucs4be_wchar,
- &vtbl_ucs4le_wchar,
- &vtbl_ucs2_wchar,
- &vtbl_ucs2be_wchar,
- &vtbl_ucs2le_wchar,
- &vtbl_byte4be_wchar,
- &vtbl_byte4le_wchar,
- &vtbl_byte2be_wchar,
- &vtbl_byte2le_wchar,
- &vtbl_armscii8_wchar,
- &vtbl_cp850_wchar,
- NULL
-};
-
-/* Output filters going from wchar -> encoding */
-static const struct mbfl_convert_vtbl *mbfl_output_filter_list[] = {
- &vtbl_wchar_utf8,
- &vtbl_wchar_eucjp,
- &vtbl_wchar_sjis,
- &vtbl_wchar_sjis_open,
- &vtbl_wchar_sjis2004,
- &vtbl_wchar_cp51932,
- &vtbl_wchar_jis,
- &vtbl_wchar_jis_ms,
- &vtbl_wchar_2022jp,
- &vtbl_wchar_2022jpms,
- &vtbl_wchar_2022jp_2004,
- &vtbl_wchar_2022jp_kddi,
- &vtbl_wchar_eucjpwin,
- &vtbl_wchar_eucjp2004,
- &vtbl_wchar_cp932,
- &vtbl_wchar_sjis_docomo,
- &vtbl_wchar_sjis_kddi,
- &vtbl_wchar_sjis_sb,
- &vtbl_wchar_sjis_mac,
- &vtbl_wchar_utf8_docomo,
- &vtbl_wchar_utf8_kddi_a,
- &vtbl_wchar_utf8_kddi_b,
- &vtbl_wchar_utf8_sb,
- &vtbl_wchar_euccn,
- &vtbl_wchar_cp936,
- &vtbl_wchar_gb18030,
- &vtbl_wchar_hz,
- &vtbl_wchar_euctw,
- &vtbl_wchar_big5,
- &vtbl_wchar_cp950,
- &vtbl_wchar_euckr,
- &vtbl_wchar_uhc,
- &vtbl_wchar_2022kr,
- &vtbl_wchar_cp1251,
- &vtbl_wchar_cp866,
- &vtbl_wchar_koi8r,
- &vtbl_wchar_koi8u,
- &vtbl_wchar_cp1252,
- &vtbl_wchar_cp1254,
- &vtbl_wchar_cp50220,
- &vtbl_wchar_cp50220raw,
- &vtbl_wchar_cp50221,
- &vtbl_wchar_cp50222,
- &vtbl_wchar_ascii,
- &vtbl_wchar_8859_1,
- &vtbl_wchar_8859_2,
- &vtbl_wchar_8859_3,
- &vtbl_wchar_8859_4,
- &vtbl_wchar_8859_5,
- &vtbl_wchar_8859_6,
- &vtbl_wchar_8859_7,
- &vtbl_wchar_8859_8,
- &vtbl_wchar_8859_9,
- &vtbl_wchar_8859_10,
- &vtbl_wchar_8859_13,
- &vtbl_wchar_8859_14,
- &vtbl_wchar_8859_15,
- &vtbl_wchar_html,
- &vtbl_wchar_utf7,
- &vtbl_wchar_utf7imap,
- &vtbl_wchar_utf16,
- &vtbl_wchar_utf16be,
- &vtbl_wchar_utf16le,
- &vtbl_wchar_utf32,
- &vtbl_wchar_utf32be,
- &vtbl_wchar_utf32le,
- &vtbl_wchar_ucs4,
- &vtbl_wchar_ucs4be,
- &vtbl_wchar_ucs4le,
- &vtbl_wchar_ucs2,
- &vtbl_wchar_ucs2be,
- &vtbl_wchar_ucs2le,
- &vtbl_wchar_byte4be,
- &vtbl_wchar_byte4le,
- &vtbl_wchar_byte2be,
- &vtbl_wchar_byte2le,
- &vtbl_wchar_armscii8,
- &vtbl_wchar_cp850,
- NULL
-};
-
-/* Special filters that don't fall in either category */
static const struct mbfl_convert_vtbl *mbfl_special_filter_list[] = {
&vtbl_8bit_b64,
&vtbl_b64_8bit,
mbfl_convert_filter * filter;
const struct mbfl_convert_vtbl *vtbl;
- vtbl = mbfl_convert_filter_get_vtbl(from->no_encoding, to->no_encoding);
+ vtbl = mbfl_convert_filter_get_vtbl(from, to);
if (vtbl == NULL) {
vtbl = &vtbl_pass;
/* destruct old filter */
(*filter->filter_dtor)(filter);
- vtbl = mbfl_convert_filter_get_vtbl(from->no_encoding, to->no_encoding);
+ vtbl = mbfl_convert_filter_get_vtbl(from, to);
if (vtbl == NULL) {
vtbl = &vtbl_pass;
return ret;
}
-const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl(enum mbfl_no_encoding from, enum mbfl_no_encoding to)
+const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl(
+ const mbfl_encoding *from, const mbfl_encoding *to)
{
- const struct mbfl_convert_vtbl *vtbl;
- const struct mbfl_convert_vtbl **list;
- int i;
-
- if (to == mbfl_no_encoding_base64 ||
- to == mbfl_no_encoding_qprint ||
- to == mbfl_no_encoding_7bit) {
- from = mbfl_no_encoding_8bit;
- } else if (from == mbfl_no_encoding_base64 ||
- from == mbfl_no_encoding_qprint ||
- from == mbfl_no_encoding_uuencode) {
- to = mbfl_no_encoding_8bit;
+ if (to->no_encoding == mbfl_no_encoding_base64 ||
+ to->no_encoding == mbfl_no_encoding_qprint ||
+ to->no_encoding == mbfl_no_encoding_7bit) {
+ from = &mbfl_encoding_8bit;
+ } else if (from->no_encoding == mbfl_no_encoding_base64 ||
+ from->no_encoding == mbfl_no_encoding_qprint ||
+ from->no_encoding == mbfl_no_encoding_uuencode) {
+ to = &mbfl_encoding_8bit;
}
- if (to == mbfl_no_encoding_wchar) {
- list = mbfl_input_filter_list;
- } else if (from == mbfl_no_encoding_wchar) {
- list = mbfl_output_filter_list;
+ if (to->no_encoding == mbfl_no_encoding_wchar) {
+ return from->input_filter;
+ } else if (from->no_encoding == mbfl_no_encoding_wchar) {
+ return to->output_filter;
} else {
- list = mbfl_special_filter_list;
- }
-
- i = 0;
- while ((vtbl = list[i++]) != NULL){
- if (vtbl->from == from && vtbl->to == to) {
- return vtbl;
+ int i = 0;
+ const struct mbfl_convert_vtbl *vtbl;
+ while ((vtbl = mbfl_special_filter_list[i++]) != NULL){
+ if (vtbl->from == from->no_encoding && vtbl->to == to->no_encoding) {
+ return vtbl;
+ }
}
+ return NULL;
}
-
- return NULL;
}
/*
void *opaque;
};
-struct mbfl_convert_vtbl {
- enum mbfl_no_encoding from;
- enum mbfl_no_encoding to;
- void (*filter_ctor)(mbfl_convert_filter *filter);
- void (*filter_dtor)(mbfl_convert_filter *filter);
- int (*filter_function)(int c, mbfl_convert_filter *filter);
- int (*filter_flush)(mbfl_convert_filter *filter);
- void (*filter_copy)(mbfl_convert_filter *src, mbfl_convert_filter *dest);
-};
-
MBFLAPI extern mbfl_convert_filter *mbfl_convert_filter_new(
const mbfl_encoding *from,
const mbfl_encoding *to,
MBFLAPI extern void mbfl_convert_filter_reset(mbfl_convert_filter *filter, const mbfl_encoding *from, const mbfl_encoding *to);
MBFLAPI extern void mbfl_convert_filter_copy(mbfl_convert_filter *src, mbfl_convert_filter *dist);
MBFLAPI extern int mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter);
-MBFLAPI extern const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl(enum mbfl_no_encoding from, enum mbfl_no_encoding to);
+MBFLAPI extern const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl(const mbfl_encoding *from, const mbfl_encoding *to);
MBFLAPI extern void mbfl_filt_conv_common_ctor(mbfl_convert_filter *filter);
MBFLAPI extern int mbfl_filt_conv_common_flush(mbfl_convert_filter *filter);
NULL,
(const char *(*)[])&mbfl_encoding_auto_aliases,
NULL,
- 0
+ 0,
+ NULL,
+ NULL
};
static const mbfl_encoding *mbfl_encoding_ptr_list[] = {
typedef enum mbfl_no_encoding mbfl_encoding_id;
+struct _mbfl_convert_filter;
+struct mbfl_convert_vtbl {
+ enum mbfl_no_encoding from;
+ enum mbfl_no_encoding to;
+ void (*filter_ctor)(struct _mbfl_convert_filter *filter);
+ void (*filter_dtor)(struct _mbfl_convert_filter *filter);
+ int (*filter_function)(int c, struct _mbfl_convert_filter *filter);
+ int (*filter_flush)(struct _mbfl_convert_filter *filter);
+ void (*filter_copy)(struct _mbfl_convert_filter *src, struct _mbfl_convert_filter *dest);
+};
+
/*
* encoding
*/
const char *(*aliases)[];
const unsigned char *mblen_table;
unsigned int flag;
+ const struct mbfl_convert_vtbl *input_filter;
+ const struct mbfl_convert_vtbl *output_filter;
} mbfl_encoding;
MBFLAPI extern const mbfl_encoding * mbfl_name2encoding(const char *name);