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

Skip to content

Commit 14c9fea

Browse files
committed
CJK codecs: less magic macros, require explicit semicolon
1 parent 146a2ed commit 14c9fea

10 files changed

Lines changed: 234 additions & 191 deletions

File tree

Modules/cjkcodecs/_codecs_cn.c

Lines changed: 50 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,32 @@
2323
* A844 undefined U+2015 HORIZONTAL BAR
2424
*/
2525

26-
#define GBK_DECODE(dc1, dc2, writer) \
27-
if ((dc1) == 0xa1 && (dc2) == 0xaa) OUTCHAR(0x2014); \
28-
else if ((dc1) == 0xa8 && (dc2) == 0x44) OUTCHAR(0x2015); \
29-
else if ((dc1) == 0xa1 && (dc2) == 0xa4) OUTCHAR(0x00b7); \
30-
else if (TRYMAP_DEC(gb2312, decoded, dc1 ^ 0x80, dc2 ^ 0x80)) \
31-
OUTCHAR(decoded); \
32-
else if (TRYMAP_DEC(gbkext, decoded, dc1, dc2)) \
33-
OUTCHAR(decoded);
26+
#define GBK_DECODE(dc1, dc2, writer) \
27+
if ((dc1) == 0xa1 && (dc2) == 0xaa) { \
28+
OUTCHAR(0x2014); \
29+
} \
30+
else if ((dc1) == 0xa8 && (dc2) == 0x44) { \
31+
OUTCHAR(0x2015); \
32+
} \
33+
else if ((dc1) == 0xa1 && (dc2) == 0xa4) { \
34+
OUTCHAR(0x00b7); \
35+
} \
36+
else if (TRYMAP_DEC(gb2312, decoded, dc1 ^ 0x80, dc2 ^ 0x80)) { \
37+
OUTCHAR(decoded); \
38+
} \
39+
else if (TRYMAP_DEC(gbkext, decoded, dc1, dc2)) { \
40+
OUTCHAR(decoded); \
41+
}
3442

3543
#define GBK_ENCODE(code, assi) \
36-
if ((code) == 0x2014) \
44+
if ((code) == 0x2014) { \
3745
(assi) = 0xa1aa; \
38-
else if ((code) == 0x2015) \
46+
} else if ((code) == 0x2015) { \
3947
(assi) = 0xa844; \
40-
else if ((code) == 0x00b7) \
48+
} else if ((code) == 0x00b7) { \
4149
(assi) = 0xa1a4; \
42-
else if ((code) != 0x30fb && TRYMAP_ENC(gbcommon, assi, code))
50+
} else if ((code) != 0x30fb && TRYMAP_ENC(gbcommon, assi, code)) { \
51+
}
4352

4453
/*
4554
* GB2312 codec
@@ -52,15 +61,15 @@ ENCODER(gb2312)
5261
DBCHAR code;
5362

5463
if (c < 0x80) {
55-
WRITEBYTE1((unsigned char)c)
64+
WRITEBYTE1((unsigned char)c);
5665
NEXT(1, 1);
5766
continue;
5867
}
5968

6069
if (c > 0xFFFF)
6170
return 1;
6271

63-
REQUIRE_OUTBUF(2)
72+
REQUIRE_OUTBUF(2);
6473
if (TRYMAP_ENC(gbcommon, code, c))
6574
;
6675
else
@@ -69,8 +78,8 @@ ENCODER(gb2312)
6978
if (code & 0x8000) /* MSB set: GBK */
7079
return 1;
7180

72-
OUTBYTE1((code >> 8) | 0x80)
73-
OUTBYTE2((code & 0xFF) | 0x80)
81+
OUTBYTE1((code >> 8) | 0x80);
82+
OUTBYTE2((code & 0xFF) | 0x80);
7483
NEXT(1, 2);
7584
}
7685

@@ -113,26 +122,25 @@ ENCODER(gbk)
113122
DBCHAR code;
114123

115124
if (c < 0x80) {
116-
WRITEBYTE1((unsigned char)c)
125+
WRITEBYTE1((unsigned char)c);
117126
NEXT(1, 1);
118127
continue;
119128
}
120129

121130
if (c > 0xFFFF)
122131
return 1;
123132

124-
REQUIRE_OUTBUF(2)
133+
REQUIRE_OUTBUF(2);
125134

126135
GBK_ENCODE(c, code)
127-
;
128136
else
129137
return 1;
130138

