43#define CHSET_ANSI_X_3_4_1968 6
44#define CHSET_JIS_X_0201_KANA 13
45#define CHSET_JIS_X_0201_ROMAN 14
46#define CHSET_JIS_X_0208_1978 42
47#define CHSET_JIS_X_0208_1983 87
48#define CHSET_JIS_X_0212_1990 159
49#define CHSET_GB2312_1980 58
50#define CHSET_KSC_5601_1987 149
51#define CHSET_ISO_8859_1 100
52#define CHSET_ISO_8859_7 126
54#define DBIDX_ANSI_X_3_4_1968 1
55#define DBIDX_ISO_8859_1 2
56#define DBIDX_ISO_8859_2 3
57#define DBIDX_ISO_8859_3 4
58#define DBIDX_ISO_8859_4 5
59#define DBIDX_ISO_8859_5 6
60#define DBIDX_ISO_8859_6 7
61#define DBIDX_ISO_8859_7 8
62#define DBIDX_ISO_8859_8 9
63#define DBIDX_EUC_JP 10
64#define DBIDX_EUC_KR 11
65#define DBIDX_GB2312 12
67#define ISO_2022_JP_SET_ASCII "\x1B(B"
68#define ISO_2022_JP_SET_JIS201_ROMAN "\x1B(J"
69#define ISO_2022_JP_SET_JIS201_KANA "\x1B(I"
70#define ISO_2022_JP_SET_JIS208_78 "\x1B$@"
71#define ISO_2022_JP_SET_JIS208_83 "\x1B$B"
72#define ISO_2022_JP_SET_GB2312_80 "\x1B$A"
73#define ISO_2022_JP_SET_KSC5601_87 "\x1B$(C"
74#define ISO_2022_JP_SET_JIS212_90 "\x1B$(D"
75#define ISO_2022_JP_SET_ISO_8859_1 "\x1B.A"
76#define ISO_2022_JP_SET_ISO_8859_7 "\x1B.F"
77#define ISO_2022_JP_SET_SS2 "\x1BN"
80#define ASCII_CHAR_LEN 1
82#define EUCJP_ASCII_CHAR_LEN 1
83#define EUCJP_JISX0201_ROMAN_CHAR_LEN 1
84#define EUCJP_JISX0201_KANA_CHAR_LEN 2
85#define EUCJP_JISX0208_CHAR_LEN 2
86#define EUCJP_JISX0212_CHAR_LEN 3
88#define GB2312_CHAR_LEN 2
89#define KSC5601_CHAR_LEN 2
91#define ISO_8859_1_CHAR_LEN 1
92#define ISO_8859_7_CHAR_LEN 1
95#define ISO_2022_SET_SB94_G0 0x28
96#define ISO_2022_SET_SB94_G1 0x29
97#define ISO_2022_SET_SB94_G2 0x2A
98#define ISO_2022_SET_SB94_G3 0x2B
100#define ISO_2022_SET_SB96_G1 0x2D
101#define ISO_2022_SET_SB96_G2 0x2E
102#define ISO_2022_SET_SB96_G3 0x2F
104#define ISO_2022_SET_MB 0x24
106#define ISO_2022_SET_MB94_G0 0x28
107#define ISO_2022_SET_MB94_G1 0x29
108#define ISO_2022_SET_MB94_G2 0x2A
109#define ISO_2022_SET_MB94_G3 0x2B
111#define ISO_2022_SET_MB96_G1 0x2D
112#define ISO_2022_SET_MB96_G2 0x2E
113#define ISO_2022_SET_MB96_G3 0x2F
115#define ISO_2022_SET_SS2 0x4E
117#define ESCAPE_CHAR 0x1B
119#if !defined (_UTF8_MB_CUR_MAX)
120# define _UTF8_MB_CUR_MAX 6
124#define CODECVT_ERROR _STD::codecvt_base::error
125#define CODECVT_OK _STD::codecvt_base::ok
126#define CODECVT_PARTIAL _STD::codecvt_base::partial
132enum __rw_codeset_type_t {
133 sb94 = 0, sb96, mb94, mb96
137struct __rw_iso2022_state_t {
146 unsigned shift_state:1;
153 unsigned char g_map [4];
157struct __rw_chset_map_t
178static const char __rw_empty[] =
"";
182static const __rw_chset_map_t __rw_chset_map [256] = {
184#define EMPTY __rw_empty, 0, 0, 0, 0
343static __rw_db_map_t __rw_db_map [32] = {
344 { 0, 0, __rw_empty }, { 0, 0,
"ANSI_X3.4-1968" },
345 { 0, 0,
"ISO-8859-1" }, { 0, 0,
"ISO-8859-2" },
346 { 0, 0,
"ISO-8859-3" }, { 0, 0,
"ISO-8859-4" },
347 { 0, 0,
"ISO-8859-5" }, { 0, 0,
"ISO-8859-6" },
348 { 0, 0,
"ISO-8859-7" }, { 0, 0,
"ISO-8859-8" },
349 { 0, 0,
"EUC-JP" }, { 0, 0,
"EUC-KR" },
350 { 0, 0,
"GB2312" }, { 0, 0, __rw_empty },
351 { 0, 0, __rw_empty }, { 0, 0, __rw_empty },
352 { 0, 0, __rw_empty }, { 0, 0, __rw_empty },
353 { 0, 0, __rw_empty }, { 0, 0, __rw_empty },
354 { 0, 0, __rw_empty }, { 0, 0, __rw_empty },
355 { 0, 0, __rw_empty }, { 0, 0, __rw_empty },
356 { 0, 0, __rw_empty }, { 0, 0, __rw_empty },
357 { 0, 0, __rw_empty }, { 0, 0, __rw_empty },
358 { 0, 0, __rw_empty }, { 0, 0, __rw_empty },
359 { 0, 0, __rw_empty }, { 0, 0, __rw_empty }
364int __rw_encoding_from_name (
const char*
name)
368 static const char pfx [] =
"ISO-2022-";
370 if (0 != strncmp (pfx,
name,
sizeof pfx - 1U))
373 name +=
sizeof pfx - 1U;
375 if (0 == strcmp (
name,
"JP-2")) {
378 if (0 == strcmp (
name,
"JP")) {
381 if (0 == strcmp (
name,
"KR")) {
384 if (0 == strcmp (
name,
"CN")) {
402#if _RWSTD_MBSTATE_T_SIZE == 1
403# define ISO_2022_ARRAY_SIZE 255
404# define ISO_2022_STATE_INDEX_T unsigned char
406# define ISO_2022_ARRAY_SIZE 511
407# define ISO_2022_STATE_INDEX_T unsigned short
420int __rw_allocate_state ()
425 if (__rw_iso2022_states [
i].used == 0) {
426 __rw_iso2022_states [
i].used = 1;
438void __rw_deallocate_state (__rw_iso2022_state_t &iso_state,
446 const int i = iso_state.gl_map - 1;
451 || iso_state.sshift3)
458 memset (&state, 0,
sizeof state);
459 memset (&iso_state, 0,
sizeof iso_state);
463static __rw_iso2022_state_t*
466 __rw_iso2022_state_t* pstate = 0;
479 n = __rw_allocate_state ();
492 pstate = &__rw_iso2022_states [
n];
512unsigned char __rw_sb94_encoding_reg (
unsigned char c)
514 unsigned char reg = 0;
533unsigned char __rw_sb96_encoding_reg (
unsigned char c)
535 unsigned char reg = 0;
551unsigned char __rw_mb94_encoding_reg (
unsigned char c)
553 unsigned char reg = 0;
578unsigned char __rw_mb96_encoding_reg (
unsigned char)
587unsigned char __rw_get_encoding_reg (__rw_codeset_type_t type,
592 return __rw_sb94_encoding_reg (code);
594 return __rw_sb96_encoding_reg (code);
596 return __rw_mb94_encoding_reg (code);
598 return __rw_mb96_encoding_reg (code);
609const char* __rw_get_encoding_name (
unsigned char n)
611 return (__rw_chset_map [
n].
name [0] == 0)?0:__rw_chset_map [
n].name;
624unsigned char __rw_get_encoding_dbindex (__rw_codeset_type_t
t,
627 unsigned char reg = __rw_get_encoding_reg (
t, code);
631 return __rw_chset_map [reg].index;
638const void* __rw_get_encoding_database (
unsigned char n)
641 if (__rw_db_map [
n].pv)
642 return __rw_db_map [
n].pv;
645 if (__rw_db_map [
n].
name [0] == 0)
649 int cat = __rw_get_cat ((__rw_facet::_C_wcodecvt_byname + 1) / 2);
651 __rw_get_facet_data (cat, __rw_db_map[
n].
size, 0,
652 __rw_db_map [
n].
name);
654 return __rw_db_map [
n].pv;
662static _STD::codecvt_base::result
663__rw_iso2022jp_designate (__rw_iso2022_state_t& state,
672 _RWSTD_SIZE_T sslen = 0;
711 if (enc != iso2022_jp) {
718 if (enc != iso2022_jp) {
729 if (state.sshift2 == 1) {
736 if (reg != state.g_map [2]) {
744 memcpy (to, esc,
len);
749 state.g_map [2] = reg;
760 memcpy (to, ss, sslen);
775 memcpy (to, esc,
len);
780 state.g_map [0] = reg;
782 state.shift_state = __rw_chset_map [reg].width;
792static _STD::codecvt_base::result
793__rw_iso2022_escape (__rw_iso2022_state_t& state,
795 const char* from_end,
799 const char* ps = from + 1;
806 __rw_codeset_type_t type = sb94;
829 if (from_end == ps + 1)
841 if (from_end == ++ps)
845 const unsigned char reg = __rw_get_encoding_reg (type, *ps++);
850 if (enc == iso2022_jp &&
858 state.g_map [type == sb96 ? 2 : 0] = reg;
862 state.shift_state = __rw_chset_map [reg].width;
877static _STD::codecvt_base::result
878__rw_ascii_to_iso2022 (__rw_iso2022_state_t& state,
880 const char* from_end,
887 unsigned int width = __rw_chset_map [reg].width + 1;
892 _STD::codecvt_base::result ret;
895 if (state.g_map [0] != reg) {
899 ret = __rw_iso2022jp_designate (state,
pd, to_end, reg, enc);
904 state.g_map [0] = reg;
905 state.shift_state = __rw_chset_map [reg].width;
915 if (to_end - to <
int (width))
918 *to++ = char (*from++ & 0x7f);
920 *to++ = char (*from++ & 0x7f);
932static _STD::codecvt_base::result
933__rw_ksc5601_to_iso2022 (__rw_iso2022_state_t& state,
935 const char* from_end,
942 unsigned int width = __rw_chset_map [reg].width + 1;
947 _STD::codecvt_base::result ret;
950 if (state.g_map [0] != reg) {
954 ret = __rw_iso2022jp_designate (state,
pd, to_end, reg, enc);
959 state.g_map [0] = reg;
960 state.shift_state = __rw_chset_map [reg].width;
970 if (to_end - to <
int (width))
973 *to++ = char (*from++ & 0x7f);
975 *to++ = char (*from++ & 0x7f);
987static _STD::codecvt_base::result
988__rw_gb2312_to_iso2022 (__rw_iso2022_state_t& state,
990 const char* from_end,
997 unsigned int width = __rw_chset_map [reg].width + 1;
1002 _STD::codecvt_base::result ret;
1005 if (state.g_map [0] != reg) {
1009 ret = __rw_iso2022jp_designate (state,
pd, to_end, reg, enc);
1014 state.g_map [0] = reg;
1015 state.shift_state = __rw_chset_map [reg].width;
1025 if (to_end - to <
int(width))
1028 *to++ = char (*from++ & 0x7f);
1030 *to++ = char (*from++ & 0x7f);
1042static _STD::codecvt_base::result
1043__rw_iso88597_to_iso2022 (__rw_iso2022_state_t& state,
1045 const char* from_end,
1052 unsigned int width2 = __rw_chset_map [reg2].width + 1;
1057 _STD::codecvt_base::result ret;
1061 ret = __rw_iso2022jp_designate (state, to, to_end, reg2, enc);
1066 state.g_map [2] = reg2;
1069 if (to_end - to <
int (width2))
1072 *to++ = char (*from++ & 0x7f);
1074 *to++ = char (*from++ & 0x7f);
1077 state.sshift2 = state.sshift3 = 0;
1089static _STD::codecvt_base::result
1090__rw_iso88591_to_iso2022 (__rw_iso2022_state_t& state,
1092 const char* from_end,
1099 unsigned int width2 = __rw_chset_map [reg2].width + 1;
1104 _STD::codecvt_base::result ret;
1108 ret = __rw_iso2022jp_designate (state, to, to_end, reg2, enc);
1113 state.g_map [2] = reg2;
1116 if (to_end - to <
int (width2))
1119 *to++ = char (*from++ & 0x7f);
1121 *to++ = char (*from++ & 0x7f);
1124 state.sshift2 = state.sshift3 = 0;
1136static _STD::codecvt_base::result
1137__rw_eucjp_to_iso2022 (__rw_iso2022_state_t& state,
1139 const char* from_end,
1145 unsigned char reg = 0;
1147 _STD::codecvt_base::result ret;
1176 width = __rw_chset_map [reg].width + 1;
1179 if (state.g_map [0] != reg) {
1183 ret = __rw_iso2022jp_designate (state,
pd, to_end, reg, enc);
1191 state.g_map [0] = reg;
1192 state.shift_state = __rw_chset_map [reg].width;
1199 if (width > from_end - from)
1203 if (to_end - to < __rw_chset_map[reg].width)
1206 *to++ = char (*from++ & 0x7f);
1208 *to++ = char (*from++ & 0x7f);
1221_STD::codecvt_base::result
1222__rw_iso2022_to_gb2312 (
const char*& from,
1223 const char* from_end,
1234 *to++ = char (*from++ | 0x80);
1235 *to++ = char (*from++ | 0x80);
1248_STD::codecvt_base::result
1249__rw_iso2022_to_ksc5601 (
const char*& from,
1250 const char* from_end,
1261 *to++ = char (*from++ | 0x80);
1262 *to++ = char (*from++ | 0x80);
1275_STD::codecvt_base::result
1276__rw_iso2022_to_iso88591 (
const char*& from,
1277 const char* from_end,
1288 *to++ = char (*from++ | 0x80);
1301_STD::codecvt_base::result
1302__rw_iso2022_to_iso88597 (
const char*& from,
1303 const char* from_end,
1314 *to++ = char (*from++ | 0x80);
1326static _STD::codecvt_base::result
1327__rw_iso2022_to_eucjp (
const char*& from,
1328 const char* from_end,
1334 int width = __rw_chset_map [reg].width + 1;
1337 if (from_end - from < width)
1353 *to++ = char (*from++ | 0x80);
1354 *to++ = char (*from++ | 0x80);
1360 if (enc == iso2022_jp) {
1367 *to++ = char (*from++ | 0x80);
1372 if (enc == iso2022_jp) {
1378 *to++ = char (*from++ | 0x80);
1379 *to++ = char (*from++ | 0x80);
1395static _STD::codecvt_base::result
1396__rw_iso2022_to_interm (__rw_iso2022_state_t& state,
1398 const char* from_end,
1409 state.sshift2 = state.sshift3 = 0;
1411 const char*
tmp = from;
1412 res = __rw_iso2022_escape (state, from, from_end, enc);
1420 if (*from <= 0x20) {
1426 if (state.sshift2 == 1) {
1430 reg = state.g_map [2];
1433 reg = state.g_map [0];
1444 res = __rw_iso2022_to_eucjp (from, from_end, to, reg, enc);
1448 res = __rw_iso2022_to_gb2312 (from, from_end, to, reg, enc);
1452 res = __rw_iso2022_to_ksc5601 (from, from_end, to, reg, enc);
1456 res = __rw_iso2022_to_iso88591 (from, from_end, to, reg, enc);
1460 res = __rw_iso2022_to_iso88597 (from, from_end, to, reg, enc);
1465 state.sshift2 = state.sshift3 = 0;
1471static _STD::codecvt_base::result
1472__rw_ucs4_to_eucjp (
const wchar_t*& from,
1473 const wchar_t* from_end,
1476 const _RW::__rw_codecvt_t* impl)
1478 typedef unsigned char UChar;
1481 const char* impl_raw =
1489 const unsigned int* tbls = impl->utf8_to_ext_tab ();;
1490 const unsigned int* tbl = tbls;
1493 if (from == from_end || to == to_end)
1496 _RWSTD_SIZE_T ret = __rw_itoutf8 (*from, ptmp);
1498 unsigned int wc = tbl [
UChar (*ptmp)];
1499 while (wc & 0x80000000) {
1500 if (wc == _RWSTD_UINT_MAX)
1510 tbl = tbls + 256 * wc;
1511 wc = tbl [
UChar (*++ptmp)];
1515 _RWSTD_SIZE_T
offset = wc +
sizeof (_RW::__rw_codecvt_t);
1516 while (impl_raw [
offset]) {
1520 *to++ = impl_raw [
offset++];
1529__rw_ucs4_to_interm (
const wchar_t*& from,
1532 typedef unsigned char UChar;
1534 static const struct {
1549 for (
size_t i = 0;
i <
sizeof db_array /
sizeof *db_array; ++
i) {
1553 const void* pdb = __rw_get_encoding_database (db_array [
i].db);
1558 const _RW::__rw_codecvt_t* impl =
1565 const unsigned int* tbls = impl->utf8_to_ext_tab ();
1566 const unsigned int* tbl = tbls;
1569 _RWSTD_SIZE_T ret = __rw_itoutf8 (*from, ptmp);
1571 bool success =
true;
1572 unsigned int wc = tbl [
UChar (*ptmp)];
1573 while (wc & 0x80000000) {
1574 if (wc == _RWSTD_UINT_MAX || ret-- == 0) {
1581 tbl = tbls + 256 * wc;
1582 wc = tbl [
UChar (*++ptmp)];
1590 _RWSTD_SIZE_T
offset = wc +
sizeof (_RW::__rw_codecvt_t);
1591 while (impl_raw [
offset])
1592 *to++ = impl_raw [
offset++];
1598 return db_array [
i].reg;
1607static _STD::codecvt_base::result
1609 __rw_iso2022_state_t* iso_state,
1611 const char* from_end,
1616 _STD::codecvt_base::result
res;
1619 unsigned char reg = iso_state->g_map [0];
1620 int width = iso_state->shift_state + 1;
1623 if (from_end - from < width) {
1626 __rw_deallocate_state (*iso_state, state,
false);
1632 char tmp_buffer [8];
1633 char* tmp_to = tmp_buffer;
1636 const char* from_next = from;
1641 res = __rw_iso2022_to_interm (*iso_state, from_next, from_end,
1644 (from_next == from && tmp_to == tmp_buffer)) {
1652 if (tmp_to == tmp_buffer) {
1657 tmp_to_end = tmp_to;
1658 tmp_to = tmp_buffer;
1661 const void* pdb = __rw_get_encoding_database (__rw_chset_map [reg].
index);
1663 __rw_deallocate_state (*iso_state, state,
false);
1666 const _RW::__rw_codecvt_t* pimpl =
1670 const unsigned int* tbls = pimpl->n_to_w_tab ();
1671 const unsigned int* tbl = tbls;
1676 unsigned int wc = tbl [*(
unsigned char*)tmp_to];
1677 while (wc & 0x80000000) {
1678 if (wc == _RWSTD_UINT_MAX) {
1679 __rw_deallocate_state (*iso_state, state,
false);
1684 tbl = tbls + 256*(wc & 0x7fffffff);
1690 if (tmp_to == tmp_to_end) {
1691 __rw_deallocate_state (*iso_state, state,
false);
1695 wc = tbl [*(
unsigned char*)tmp_to];
1700 *to++ = pimpl->get_ucs4_at_offset(wc);
1708_STD::codecvt_base::result
1711 const char* from_end,
1716 __rw_iso2022_state_t* iso_state =
1717 __rw_get_iso2022_state (state, iso2022_jp);
1724 const char* from_next = from;
1725 wchar_t* to_next = to;
1727 while (from_end - from && to_end - to) {
1729 _STD::codecvt_base::result
res;
1730 res = __rw_iso2022_to_ucs4 (state, iso_state, from_next,
1731 from_end, to_next, to_end, iso2022_jp);
1738 from_next == from && to_next == to)
1746 __rw_deallocate_state (*iso_state, state,
true);
1753_STD::codecvt_base::result
1755 const wchar_t*& from,
1756 const wchar_t* from_end,
1761 __rw_iso2022_state_t* iso_state =
1762 __rw_get_iso2022_state (state, iso2022_jp);
1768 char euc_buffer [8];
1771 const void* pdb = __rw_get_encoding_database (
DBIDX_EUC_JP);
1773 __rw_deallocate_state (*iso_state, state,
false);
1777 const _RW::__rw_codecvt_t* pimpl =
1783 while (from_end - from && to_end - to) {
1784 _STD::codecvt_base::result
res;
1787 const wchar_t* ps = from;
1788 const wchar_t* pse = from_end;
1790 char* euc = euc_buffer;
1791 char* euce = euc_buffer + 8;
1793 res = __rw_ucs4_to_eucjp (ps, pse, euc, euce, pimpl);
1795 (ps == from && euc == euc_buffer)) {
1806 const char* ceuc = euc_buffer;
1807 res = __rw_eucjp_to_iso2022 (*iso_state, ceuc,
1808 euce,
pd, to_end, iso2022_jp);
1810 (ceuc == euc_buffer &&
pd == to)) {
1824 __rw_deallocate_state (*iso_state, state,
true);
1830_STD::codecvt_base::result
1832 char*& to,
char* to_end)
1834 _STD::codecvt_base::result
res =
1838 __rw_iso2022_state_t* iso_state =
1839 __rw_get_iso2022_state (state, iso2022_jp);
1845 res = __rw_iso2022jp_designate (*iso_state, to, to_end,
1861 const char* from,
const char* from_end,
1867 __rw_iso2022_state_t* iso_state =
1868 __rw_get_iso2022_state (state, iso2022_jp);
1875 while (
max && from_end - from) {
1880 const char*
tmp = from;
1881 res = __rw_iso2022_escape (*iso_state, from, from_end, iso2022_jp);
1889 if (from_end - from <
int(iso_state->shift_state) + 1)
1893 from += iso_state->shift_state + 1;
1905__rw_iso2022jp_do_max_length ()
1911int __rw_iso2022jp_do_encoding ()
1916bool __rw_iso2022jp_do_always_noconv ()
1924_STD::codecvt_base::result
1927 const char* from_end,
1932 __rw_iso2022_state_t* iso_state =
1933 __rw_get_iso2022_state (state, iso2022_jp);
1940 while (from_end - from && to_end - to) {
1942 const char* from_next = from;
1943 wchar_t* to_next = to;
1946 _STD::codecvt_base::result
res;
1947 res = __rw_iso2022_to_ucs4 (state, iso_state, from_next,
1948 from_end, to_next, to_end, iso2022_jp2);
1955 from_next == from && to_next == to)
1963 __rw_deallocate_state (*iso_state, state,
true);
1970_STD::codecvt_base::result
1972 const wchar_t*& from,
1973 const wchar_t* from_end,
1978 __rw_iso2022_state_t* iso_state =
1979 __rw_get_iso2022_state (state, iso2022_jp);
1989 while (from_end - from && to_end - to) {
1990 _STD::codecvt_base::result
res;
1993 const wchar_t* ps = from;
1996 char* tmpe =
tmp + 8;
1999 __rw_ucs4_to_interm (ps, tmps);
2002 __rw_deallocate_state (*iso_state, state,
false);
2013 const char* ctmps =
tmp;
2019 res = __rw_ascii_to_iso2022 (*iso_state, ctmps, tmpe,
2020 pd, to_end, iso2022_jp2);
2023 res = __rw_eucjp_to_iso2022 (*iso_state, ctmps, tmpe,
2024 pd, to_end, iso2022_jp2);
2027 res = __rw_ksc5601_to_iso2022 (*iso_state, ctmps, tmpe,
2028 pd, to_end, iso2022_jp2);
2031 res = __rw_gb2312_to_iso2022 (*iso_state, ctmps, tmpe,
2032 pd, to_end, iso2022_jp2);
2035 res = __rw_iso88597_to_iso2022 (*iso_state, ctmps, tmpe,
2036 pd, to_end, iso2022_jp2);
2039 res = __rw_iso88591_to_iso2022 (*iso_state, ctmps, tmpe,
2040 pd, to_end, iso2022_jp2);
2059 iso_state->sshift2 = iso_state->sshift3 = 0;
2065 __rw_deallocate_state (*iso_state, state,
true);
2071_STD::codecvt_base::result
2073 char*& to,
char* to_end)
2075 return __rw_iso2022jp_do_unshift (state, to, to_end);
2081 const char* from,
const char* from_end,
2087 __rw_iso2022_state_t* iso_state =
2088 __rw_get_iso2022_state (state, iso2022_jp);
2096 while (
max && from_end - from) {
2102 iso_state->sshift2 = iso_state->sshift3 = 0;
2104 const char*
tmp = from;
2105 res = __rw_iso2022_escape (*iso_state, from, from_end,
2114 if (*from <= 0x20) {
2120 unsigned char reg = iso_state->g_map [0];
2122 if (iso_state->sshift2 == 1) {
2125 width = __rw_chset_map [reg].width + 1;
2128 if (from_end - from <
int (width))
2135 iso_state->sshift2 = iso_state->sshift3 = 0;
2148__rw_iso2022jp2_do_max_length ()
2154int __rw_iso2022jp2_do_encoding ()
2160bool __rw_iso2022jp2_do_always_noconv ()
#define _RWSTD_REINTERPRET_CAST(T, x)
#define _RWSTD_UNUSED(arg)
#define _RWSTD_STATIC_CAST(T, x)
#define _RWSTD_NAMESPACE(name)
#define _RWSTD_MT_CLASS_GUARD(type)
#define _RWSTD_ASSERT(ignore)
#define ISO_2022_SET_SB94_G0
#define ISO_2022_JP_SET_JIS201_ROMAN
#define ISO_2022_STATE_INDEX_T
#define CHSET_ANSI_X_3_4_1968
#define CHSET_GB2312_1980
#define ISO_2022_JP_SET_JIS201_KANA
#define ISO_2022_JP_SET_ISO_8859_1
#define ISO_2022_JP_SET_SS2
#define DBIDX_ANSI_X_3_4_1968
#define ISO_2022_ARRAY_SIZE
#define ISO_2022_JP_SET_JIS208_78
#define CHSET_JIS_X_0201_KANA
#define ISO_8859_7_CHAR_LEN
#define ISO_8859_1_CHAR_LEN
#define CHSET_JIS_X_0212_1990
#define ISO_2022_SET_SB96_G2
#define CHSET_JIS_X_0201_ROMAN
#define CHSET_JIS_X_0208_1983
#define CHSET_JIS_X_0208_1978
#define CHSET_KSC_5601_1987
#define ISO_2022_JP_SET_GB2312_80
#define ISO_2022_JP_SET_ASCII
#define ISO_2022_JP_SET_KSC5601_87
#define ISO_2022_JP_SET_JIS212_90
#define ISO_2022_JP_SET_ISO_8859_7
#define ISO_2022_JP_SET_JIS208_83
#define ISO_2022_SET_MB94_G0