Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bd97ac3

Browse files
committed
CJK codecs: use less magic and more readable macros, write explicit if
1 parent 0a6e2c5 commit bd97ac3

7 files changed

Lines changed: 32 additions & 34 deletions

File tree

Modules/cjkcodecs/_codecs_cn.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
if ((code) == 0x2014) (assi) = 0xa1aa; \
3737
else if ((code) == 0x2015) (assi) = 0xa844; \
3838
else if ((code) == 0x00b7) (assi) = 0xa1a4; \
39-
else if ((code) != 0x30fb && TRYMAP_ENC_COND(gbcommon, assi, code));
39+
else if ((code) != 0x30fb && TRYMAP_ENC(gbcommon, assi, code));
4040

4141
/*
4242
* GB2312 codec
@@ -58,7 +58,7 @@ ENCODER(gb2312)
5858
return 1;
5959

6060
REQUIRE_OUTBUF(2)
61-
TRYMAP_ENC(gbcommon, code, c);
61+
if (TRYMAP_ENC(gbcommon, code, c));
6262
else return 1;
6363

6464
if (code & 0x8000) /* MSB set: GBK */
@@ -192,7 +192,7 @@ ENCODER(gb18030)
192192
REQUIRE_OUTBUF(2)
193193

194194
GBK_ENCODE(c, code)
195-
else TRYMAP_ENC(gb18030ext, code, c);
195+
else if (TRYMAP_ENC(gb18030ext, code, c));
196196
else {
197197
const struct _gb18030_to_unibmp_ranges *utrrange;
198198

@@ -343,7 +343,7 @@ ENCODER(hz)
343343
if (c > 0xFFFF)
344344
return 1;
345345

346-
TRYMAP_ENC(gbcommon, code, c);
346+
if (TRYMAP_ENC(gbcommon, code, c));
347347
else return 1;
348348

349349
if (code & 0x8000) /* MSB set: GBK */

Modules/cjkcodecs/_codecs_hk.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ ENCODER(big5hkscs)
5454
REQUIRE_OUTBUF(2)
5555

5656
if (c < 0x10000) {
57-
TRYMAP_ENC(big5hkscs_bmp, code, c) {
57+
if (TRYMAP_ENC(big5hkscs_bmp, code, c)) {
5858
if (code == MULTIC) {
5959
Py_UCS4 c2;
6060
if (inlen - *inpos >= 2)
@@ -81,13 +81,13 @@ ENCODER(big5hkscs)
8181
}
8282
}
8383
}
84-
else TRYMAP_ENC(big5, code, c);
84+
else if (TRYMAP_ENC(big5, code, c));
8585
else return 1;
8686
}
8787
else if (c < 0x20000)
8888
return insize;
8989
else if (c < 0x30000) {
90-
TRYMAP_ENC(big5hkscs_nonbmp, code, c & 0xffff);
90+
if (TRYMAP_ENC(big5hkscs_nonbmp, code, c & 0xffff));
9191
else return insize;
9292
}
9393
else

Modules/cjkcodecs/_codecs_iso2022.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -578,9 +578,10 @@ ksx1001_encoder(const Py_UCS4 *data, Py_ssize_t *length)
578578
DBCHAR coded;
579579
assert(*length == 1);
580580
if (*data < 0x10000) {
581-
TRYMAP_ENC(cp949, coded, *data)
581+
if (TRYMAP_ENC(cp949, coded, *data)) {
582582
if (!(coded & 0x8000))
583583
return coded;
584+
}
584585
}
585586
return MAP_UNMAPPABLE;
586587
}
@@ -618,7 +619,7 @@ jisx0208_encoder(const Py_UCS4 *data, Py_ssize_t *length)
618619
if (*data < 0x10000) {
619620
if (*data == 0xff3c) /* F/W REVERSE SOLIDUS */
620621
return 0x2140;
621-
else TRYMAP_ENC(jisxcommon, coded, *data) {
622+
else if (TRYMAP_ENC(jisxcommon, coded, *data)) {
622623
if (!(coded & 0x8000))
623624
return coded;
624625
}
@@ -655,7 +656,7 @@ jisx0212_encoder(const Py_UCS4 *data, Py_ssize_t *length)
655656
DBCHAR coded;
656657
assert(*length == 1);
657658
if (*data < 0x10000) {
658-
TRYMAP_ENC(jisxcommon, coded, *data) {
659+
if (TRYMAP_ENC(jisxcommon, coded, *data)) {
659660
if (coded & 0x8000)
660661
return coded & 0x7fff;
661662
}
@@ -759,19 +760,18 @@ jisx0213_encoder(const Py_UCS4 *data, Py_ssize_t *length, void *config)
759760
if (*data >= 0x10000) {
760761
if ((*data) >> 16 == 0x20000 >> 16) {
761762
EMULATE_JISX0213_2000_ENCODE_EMP(coded, *data)
762-
else TRYMAP_ENC(jisx0213_emp, coded,
763-
(*data) & 0xffff)
763+
else if (TRYMAP_ENC(jisx0213_emp, coded, (*data) & 0xffff))
764764
return coded;
765765
}
766766
return MAP_UNMAPPABLE;
767767
}
768768

769769
EMULATE_JISX0213_2000_ENCODE_BMP(coded, *data)
770-
else TRYMAP_ENC(jisx0213_bmp, coded, *data) {
770+
else if (TRYMAP_ENC(jisx0213_bmp, coded, *data)) {
771771
if (coded == MULTIC)
772772
return MAP_MULTIPLE_AVAIL;
773773
}
774-
else TRYMAP_ENC(jisxcommon, coded, *data) {
774+
else if (TRYMAP_ENC(jisxcommon, coded, *data)) {
775775
if (coded & 0x8000)
776776
return MAP_UNMAPPABLE;
777777
}
@@ -962,7 +962,7 @@ gb2312_encoder(const Py_UCS4 *data, Py_ssize_t *length)
962962
DBCHAR coded;
963963
assert(*length == 1);
964964
if (*data < 0x10000) {
965-
TRYMAP_ENC(gbcommon, coded, *data) {
965+
if (TRYMAP_ENC(gbcommon, coded, *data)) {
966966
if (!(coded & 0x8000))
967967
return coded;
968968
}

Modules/cjkcodecs/_codecs_jp.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ ENCODER(cp932)
4949
return 1;
5050
REQUIRE_OUTBUF(2)
5151

52-
TRYMAP_ENC(cp932ext, code, c) {
52+
if (TRYMAP_ENC(cp932ext, code, c)) {
5353
OUTBYTE1(code >> 8)
5454
OUTBYTE2(code & 0xff)
5555
}
56-
else TRYMAP_ENC(jisxcommon, code, c) {
56+
else if (TRYMAP_ENC(jisxcommon, code, c)) {
5757
if (code & 0x8000) /* MSB set: JIS X 0212 */
5858
return 1;
5959

@@ -165,7 +165,7 @@ ENCODER(euc_jis_2004)
165165

166166
if (c <= 0xFFFF) {
167167
EMULATE_JISX0213_2000_ENCODE_BMP(code, c)
168-
else TRYMAP_ENC(jisx0213_bmp, code, c) {
168+
else if (TRYMAP_ENC(jisx0213_bmp, code, c)) {
169169
if (code == MULTIC) {
170170
if (inlen - *inpos < 2) {
171171
if (flags & MBENC_FLUSH) {
@@ -197,7 +197,7 @@ ENCODER(euc_jis_2004)
197197
}
198198
}
199199
}
200-
else TRYMAP_ENC(jisxcommon, code, c);
200+
else if (TRYMAP_ENC(jisxcommon, code, c));
201201
else if (c >= 0xff61 && c <= 0xff9f) {
202202
/* JIS X 0201 half-width katakana */
203203
WRITEBYTE2(0x8e, c - 0xfec0)
@@ -215,7 +215,7 @@ ENCODER(euc_jis_2004)
215215
}
216216
else if (c >> 16 == EMPBASE >> 16) {
217217
EMULATE_JISX0213_2000_ENCODE_EMP(code, c)
218-
else TRYMAP_ENC(jisx0213_emp, code, c & 0xffff);
218+
else if (TRYMAP_ENC(jisx0213_emp, code, c & 0xffff));
219219
else return insize;
220220
}
221221
else
@@ -334,7 +334,7 @@ ENCODER(euc_jp)
334334
if (c > 0xFFFF)
335335
return 1;
336336

337-
TRYMAP_ENC(jisxcommon, code, c);
337+
if (TRYMAP_ENC(jisxcommon, code, c));
338338
else if (c >= 0xff61 && c <= 0xff9f) {
339339
/* JIS X 0201 half-width katakana */
340340
WRITEBYTE2(0x8e, c - 0xfec0)
@@ -469,7 +469,7 @@ ENCODER(shift_jis)
469469
REQUIRE_OUTBUF(2)
470470

471471
if (code == NOCHAR) {
472-
TRYMAP_ENC(jisxcommon, code, c);
472+
if (TRYMAP_ENC(jisxcommon, code, c));
473473
#ifndef STRICT_BUILD
474474
else if (c == 0xff3c)
475475
code = 0x2140; /* FULL-WIDTH REVERSE SOLIDUS */
@@ -570,7 +570,7 @@ ENCODER(shift_jis_2004)
570570
if (code == NOCHAR) {
571571
if (c <= 0xffff) {
572572
EMULATE_JISX0213_2000_ENCODE_BMP(code, c)
573-
else TRYMAP_ENC(jisx0213_bmp, code, c) {
573+
else if (TRYMAP_ENC(jisx0213_bmp, code, c)) {
574574
if (code == MULTIC) {
575575
if (inlen - *inpos < 2) {
576576
if (flags & MBENC_FLUSH) {
@@ -603,7 +603,7 @@ ENCODER(shift_jis_2004)
603603
}
604604
}
605605
}
606-
else TRYMAP_ENC(jisxcommon, code, c) {
606+
else if (TRYMAP_ENC(jisxcommon, code, c)) {
607607
/* abandon JIS X 0212 codes */
608608
if (code & 0x8000)
609609
return 1;
@@ -612,7 +612,7 @@ ENCODER(shift_jis_2004)
612612
}
613613
else if (c >> 16 == EMPBASE >> 16) {
614614
EMULATE_JISX0213_2000_ENCODE_EMP(code, c)
615-
else TRYMAP_ENC(jisx0213_emp, code, c&0xffff);
615+
else if (TRYMAP_ENC(jisx0213_emp, code, c&0xffff));
616616
else return insize;
617617
}
618618
else

Modules/cjkcodecs/_codecs_kr.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ ENCODER(euc_kr)
4747
return 1;
4848

4949
REQUIRE_OUTBUF(2)
50-
TRYMAP_ENC(cp949, code, c);
50+
if (TRYMAP_ENC(cp949, code, c));
5151
else return 1;
5252

5353
if ((code & 0x8000) == 0) {
@@ -182,7 +182,7 @@ ENCODER(cp949)
182182
return 1;
183183

184184
REQUIRE_OUTBUF(2)
185-
TRYMAP_ENC(cp949, code, c);
185+
if (TRYMAP_ENC(cp949, code, c));
186186
else return 1;
187187

188188
OUTBYTE1((code >> 8) | 0x80)
@@ -279,7 +279,7 @@ ENCODER(johab)
279279
}
280280
else if (c >= 0x3131 && c <= 0x3163)
281281
code = u2johabjamo[c - 0x3131];
282-
else TRYMAP_ENC(cp949, code, c) {
282+
else if (TRYMAP_ENC(cp949, code, c)) {
283283
unsigned char c1, c2, t2;
284284
unsigned short t1;
285285

Modules/cjkcodecs/_codecs_tw.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ ENCODER(big5)
2929

3030
REQUIRE_OUTBUF(2)
3131

32-
TRYMAP_ENC(big5, code, c);
32+
if (TRYMAP_ENC(big5, code, c));
3333
else return 1;
3434

3535
OUTBYTE1(code >> 8)
@@ -84,8 +84,8 @@ ENCODER(cp950)
8484
return 1;
8585

8686
REQUIRE_OUTBUF(2)
87-
TRYMAP_ENC(cp950ext, code, c);
88-
else TRYMAP_ENC(big5, code, c);
87+
if (TRYMAP_ENC(cp950ext, code, c));
88+
else if (TRYMAP_ENC(big5, code, c));
8989
else return 1;
9090

9191
OUTBYTE1(code >> 8)

Modules/cjkcodecs/cjkcodecs.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,8 @@ static const struct dbcs_map *mapping_list;
172172
((m)->map != NULL && (val) >= (m)->bottom && \
173173
(val)<= (m)->top && ((assi) = (m)->map[(val) - \
174174
(m)->bottom]) != NOCHAR)
175-
#define TRYMAP_ENC_COND(charset, assi, uni) \
175+
#define TRYMAP_ENC(charset, assi, uni) \
176176
_TRYMAP_ENC(&charset##_encmap[(uni) >> 8], assi, (uni) & 0xff)
177-
#define TRYMAP_ENC(charset, assi, uni) \
178-
if TRYMAP_ENC_COND(charset, assi, uni)
179177

180178
#define _TRYMAP_DEC(m, assi, val) \
181179
((m)->map != NULL && \

0 commit comments

Comments
 (0)