summaryrefslogtreecommitdiffstats
path: root/Modules/cjkcodecs/_hz.c
diff options
context:
space:
mode:
authorHye-Shik Chang <hyeshik@gmail.com>2004-07-18 03:06:29 (GMT)
committerHye-Shik Chang <hyeshik@gmail.com>2004-07-18 03:06:29 (GMT)
commit2bb146f2f4fd52b03cfa7ae739adb35d2b9f5421 (patch)
treeebd4c873cfc841dc978053941b2859d4efbd9082 /Modules/cjkcodecs/_hz.c
parent264c659197bcd2fc3e22776fc711f31b953daae5 (diff)
downloadcpython-2bb146f2f4fd52b03cfa7ae739adb35d2b9f5421.zip
cpython-2bb146f2f4fd52b03cfa7ae739adb35d2b9f5421.tar.gz
cpython-2bb146f2f4fd52b03cfa7ae739adb35d2b9f5421.tar.bz2
Bring CJKCodecs 1.1 into trunk. This completely reorganizes source
and installed layouts to make maintenance simple and easy. And it also adds four new codecs; big5hkscs, euc-jis-2004, shift-jis-2004 and iso2022-jp-2004.
Diffstat (limited to 'Modules/cjkcodecs/_hz.c')
-rw-r--r--Modules/cjkcodecs/_hz.c134
1 files changed, 0 insertions, 134 deletions
diff --git a/Modules/cjkcodecs/_hz.c b/Modules/cjkcodecs/_hz.c
deleted file mode 100644
index 19f910c..0000000
--- a/Modules/cjkcodecs/_hz.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * _hz.c: the HZ codec (RFC1843)
- *
- * Written by Hye-Shik Chang <perky@FreeBSD.org>
- * $CJKCodecs: _hz.c,v 1.2 2003/12/31 05:46:55 perky Exp $
- */
-
-#include "codeccommon.h"
-
-ENCMAP(gbcommon)
-DECMAP(gb2312)
-
-#define HAVE_ENCODER_INIT
-ENCODER_INIT(hz)
-{
- state->i = 0;
- return 0;
-}
-
-#define HAVE_ENCODER_RESET
-ENCODER_RESET(hz)
-{
- if (state->i != 0) {
- WRITE2('~', '}')
- state->i = 0;
- NEXT_OUT(2)
- }
- return 0;
-}
-
-ENCODER(hz)
-{
- while (inleft > 0) {
- Py_UNICODE c = IN1;
- DBCHAR code;
-
- if (c < 0x80) {
- if (state->i == 0) {
- WRITE1((unsigned char)c)
- NEXT(1, 1)
- } else {
- WRITE3('~', '}', (unsigned char)c)
- NEXT(1, 3)
- state->i = 0;
- }
- continue;
- }
-
- UCS4INVALID(c)
-
- TRYMAP_ENC(gbcommon, code, c);
- else return 1;
-
- if (code & 0x8000) /* MSB set: GBK */
- return 1;
-
- if (state->i == 0) {
- WRITE4('~', '{', code >> 8, code & 0xff)
- NEXT(1, 4)
- state->i = 1;
- } else {
- WRITE2(code >> 8, code & 0xff)
- NEXT(1, 2)
- }
- }
-
- return 0;
-}
-
-#define HAVE_DECODER_INIT
-DECODER_INIT(hz)
-{
- state->i = 0;
- return 0;
-}
-
-#define HAVE_DECODER_RESET
-DECODER_RESET(hz)
-{
- state->i = 0;
- return 0;
-}
-
-DECODER(hz)
-{
- while (inleft > 0) {
- unsigned char c = IN1;
-
- if (c == '~') {
- unsigned char c2 = IN2;
-
- RESERVE_INBUF(2)
- if (c2 == '~') {
- WRITE1('~')
- NEXT(2, 1)
- continue;
- } else if (c2 == '{' && state->i == 0)
- state->i = 1; /* set GB */
- else if (c2 == '}' && state->i == 1)
- state->i = 0; /* set ASCII */
- else if (c2 == '\n')
- ; /* line-continuation */
- else
- return 2;
- NEXT(2, 0);
- continue;
- }
-
- if (c & 0x80)
- return 1;
-
- if (state->i == 0) { /* ASCII mode */
- WRITE1(c)
- NEXT(1, 1)
- } else { /* GB mode */
- RESERVE_INBUF(2)
- RESERVE_OUTBUF(1)
- TRYMAP_DEC(gb2312, **outbuf, c, IN2) {
- NEXT(2, 1)
- } else
- return 2;
- }
- }
-
- return 0;
-}
-
-#include "codecentry.h"
-BEGIN_CODEC_REGISTRY(hz)
- MAPOPEN(zh_CN)
- IMPORTMAP_DEC(gb2312)
- IMPORTMAP_ENC(gbcommon)
- MAPCLOSE()
-END_CODEC_REGISTRY(hz)