131-
OUTBYTE1((code >> 8) | 0x80)
139+
OUTBYTE1((code >> 8) | 0x80);
132140
if (code & 0x8000)
133-
OUTBYTE2((code & 0xFF)) /* MSB set: GBK */
141+
OUTBYTE2((code & 0xFF)); /* MSB set: GBK */
134142
else
135-
OUTBYTE2((code & 0xFF) | 0x80) /* MSB unset: GB2312 */
143+
OUTBYTE2((code & 0xFF) | 0x80); /* MSB unset: GB2312 */
136144
NEXT(1, 2);
137145
}
138146

@@ -175,7 +183,7 @@ ENCODER(gb18030)
175183
DBCHAR code;
176184

177185
if (c < 0x80) {
178-
WRITEBYTE1(c)
186+
WRITEBYTE1(c);
179187
NEXT(1, 1);
180188
continue;
181189
}
@@ -184,30 +192,29 @@ ENCODER(gb18030)
184192
Py_UCS4 tc = c - 0x10000;
185193
assert (c <= 0x10FFFF);
186194

187-
REQUIRE_OUTBUF(4)
195+
REQUIRE_OUTBUF(4);
188196

189-
OUTBYTE4((unsigned char)(tc % 10) + 0x30)
197+
OUTBYTE4((unsigned char)(tc % 10) + 0x30);
190198
tc /= 10;
191-
OUTBYTE3((unsigned char)(tc % 126) + 0x81)
199+
OUTBYTE3((unsigned char)(tc % 126) + 0x81);
192200
tc /= 126;
193-
OUTBYTE2((unsigned char)(tc % 10) + 0x30)
201+
OUTBYTE2((unsigned char)(tc % 10) + 0x30);
194202
tc /= 10;
195-
OUTBYTE1((unsigned char)(tc + 0x90))
203+
OUTBYTE1((unsigned char)(tc + 0x90));
196204

197205
NEXT(1, 4);
198206
continue;
199207
}
200208

201-
REQUIRE_OUTBUF(2)
209+
REQUIRE_OUTBUF(2);
202210

