/* Generated automatically by genflags. */

/* Set if the encoding can encode
   the acute and grave accents U+00B4 and U+0060. */
#define HAVE_ACCENTS 1

/* Set if the encoding can encode
   the single quotation marks U+2018 and U+2019. */
#define HAVE_QUOTATION_MARKS 2

/* Set if the encoding can encode
   the double-width Hangul letters (Jamo) U+3131 to U+3163. */
#define HAVE_HANGUL_JAMO 4

#define ei_ascii_oflags (0)
#define ei_utf8_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_ucs2_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_ucs2be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_ucs2le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_ucs4_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_ucs4be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_ucs4le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_utf16_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_utf16be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_utf16le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_utf32_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_utf32be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_utf32le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_utf7_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_ucs2internal_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_ucs2swapped_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_ucs4internal_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_ucs4swapped_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_c99_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_java_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_iso8859_1_oflags (HAVE_ACCENTS)
#define ei_iso8859_2_oflags (HAVE_ACCENTS)
#define ei_iso8859_3_oflags (HAVE_ACCENTS)
#define ei_iso8859_4_oflags (HAVE_ACCENTS)
#define ei_iso8859_5_oflags (0)
#define ei_iso8859_6_oflags (0)
#define ei_iso8859_7_oflags (HAVE_QUOTATION_MARKS)
#define ei_iso8859_8_oflags (HAVE_ACCENTS)
#define ei_iso8859_9_oflags (HAVE_ACCENTS)
#define ei_iso8859_10_oflags (0)
#define ei_iso8859_11_oflags (0)
#define ei_iso8859_13_oflags (0)
#define ei_iso8859_14_oflags (0)
#define ei_iso8859_15_oflags (0)
#define ei_iso8859_16_oflags (0)
#define ei_koi8_r_oflags (0)
#define ei_koi8_u_oflags (0)
#define ei_koi8_ru_oflags (0)
#define ei_cp1250_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_cp1251_oflags (HAVE_QUOTATION_MARKS)
#define ei_cp1252_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_cp1253_oflags (HAVE_QUOTATION_MARKS)
#define ei_cp1254_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_cp1255_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_cp1256_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_cp1257_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_cp1258_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_cp850_oflags (HAVE_ACCENTS)
#define ei_cp862_oflags (0)
#define ei_cp866_oflags (0)
#define ei_cp1131_oflags (0)
#define ei_mac_roman_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_mac_centraleurope_oflags (HAVE_QUOTATION_MARKS)
#define ei_mac_iceland_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_mac_croatian_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_mac_romania_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_mac_cyrillic_oflags (HAVE_QUOTATION_MARKS)
#define ei_mac_ukraine_oflags (HAVE_QUOTATION_MARKS)
#define ei_mac_greek_oflags (HAVE_QUOTATION_MARKS)
#define ei_mac_turkish_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_mac_hebrew_oflags (HAVE_QUOTATION_MARKS)
#define ei_mac_arabic_oflags (0)
#define ei_mac_thai_oflags (HAVE_QUOTATION_MARKS)
#define ei_hp_roman8_oflags (HAVE_ACCENTS)
#define ei_nextstep_oflags (HAVE_ACCENTS)
#define ei_armscii_8_oflags (0)
#define ei_georgian_academy_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_georgian_ps_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_koi8_t_oflags (HAVE_QUOTATION_MARKS)
#define ei_pt154_oflags (HAVE_QUOTATION_MARKS)
#define ei_rk1048_oflags (HAVE_QUOTATION_MARKS)
#define ei_mulelao_oflags (0)
#define ei_cp1133_oflags (0)
#define ei_tis620_oflags (0)
#define ei_cp874_oflags (HAVE_QUOTATION_MARKS)
#define ei_viscii_oflags (0)
#define ei_tcvn_oflags (HAVE_ACCENTS)
#define ei_iso646_jp_oflags (0)
#define ei_jisx0201_oflags (0)
#define ei_jisx0208_oflags (HAVE_QUOTATION_MARKS)
#define ei_jisx0212_oflags (0)
#define ei_iso646_cn_oflags (0)
#define ei_gb2312_oflags (HAVE_QUOTATION_MARKS)
#define ei_isoir165_oflags (HAVE_QUOTATION_MARKS)
#define ei_ksc5601_oflags (HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_euc_jp_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_sjis_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_cp932_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_iso2022_jp_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_iso2022_jp1_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_iso2022_jp2_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_euc_cn_oflags (HAVE_QUOTATION_MARKS)
#define ei_ces_gbk_oflags (HAVE_QUOTATION_MARKS)
#define ei_cp936_oflags (HAVE_QUOTATION_MARKS)
#define ei_gb18030_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_iso2022_cn_oflags (HAVE_QUOTATION_MARKS)
#define ei_iso2022_cn_ext_oflags (HAVE_QUOTATION_MARKS)
#define ei_hz_oflags (HAVE_QUOTATION_MARKS)
#define ei_euc_tw_oflags (HAVE_QUOTATION_MARKS)
#define ei_ces_big5_oflags (HAVE_QUOTATION_MARKS)
#define ei_cp950_oflags (HAVE_QUOTATION_MARKS)
#define ei_big5hkscs1999_oflags (HAVE_QUOTATION_MARKS)
#define ei_big5hkscs2001_oflags (HAVE_QUOTATION_MARKS)
#define ei_big5hkscs2004_oflags (HAVE_QUOTATION_MARKS)
#define ei_big5hkscs2008_oflags (HAVE_QUOTATION_MARKS)
#define ei_euc_kr_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_cp949_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_johab_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_iso2022_kr_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
#define ei_cp856_oflags (HAVE_ACCENTS)
#define ei_cp922_oflags (HAVE_ACCENTS)
#define ei_cp943_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_cp1046_oflags (0)
#define ei_cp1124_oflags (0)
#define ei_cp1129_oflags (0)
#define ei_cp1161_oflags (0)
#define ei_cp1162_oflags (HAVE_QUOTATION_MARKS)
#define ei_cp1163_oflags (0)
#define ei_dec_kanji_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_dec_hanyu_oflags (HAVE_QUOTATION_MARKS)
#define ei_cp437_oflags (0)
#define ei_cp737_oflags (0)
#define ei_cp775_oflags (0)
#define ei_cp852_oflags (HAVE_ACCENTS)
#define ei_cp853_oflags (HAVE_ACCENTS)
#define ei_cp855_oflags (0)
#define ei_cp857_oflags (HAVE_ACCENTS)
#define ei_cp858_oflags (HAVE_ACCENTS)
#define ei_cp860_oflags (0)
#define ei_cp861_oflags (0)
#define ei_cp863_oflags (HAVE_ACCENTS)
#define ei_cp864_oflags (0)
#define ei_cp865_oflags (0)
#define ei_cp869_oflags (HAVE_QUOTATION_MARKS)
#define ei_cp1125_oflags (0)
#define ei_euc_jisx0213_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_shift_jisx0213_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_iso2022_jp3_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
#define ei_big5_2003_oflags (HAVE_QUOTATION_MARKS)
#define ei_tds565_oflags (0)
#define ei_atarist_oflags (HAVE_ACCENTS)
#define ei_riscos1_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS)
