#ifndef _XWCHAR_H_ #define _XWCHAR_H_ #include /* * wchar_t mappings: * ASCII (ESC ( B) 00000000 00000000 00000000 0xxxxxxx * iso-8859-1 (ESC , A) 00000000 00000000 00000000 1xxxxxxx * unicode(UCS2) 00000000 00000000 xxxxxxxx xxxxxxxx * UCS4 0xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx * 94 charset (ESC ( F) 1fffffff 00000000 00000000 0xxxxxxx * 96 charset (ESC , F) 1fffffff 00000000 00000000 1xxxxxxx * 94x94 charset (ESC $ ( F) 1fffffff 00000000 1xxxxxxx 0xxxxxxx * 96x96 charset (ESC $ , F) 1fffffff 00000000 1xxxxxxx 1xxxxxxx UCS/ISO2022 flag --------------^ 94/96 flag -----------------------------------------------^ multibyte flag ----------------------------------^ */ #define MASK_UCS4 ((wchar_t)0x80000000) #define MASK_UNICODE ((wchar_t)0xFFFF0000) #define MASK_LATIN_1 ((wchar_t)0xFFFFFF00) #define MASK_ASCII ((wchar_t)0xFFFFFF80) #define MASK_MB ((wchar_t)0x00808000) #define IS_UCS4(c) (((c) & MASK_UCS4) == 0) #define IS_UNICODE(c) (((c) & MASK_UNICODE) == 0) #define IS_LATIN_1(c) (((c) & MASK_LATIN_1) == 0) #define IS_ASCII(c) (((c) & MASK_ASCII) == 0) #define IS_MB(c) (((c) & MASK_MB)) /* to check iso2022 invoked code */ #define HEAD_MASK ((wchar_t)0xFF808080) #define HEAD_TYPE_MASK ((wchar_t)0x80808080) #define HEAD_94 ((wchar_t)0x80000000) #define HEAD_96 ((wchar_t)0x80000080) #define HEAD_94x94 ((wchar_t)0x80008000) #define HEAD_96x96 ((wchar_t)0x80008080) #define HEAD_UNICODE ((wchar_t)0xFFFFFFFF) /* unicode-1-1 */ #define HEAD_ASCII ((wchar_t)0x00000000) /* ascii */ #define HEAD_JISX0201 ((wchar_t)0xC9000000) /* Katakana */ #define HEAD_JIS_ROMAN ((wchar_t)0xCa000000) /* JIS X 0201-1976 Roman */ #define HEAD_GB_ROMAN ((wchar_t)0xD4000000) /* GB 1988-89 Roman */ #define HEAD_ISO8859_1 ((wchar_t)0x00000080) /* Latin-1 */ #define HEAD_ISO8859_2 ((wchar_t)0xC2000080) /* Latin-2 */ #define HEAD_ISO8859_3 ((wchar_t)0xC3000080) /* Latin-3 */ #define HEAD_ISO8859_4 ((wchar_t)0xC4000080) /* Latin-4 */ #define HEAD_ISO8859_5 ((wchar_t)0xCC000080) /* Cyrillic */ #define HEAD_ISO8859_6 ((wchar_t)0xC7000080) /* Arabic */ #define HEAD_ISO8859_7 ((wchar_t)0xC6000080) /* Greek */ #define HEAD_ISO8859_8 ((wchar_t)0xC8000080) /* Hevrew */ #define HEAD_ISO8859_9 ((wchar_t)0xCD000080) /* Latin-5 */ #define HEAD_ISO8859_10 ((wchar_t)0xD6000080) /* Latin-6 */ #define HEAD_JISX0208_O ((wchar_t)0xC0008000) /* Japanese Kanji (1978) */ #define HEAD_GB2312 ((wchar_t)0xC1008000) /* Chinese Kanji */ #define HEAD_JISX0208 ((wchar_t)0xC2008000) /* Japanese Kanji (1983) */ #define HEAD_KSC5601 ((wchar_t)0xC3008000) /* Korean */ #define HEAD_JISX0212 ((wchar_t)0xC4008000) /* New JIS */ #define HEAD_CNS11643_1 ((wchar_t)0xC7008000) #define HEAD_CNS11643_2 ((wchar_t)0xC8008000) #define SI 0x0F /* 017 */ #define SO 0x0E /* 016 */ #define LS2 0x6E #define LS3 0x6F #define LS1R 0x7E #define LS2R 0x7D #define LS3R 0x7C #define SS2 0x4E #define SS3 0x4F #define SS2R 0x8E #define SS3R 0x8F #define LF 0x0A #endif