203211
GBK_ENCODE(c, code)
204-
;
205212
else if (TRYMAP_ENC(gb18030ext, code, c))
206213
;
207214
else {
208215
const struct _gb18030_to_unibmp_ranges *utrrange;
209216

210-
REQUIRE_OUTBUF(4)
217+
REQUIRE_OUTBUF(4);
211218

212219
for (utrrange = gb18030_to_unibmp_ranges;
213220
utrrange->first != 0;
@@ -219,13 +226,13 @@ ENCODER(gb18030)
219226
tc = c - utrrange->first +
220227
utrrange->base;
221228

222-
OUTBYTE4((unsigned char)(tc % 10) + 0x30)
229+
OUTBYTE4((unsigned char)(tc % 10) + 0x30);
223230
tc /= 10;
224-
OUTBYTE3((unsigned char)(tc % 126) + 0x81)
231+
OUTBYTE3((unsigned char)(tc % 126) + 0x81);
225232
tc /= 126;
226-
OUTBYTE2((unsigned char)(tc % 10) + 0x30)
233+
OUTBYTE2((unsigned char)(tc % 10) + 0x30);
227234
tc /= 10;
228-
OUTBYTE1((unsigned char)tc + 0x81)
235+
OUTBYTE1((unsigned char)tc + 0x81);
229236

230237
NEXT(1, 4);
231238
break;
@@ -236,11 +243,11 @@ ENCODER(gb18030)
236243
continue;
237244
}
238245

239-
OUTBYTE1((code >> 8) | 0x80)
246+
OUTBYTE1((code >> 8) | 0x80);
240247
if (code & 0x8000)
241-
OUTBYTE2((code & 0xFF)) /* MSB set: GBK or GB18030ext */
248+
OUTBYTE2((code & 0xFF)); /* MSB set: GBK or GB18030ext */
242249
else
243-
OUTBYTE2((code & 0xFF) | 0x80) /* MSB unset: GB2312 */
250+
OUTBYTE2((code & 0xFF) | 0x80); /* MSB unset: GB2312 */
244251

245252
NEXT(1, 2);
246253
}
@@ -326,7 +333,7 @@ ENCODER_INIT(hz)
326333
ENCODER_RESET(hz)
327334
{
328335
if (state->i != 0) {
329-
WRITEBYTE2('~', '}')
336+
WRITEBYTE2('~', '}');
330337
state->i = 0;
331338
NEXT_OUT(2);
332339
}
@@ -341,11 +348,11 @@ ENCODER(hz)
341348

342349
if (c < 0x80) {
343350
if (state->i == 0) {
344-
WRITEBYTE1((unsigned char)c)
351+
WRITEBYTE1((unsigned char)c);
345352
NEXT(1, 1);
346353
}
347354
else {
348-
WRITEBYTE3('~', '}', (unsigned char)c)
355+
WRITEBYTE3('~', '}', (unsigned char)c);
349356
NEXT(1, 3);
350357
state->i = 0;
351358
}
@@ -364,12 +371,12 @@ ENCODER(hz)
364371
return 1;
365372

366373
if (state->i == 0) {
367-
WRITEBYTE4('~', '{', code >> 8, code & 0xff)
374+
WRITEBYTE4('~', '{', code >> 8, code & 0xff);
368375
NEXT(1, 4);
369376
state->i = 1;
370377
}
371378
else {
372-
WRITEBYTE2(code >> 8, code & 0xff)
379+
WRITEBYTE2(code >> 8, code & 0xff);
373380
NEXT(1, 2);
374381
}
375382
}

Modules/cjkcodecs/_codecs_hk.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,14 @@ ENCODER(big5hkscs)
4444
Py_ssize_t insize;
4545

4646
if (c < 0x80) {
47-
REQUIRE_OUTBUF(1)
47+
REQUIRE_OUTBUF(1);
4848
**outbuf = (unsigned char)c;
4949
NEXT(1, 1);
5050
continue;
5151
}
5252

5353
insize = 1;
54-
REQUIRE_OUTBUF(2)
54+
REQUIRE_OUTBUF(2);
5555

5656
if (c < 0x10000) {
5757
if (TRYMAP_ENC(big5hkscs_bmp, code, c)) {
@@ -97,8 +97,8 @@ ENCODER(big5hkscs)
9797
else
9898
return insize;
9999

100-
OUTBYTE1(code >> 8)
101-
OUTBYTE2(code & 0xFF)
100+
OUTBYTE1(code >> 8);
101+
OUTBYTE2(code & 0xFF);
102102
NEXT(insize, 2);
103103
}
104104

Modules/cjkcodecs/_codecs_iso2022.c

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,12 @@ ENCODER_INIT(iso2022)
141141
ENCODER_RESET(iso2022)
142142
{
143143
if (STATE_GETFLAG(F_SHIFTED)) {
144-
WRITEBYTE1(SI)
144+
WRITEBYTE1(SI);
145145
NEXT_OUT(1);
146146
STATE_CLEARFLAG(F_SHIFTED)
147147
}
148148
if (STATE_G0 != CHARSET_ASCII) {
149-
WRITEBYTE3(ESC, '(', 'B')
149+
WRITEBYTE3(ESC, '(', 'B');
150150
NEXT_OUT(3);
151151
STATE_SETG0(CHARSET_ASCII)
152152
}
@@ -163,16 +163,16 @@ ENCODER(iso2022)
163163

164164
if (c < 0x80) {
165165
if (STATE_G0 != CHARSET_ASCII) {
166-
WRITEBYTE3(ESC, '(', 'B')
166+
WRITEBYTE3(ESC, '(', 'B');
167167
STATE_SETG0(CHARSET_ASCII)
168168
NEXT_OUT(3);
169169
}
170170
if (STATE_GETFLAG(F_SHIFTED)) {
171-
WRITEBYTE1(SI)
171+
WRITEBYTE1(SI);
172172
STATE_CLEARFLAG(F_SHIFTED)
173173
NEXT_OUT(1);
174174
}
175-
WRITEBYTE1((unsigned char)c)
175+
WRITEBYTE1((unsigned char)c);
176176
NEXT(1, 1);
177177
continue;
178178
}
@@ -210,24 +210,24 @@ ENCODER(iso2022)
210210
switch (dsg->plane) {
211211
case 0: /* G0 */
212212
if (STATE_GETFLAG(F_SHIFTED)) {
213-
WRITEBYTE1(SI)
213+
WRITEBYTE1(SI);
214214
STATE_CLEARFLAG(F_SHIFTED)
215215
NEXT_OUT(1);
216216
}
217217
if (STATE_G0 != dsg->mark) {
218218
if (dsg->width == 1) {
219-
WRITEBYTE3(ESC, '(', ESCMARK(dsg->mark))
219+
WRITEBYTE3(ESC, '(', ESCMARK(dsg->mark));
220220
STATE_SETG0(dsg->mark)
221221
NEXT_OUT(3);
222222
}
223223
else if (dsg->mark == CHARSET_JISX0208) {
224-
WRITEBYTE3(ESC, '$', ESCMARK(dsg->mark))
224+
WRITEBYTE3(ESC, '$', ESCMARK(dsg->mark));
225225
STATE_SETG0(dsg->mark)
226226
NEXT_OUT(3);
227227
}
228228
else {
229229
WRITEBYTE4(ESC, '$', '(',
230-
ESCMARK(dsg->mark))
230+
ESCMARK(dsg->mark));
231231
STATE_SETG0(dsg->mark)
232232
NEXT_OUT(4);
233233
}
@@ -236,19 +236,19 @@ ENCODER(iso2022)
236236
case 1: /* G1 */
237237
if (STATE_G1 != dsg->mark) {
238238
if (dsg->width == 1) {
239-
WRITEBYTE3(ESC, ')', ESCMARK(dsg->mark))
239+
WRITEBYTE3(ESC, ')', ESCMARK(dsg->mark));
240240
STATE_SETG1(dsg->mark)
241241
NEXT_OUT(3);
242242
}
243243
else {
244244
WRITEBYTE4(ESC, '$', ')',
245-
ESCMARK(dsg->mark))
245+
ESCMARK(dsg->mark));
246246
STATE_SETG1(dsg->mark)
247247
NEXT_OUT(4);
248248
}
249249
}
250250
if (!STATE_GETFLAG(F_SHIFTED)) {
251-
WRITEBYTE1(SO)
251+
WRITEBYTE1(SO);
252252
STATE_SETFLAG(F_SHIFTED)
253253
NEXT_OUT(1);
254254
}
@@ -259,11 +259,11 @@ ENCODER(iso2022)
259259
}
260260

261261
if (dsg->width == 1) {
262-
WRITEBYTE1((unsigned char)encoded)
262+
WRITEBYTE1((unsigned char)encoded);
263263
NEXT_OUT(1);
264264
}
265265
else {
266-
WRITEBYTE2(encoded >> 8, encoded & 0xff)
266+
WRITEBYTE2(encoded >> 8, encoded & 0xff);
267267
NEXT_OUT(2);
268268
}
269269
NEXT_INCHAR(insize);
@@ -371,20 +371,21 @@ iso2022processesc(const void *config, MultibyteCodec_State *state,
371371
return 0;
372372
}
373373

374-
#define ISO8859_7_DECODE(c, writer) \
375-
if ((c) < 0xa0) \
376-
OUTCHAR(c); \
377-
else if ((c) < 0xc0 && (0x288f3bc9L & (1L << ((c)-0xa0)))) \
378-
OUTCHAR(c); \
379-
else if ((c) >= 0xb4 && (c) <= 0xfe && ((c) >= 0xd4 || \
380-
(0xbffffd77L & (1L << ((c)-0xb4))))) \
381-
OUTCHAR(0x02d0 + (c)); \
382-
else if ((c) == 0xa1) \
383-
OUTCHAR(0x2018); \
384-
else if ((c) == 0xa2) \
385-
OUTCHAR(0x2019); \
386-
else if ((c) == 0xaf) \
387-
OUTCHAR(0x2015);
374+
#define ISO8859_7_DECODE(c, writer) \
375+
if ((c) < 0xa0) { \
376+
OUTCHAR(c); \
377+
} else if ((c) < 0xc0 && (0x288f3bc9L & (1L << ((c)-0xa0)))) { \
378+
OUTCHAR(c); \
379+
} else if ((c) >= 0xb4 && (c) <= 0xfe && ((c) >= 0xd4 || \
380+
(0xbffffd77L & (1L << ((c)-0xb4))))) { \
381+
OUTCHAR(0x02d0 + (c)); \
382+
} else if ((c) == 0xa1) { \
383+
OUTCHAR(0x2018); \
384+
} else if ((c) == 0xa2) { \
385+
OUTCHAR(0x2019); \
386+
} else if ((c) == 0xaf) { \
387+
OUTCHAR(0x2015); \
388+
}
388389

389390
static Py_ssize_t
390391
iso2022processg2(const void *config, MultibyteCodec_State *state,

0 commit comments

Comments
 (0)