CJK codecs: less magic macros, require explicit semicolon

This commit is contained in:
Victor Stinner 2013-10-29 00:19:27 +01:00
parent 146a2ed0f2
commit 14c9fea60a
10 changed files with 233 additions and 190 deletions

View file

@ -38,7 +38,7 @@ ENCODER(euc_kr)
DBCHAR code;
if (c < 0x80) {
WRITEBYTE1((unsigned char)c)
WRITEBYTE1((unsigned char)c);
NEXT(1, 1);
continue;
}
@ -46,7 +46,7 @@ ENCODER(euc_kr)
if (c > 0xFFFF)
return 1;
REQUIRE_OUTBUF(2)
REQUIRE_OUTBUF(2);
if (TRYMAP_ENC(cp949, code, c))
;
else
@ -54,33 +54,33 @@ ENCODER(euc_kr)
if ((code & 0x8000) == 0) {
/* KS X 1001 coded character */
OUTBYTE1((code >> 8) | 0x80)
OUTBYTE2((code & 0xFF) | 0x80)
OUTBYTE1((code >> 8) | 0x80);
OUTBYTE2((code & 0xFF) | 0x80);
NEXT(1, 2);
}
else { /* Mapping is found in CP949 extension,
* but we encode it in KS X 1001:1998 Annex 3,
* make-up sequence for EUC-KR. */
REQUIRE_OUTBUF(8)
REQUIRE_OUTBUF(8);
/* syllable composition precedence */
OUTBYTE1(EUCKR_JAMO_FIRSTBYTE)
OUTBYTE2(EUCKR_JAMO_FILLER)
OUTBYTE1(EUCKR_JAMO_FIRSTBYTE);
OUTBYTE2(EUCKR_JAMO_FILLER);
/* All codepoints in CP949 extension are in unicode
* Hangul Syllable area. */
assert(0xac00 <= c && c <= 0xd7a3);
c -= 0xac00;
OUTBYTE3(EUCKR_JAMO_FIRSTBYTE)
OUTBYTE4(u2cgk_choseong[c / 588])
OUTBYTE3(EUCKR_JAMO_FIRSTBYTE);
OUTBYTE4(u2cgk_choseong[c / 588]);
NEXT_OUT(4);
OUTBYTE1(EUCKR_JAMO_FIRSTBYTE)
OUTBYTE2(u2cgk_jungseong[(c / 28) % 21])
OUTBYTE3(EUCKR_JAMO_FIRSTBYTE)
OUTBYTE4(u2cgk_jongseong[c % 28])
OUTBYTE1(EUCKR_JAMO_FIRSTBYTE);
OUTBYTE2(u2cgk_jungseong[(c / 28) % 21]);
OUTBYTE3(EUCKR_JAMO_FIRSTBYTE);
OUTBYTE4(u2cgk_jongseong[c % 28]);
NEXT(1, 4);
}
}
@ -175,7 +175,7 @@ ENCODER(cp949)
DBCHAR code;
if (c < 0x80) {
WRITEBYTE1((unsigned char)c)
WRITEBYTE1((unsigned char)c);
NEXT(1, 1);
continue;
}
@ -183,17 +183,17 @@ ENCODER(cp949)
if (c > 0xFFFF)
return 1;
REQUIRE_OUTBUF(2)
REQUIRE_OUTBUF(2);
if (TRYMAP_ENC(cp949, code, c))
;
else
return 1;
OUTBYTE1((code >> 8) | 0x80)
OUTBYTE1((code >> 8) | 0x80);
if (code & 0x8000)
OUTBYTE2(code & 0xFF) /* MSB set: CP949 */
OUTBYTE2(code & 0xFF); /* MSB set: CP949 */
else
OUTBYTE2((code & 0xFF) | 0x80) /* MSB unset: ks x 1001 */
OUTBYTE2((code & 0xFF) | 0x80); /* MSB unset: ks x 1001 */
NEXT(1, 2);
}
@ -265,7 +265,7 @@ ENCODER(johab)
DBCHAR code;
if (c < 0x80) {
WRITEBYTE1((unsigned char)c)
WRITEBYTE1((unsigned char)c);
NEXT(1, 1);
continue;
}
@ -273,7 +273,7 @@ ENCODER(johab)
if (c > 0xFFFF)
return 1;
REQUIRE_OUTBUF(2)
REQUIRE_OUTBUF(2);
if (c >= 0xac00 && c <= 0xd7a3) {
c -= 0xac00;
@ -297,8 +297,8 @@ ENCODER(johab)
t1 = (c1 < 0x4a ? (c1 - 0x21 + 0x1b2) :
(c1 - 0x21 + 0x197));
t2 = ((t1 & 1) ? 0x5e : 0) + (c2 - 0x21);
OUTBYTE1(t1 >> 1)
OUTBYTE2(t2 < 0x4e ? t2 + 0x31 : t2 + 0x43)
OUTBYTE1(t1 >> 1);
OUTBYTE2(t2 < 0x4e ? t2 + 0x31 : t2 + 0x43);
NEXT(1, 2);
continue;
}
@ -308,8 +308,8 @@ ENCODER(johab)
else
return 1;
OUTBYTE1(code >> 8)
OUTBYTE2(code & 0xff)
OUTBYTE1(code >> 8);
OUTBYTE2(code & 0xff);
NEXT(1, 2);
}