diff options
Diffstat (limited to 'libwc/iso2022.h')
-rw-r--r-- | libwc/iso2022.h | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/libwc/iso2022.h b/libwc/iso2022.h new file mode 100644 index 0000000..21c7188 --- /dev/null +++ b/libwc/iso2022.h @@ -0,0 +1,127 @@ + +#ifndef _WC_ISO2022_H +#define _WC_ISO2022_H + +#define WC_C_ESC 0x1B /* '\033' */ +#define WC_C_SS2 0x4E /* ESC 'N' */ +#define WC_C_SS3 0x4F /* ESC 'O' */ +#define WC_C_LS2 0x6E /* ESC 'n' */ +#define WC_C_LS3 0x6F /* ESC 'o' */ +#define WC_C_LS1R 0x7E /* ESC '~' */ +#define WC_C_LS2R 0x7D /* ESC '}' */ +#define WC_C_LS3R 0x7C /* ESC '|' */ +#define WC_C_G0_CS94 0x28 /* ESC '(' F */ +#define WC_C_G1_CS94 0x29 /* ESC ')' F */ +#define WC_C_G2_CS94 0x2A /* ESC '*' F */ +#define WC_C_G3_CS94 0x2B /* ESC '+' F */ +#define WC_C_G0_CS96 0x2C /* ESC ',' F */ /* ISO 2022 does not permit */ +#define WC_C_G1_CS96 0x2D /* ESC '-' F */ +#define WC_C_G2_CS96 0x2E /* ESC '.' F */ +#define WC_C_G3_CS96 0x2F /* ESC '/' F */ +#define WC_C_MBCS 0x24 /* ESC '$' G F */ +#define WC_C_CS942 0x21 /* ESC G '!' F */ +#define WC_C_C0 0x21 /* ESC '!' F */ +#define WC_C_C1 0x22 /* ESC '"' F */ +#define WC_C_REP 0x26 /* ESC '&' F ESC '"' F */ +#define WC_C_CSWSR 0x25 /* ESC '%' F */ +#define WC_C_CSWOSR 0x2F /* ESC '%' '/' F */ + +#define WC_C_SO 0x0E /* '\016' */ +#define WC_C_SI 0x0F /* '\017' */ +#define WC_C_SS2R 0x8E +#define WC_C_SS3R 0x8F + +#define WC_F_ISO_646_US 0x42 /* 'B' */ +#define WC_F_ISO_646_IRV WC_F_ISO_646_US +#define WC_F_US_ASCII WC_F_ISO_646_US +#define WC_F_JIS_X_0201K 0x49 /* 'I' */ +#define WC_F_JIS_X_0201 0x4A /* 'J' */ +#define WC_F_GB_1988 0x54 /* 'T' */ + +#define WC_F_ISO_8859_1 0x41 /* 'A' */ +#define WC_F_ISO_8859_2 0x42 /* 'B' */ +#define WC_F_ISO_8859_3 0x43 /* 'C' */ +#define WC_F_ISO_8859_4 0x44 /* 'D' */ +#define WC_F_ISO_8859_5 0x4C /* 'L' */ +#define WC_F_ISO_8859_6 0x47 /* 'G' */ +#define WC_F_ISO_8859_7 0x46 /* 'F' */ +#define WC_F_ISO_8859_8 0x48 /* 'H' */ +#define WC_F_ISO_8859_9 0x4D /* 'M' */ +#define WC_F_ISO_8859_10 0x56 /* 'V' */ +#define WC_F_ISO_8859_11 0x54 /* 'T' */ +#define WC_F_TIS_620 WC_F_ISO_8859_11 +#define WC_F_ISO_8859_13 0x59 /* 'Y' */ +#define WC_F_ISO_8859_14 0x5F /* '_' */ +#define WC_F_ISO_8859_15 0x62 /* 'b' */ +#define WC_F_ISO_8859_16 0x66 /* 'f' */ + +#define WC_F_JIS_C_6226 0x40 /* '@' */ +#define WC_F_GB_2312 0x41 /* 'A' */ +#define WC_F_JIS_X_0208 0x42 /* 'B' */ +#define WC_F_KS_X_1001 0x43 /* 'C' */ +#define WC_F_KS_C_5601 WC_F_KS_X_1001 +#define WC_F_JIS_X_0212 0x44 /* 'D' */ +#define WC_F_ISO_IR_165 0x45 /* 'E' */ +#define WC_F_CCITT_GB WC_F_ISO_IR_165 +#define WC_F_CNS_11643_1 0x47 /* 'G' */ +#define WC_F_CNS_11643_2 0x48 /* 'H' */ +#define WC_F_CNS_11643_3 0x49 /* 'I' */ +#define WC_F_CNS_11643_4 0x4A /* 'J' */ +#define WC_F_CNS_11643_5 0x4B /* 'K' */ +#define WC_F_CNS_11643_6 0x4C /* 'L' */ +#define WC_F_CNS_11643_7 0x4D /* 'M' */ +#define WC_F_KPS_9566 0x4E /* 'N' */ +#define WC_F_JIS_X_0213_1 0x4F /* 'O' */ +#define WC_F_JIS_X_0213_2 0x50 /* 'P' */ + +#define WC_ISO_NOSTATE 0 +#define WC_ISO_MBYTE1 1 +#define WC_EUC_NOSTATE 0 +#define WC_EUC_MBYTE1 2 /* for EUC (G1) */ +#define WC_EUC_TW_SS2 3 /* for EUC_TW (G2) */ +#define WC_EUC_TW_MBYTE1 4 /* for EUC_TW (G2) */ +#define WC_EUC_TW_MBYTE2 5 /* for EUC_TW (G2) */ +#define WC_ISO_ESC 6 +#define WC_ISO_CSWSR 0x10 +#define WC_ISO_CSWOSR 0x20 + +#define WC_ISO_MAP_CG 0xF0 +#define WC_ISO_MAP_C0 0x10 /* 0x00 - 0x1F */ +#define WC_ISO_MAP_GL 0x00 /* 0x21 - 0x7E */ +#define WC_ISO_MAP_GL96 0x20 /* 0x20, 0x7F */ +#define WC_ISO_MAP_C1 0x50 /* 0x80 - 0x9F */ +#define WC_ISO_MAP_GR 0x40 /* 0xA1 - 0xFE */ +#define WC_ISO_MAP_GR96 0x60 /* 0xA0, 0xFF */ +#define WC_ISO_MAP_SO (0x1 | WC_ISO_MAP_C0) /* 0x0E */ +#define WC_ISO_MAP_SI (0x2 | WC_ISO_MAP_C0) /* 0x0F */ +#define WC_ISO_MAP_ESC (0x3 | WC_ISO_MAP_C0) /* 0x1B */ +#define WC_ISO_MAP_SS2 (0x4 | WC_ISO_MAP_C1) /* 0x8E */ +#define WC_ISO_MAP_SS3 (0x5 | WC_ISO_MAP_C1) /* 0x8F */ +#define WC_ISO_MAP_DETECT 0x4F + +#define WC_CS94WUL_N(U,L) (((U) - 0x21) * 0x5E + (L) - 0x21) +#define WC_CS94W_N(c) WC_CS94WUL_N(((c) >> 8) & 0x7F, (c) & 0x7F) +#define WC_CS96WUL_N(U,L) (((U) - 0x20) * 0x60 + (L) - 0x20) +#define WC_CS96W_N(c) WC_CS96WUL_N(((c) >> 8) & 0x7F, (c) & 0x7F) +#define WC_N_CS94WU(c) ((c) / 0x5E + 0x21) +#define WC_N_CS94WL(c) ((c) % 0x5E + 0x21) +#define WC_N_CS94W(c) ((WC_N_CS94WU(c) << 8) + WC_N_CS94WL(c)) +#define WC_N_CS96WU(c) ((c) / 0x60 + 0x20) +#define WC_N_CS96WL(c) ((c) % 0x60 + 0x20) +#define WC_N_CS96W(c) ((WC_N_CS96WU(c) << 8) + WC_N_CS96WL(c)) + +extern wc_uint8 WC_ISO_MAP[]; + +extern Str wc_conv_from_iso2022(Str is, wc_ces ces); +extern void wc_push_to_iso2022(Str os, wc_wchar_t cc, wc_status *st); +extern void wc_push_to_euc(Str os, wc_wchar_t cc, wc_status *st); +extern void wc_push_to_eucjp(Str os, wc_wchar_t cc, wc_status *st); +extern void wc_push_to_euctw(Str os, wc_wchar_t cc, wc_status *st); +extern void wc_push_to_iso8859(Str os, wc_wchar_t cc, wc_status *st); +extern void wc_push_to_iso2022_end(Str os, wc_status *st); +extern int wc_parse_iso2022_esc(wc_uchar **ptr, wc_status *st); +extern void wc_push_iso2022_esc(Str os, wc_ccs ccs, wc_uchar g, wc_uint8 invoke, wc_status *st); +extern void wc_create_gmap(wc_status *st); +extern Str wc_char_conv_from_iso2022(wc_uchar c, wc_status *st); + +#endif |