[KoCo-CVS] [Commit] cjkcodecs/src _iso_2022_jp_3.c codeccommon.h
Brought to you by:
perky
From: Hye-Shik C. <pe...@us...> - 2003-07-08 08:47:04
|
perky 03/07/08 01:47:02 Modified: src _iso_2022_jp_3.c codeccommon.h Log: Find JIS X 0208 table as a subset of JIS X 0213 Plane 1. Revision Changes Path 1.4 +22 -13 cjkcodecs/src/_iso_2022_jp_3.c Index: _iso_2022_jp_3.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/_iso_2022_jp_3.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- _iso_2022_jp_3.c 8 Jul 2003 07:22:35 -0000 1.3 +++ _iso_2022_jp_3.c 8 Jul 2003 08:47:02 -0000 1.4 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: _iso_2022_jp_3.c,v 1.3 2003/07/08 07:22:35 perky Exp $ + * $Id: _iso_2022_jp_3.c,v 1.4 2003/07/08 08:47:02 perky Exp $ */ #define USING_BINARY_PAIR_SEARCH @@ -125,6 +125,9 @@ insize = 2; } } + } else TRYMAP_ENC(jisxcommon, code, c) { + if (code & 0x8000) + return 1; /* avoid JIS X 0212 codes */ } else if (c == 0xff3c) /* F/W REVERSE SOLIDUS */ code = 0x2140; else @@ -263,31 +266,37 @@ OUT1(c & 0x7f) NEXT(1, 1) } else { - unsigned char charset; + unsigned char charset, c2; ucs4_t code; - if (!STATE_GETFLAG(state, F_SHIFTED) && c < 0x80) /* G0 */ + if (!STATE_GETFLAG(state, F_SHIFTED) && c < 0x80) { /* G0 */ charset = STATE_GETG0(state); - else /* G1 */ + c2 = IN2; + } else { /* G1 */ charset = STATE_GETG1(state); + c &= 0x7f; + c2 = IN2 & 0x7f; + } if (charset & CHARSET_DOUBLEBYTE) { RESERVE_INBUF(2) RESERVE_OUTBUF(1) if (charset == CHARSET_JISX0213_1) { - if (c == 0x21 && IN2 == 0x40) **outbuf = 0xff3c; - else TRYMAP_DEC(jisx0213_1_bmp, **outbuf, - c & 0x7f, IN2 & 0x7f); - else TRYMAP_DEC(jisx0213_1_emp, code, c & 0x7f, - IN2 & 0x7f) { + if (c == 0x21 && c2 == 0x40) **outbuf = 0xff3c; + else TRYMAP_DEC(jisx0208, **outbuf, c, c2); + else TRYMAP_DEC(jisx0213_1_bmp, **outbuf, c, c2); + else TRYMAP_DEC(jisx0213_1_emp, code, c, c2) { PUTUCS4(EMPBASE | code) NEXT_IN(2) continue; + } else TRYMAP_DEC(jisx0213_pair, code, c, c2) { + WRITE2(code >> 16, code & 0xffff) + NEXT(2, 2) + continue; } else return 2; } else if (charset == CHARSET_JISX0213_2) { - TRYMAP_DEC(jisx0213_2_bmp, **outbuf, c & 0x7f, IN2 & 0x7f); - else TRYMAP_DEC(jisx0213_2_emp, code, c & 0x7f, - IN2 & 0x7f) { + TRYMAP_DEC(jisx0213_2_bmp, **outbuf, c, c2); + else TRYMAP_DEC(jisx0213_2_emp, code, c, c2) { PUTUCS4(EMPBASE | code) NEXT_IN(2) continue; @@ -297,7 +306,7 @@ NEXT(2, 1) } else if (charset == CHARSET_ASCII) { RESERVE_OUTBUF(1) - OUT1(c & 0x7f) + OUT1(c) NEXT(1, 1) } else return MBERR_INTERNAL; 1.21 +5 -5 cjkcodecs/src/codeccommon.h Index: codeccommon.h =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/codeccommon.h,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- codeccommon.h 8 Jul 2003 07:02:03 -0000 1.20 +++ codeccommon.h 8 Jul 2003 08:47:02 -0000 1.21 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: codeccommon.h,v 1.20 2003/07/08 07:02:03 perky Exp $ + * $Id: codeccommon.h,v 1.21 2003/07/08 08:47:02 perky Exp $ */ #include "Python.h" @@ -93,10 +93,10 @@ #define IN3 ((*inbuf)[2]) #define IN4 ((*inbuf)[3]) -#define OUT1(c) ((*outbuf)[0]) = (c); -#define OUT2(c) ((*outbuf)[1]) = (c); -#define OUT3(c) ((*outbuf)[2]) = (c); -#define OUT4(c) ((*outbuf)[3]) = (c); +#define OUT1(c) ((*outbuf)[0]) = (unsigned char)(c); +#define OUT2(c) ((*outbuf)[1]) = (unsigned char)(c); +#define OUT3(c) ((*outbuf)[2]) = (unsigned char)(c); +#define OUT4(c) ((*outbuf)[3]) = (unsigned char)(c); #define WRITE1(c1) \ RESERVE_OUTBUF(1) \ |