Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
bd97ac35
Commit
bd97ac35
authored
Oct 28, 2013
by
Victor Stinner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CJK codecs: use less magic and more readable macros, write explicit if
parent
0a6e2c59
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
32 additions
and
34 deletions
+32
-34
Modules/cjkcodecs/_codecs_cn.c
Modules/cjkcodecs/_codecs_cn.c
+4
-4
Modules/cjkcodecs/_codecs_hk.c
Modules/cjkcodecs/_codecs_hk.c
+3
-3
Modules/cjkcodecs/_codecs_iso2022.c
Modules/cjkcodecs/_codecs_iso2022.c
+8
-8
Modules/cjkcodecs/_codecs_jp.c
Modules/cjkcodecs/_codecs_jp.c
+10
-10
Modules/cjkcodecs/_codecs_kr.c
Modules/cjkcodecs/_codecs_kr.c
+3
-3
Modules/cjkcodecs/_codecs_tw.c
Modules/cjkcodecs/_codecs_tw.c
+3
-3
Modules/cjkcodecs/cjkcodecs.h
Modules/cjkcodecs/cjkcodecs.h
+1
-3
No files found.
Modules/cjkcodecs/_codecs_cn.c
View file @
bd97ac35
...
...
@@ -36,7 +36,7 @@
if ((code) == 0x2014) (assi) = 0xa1aa; \
else if ((code) == 0x2015) (assi) = 0xa844; \
else if ((code) == 0x00b7) (assi) = 0xa1a4; \
else if ((code) != 0x30fb && TRYMAP_ENC
_COND
(gbcommon, assi, code));
else if ((code) != 0x30fb && TRYMAP_ENC(gbcommon, assi, code));
/*
* GB2312 codec
...
...
@@ -58,7 +58,7 @@ ENCODER(gb2312)
return
1
;
REQUIRE_OUTBUF
(
2
)
TRYMAP_ENC
(
gbcommon
,
code
,
c
);
if
(
TRYMAP_ENC
(
gbcommon
,
code
,
c
)
);
else
return
1
;
if
(
code
&
0x8000
)
/* MSB set: GBK */
...
...
@@ -192,7 +192,7 @@ ENCODER(gb18030)
REQUIRE_OUTBUF
(
2
)
GBK_ENCODE
(
c
,
code
)
else
TRYMAP_ENC
(
gb18030ext
,
code
,
c
);
else
if
(
TRYMAP_ENC
(
gb18030ext
,
code
,
c
)
);
else
{
const
struct
_gb18030_to_unibmp_ranges
*
utrrange
;
...
...
@@ -343,7 +343,7 @@ ENCODER(hz)
if
(
c
>
0xFFFF
)
return
1
;
TRYMAP_ENC
(
gbcommon
,
code
,
c
);
if
(
TRYMAP_ENC
(
gbcommon
,
code
,
c
)
);
else
return
1
;
if
(
code
&
0x8000
)
/* MSB set: GBK */
...
...
Modules/cjkcodecs/_codecs_hk.c
View file @
bd97ac35
...
...
@@ -54,7 +54,7 @@ ENCODER(big5hkscs)
REQUIRE_OUTBUF
(
2
)
if
(
c
<
0x10000
)
{
TRYMAP_ENC
(
big5hkscs_bmp
,
code
,
c
)
{
if
(
TRYMAP_ENC
(
big5hkscs_bmp
,
code
,
c
)
)
{
if
(
code
==
MULTIC
)
{
Py_UCS4
c2
;
if
(
inlen
-
*
inpos
>=
2
)
...
...
@@ -81,13 +81,13 @@ ENCODER(big5hkscs)
}
}
}
else
TRYMAP_ENC
(
big5
,
code
,
c
);
else
if
(
TRYMAP_ENC
(
big5
,
code
,
c
)
);
else
return
1
;
}
else
if
(
c
<
0x20000
)
return
insize
;
else
if
(
c
<
0x30000
)
{
TRYMAP_ENC
(
big5hkscs_nonbmp
,
code
,
c
&
0xffff
);
if
(
TRYMAP_ENC
(
big5hkscs_nonbmp
,
code
,
c
&
0xffff
)
);
else
return
insize
;
}
else
...
...
Modules/cjkcodecs/_codecs_iso2022.c
View file @
bd97ac35
...
...
@@ -578,9 +578,10 @@ ksx1001_encoder(const Py_UCS4 *data, Py_ssize_t *length)
DBCHAR
coded
;
assert
(
*
length
==
1
);
if
(
*
data
<
0x10000
)
{
TRYMAP_ENC
(
cp949
,
coded
,
*
data
)
if
(
TRYMAP_ENC
(
cp949
,
coded
,
*
data
))
{
if
(
!
(
coded
&
0x8000
))
return
coded
;
}
}
return
MAP_UNMAPPABLE
;
}
...
...
@@ -618,7 +619,7 @@ jisx0208_encoder(const Py_UCS4 *data, Py_ssize_t *length)
if
(
*
data
<
0x10000
)
{
if
(
*
data
==
0xff3c
)
/* F/W REVERSE SOLIDUS */
return
0x2140
;
else
TRYMAP_ENC
(
jisxcommon
,
coded
,
*
data
)
{
else
if
(
TRYMAP_ENC
(
jisxcommon
,
coded
,
*
data
)
)
{
if
(
!
(
coded
&
0x8000
))
return
coded
;
}
...
...
@@ -655,7 +656,7 @@ jisx0212_encoder(const Py_UCS4 *data, Py_ssize_t *length)
DBCHAR
coded
;
assert
(
*
length
==
1
);
if
(
*
data
<
0x10000
)
{
TRYMAP_ENC
(
jisxcommon
,
coded
,
*
data
)
{
if
(
TRYMAP_ENC
(
jisxcommon
,
coded
,
*
data
)
)
{
if
(
coded
&
0x8000
)
return
coded
&
0x7fff
;
}
...
...
@@ -759,19 +760,18 @@ jisx0213_encoder(const Py_UCS4 *data, Py_ssize_t *length, void *config)
if
(
*
data
>=
0x10000
)
{
if
((
*
data
)
>>
16
==
0x20000
>>
16
)
{
EMULATE_JISX0213_2000_ENCODE_EMP
(
coded
,
*
data
)
else
TRYMAP_ENC
(
jisx0213_emp
,
coded
,
(
*
data
)
&
0xffff
)
else
if
(
TRYMAP_ENC
(
jisx0213_emp
,
coded
,
(
*
data
)
&
0xffff
))
return
coded
;
}
return
MAP_UNMAPPABLE
;
}
EMULATE_JISX0213_2000_ENCODE_BMP
(
coded
,
*
data
)
else
TRYMAP_ENC
(
jisx0213_bmp
,
coded
,
*
data
)
{
else
if
(
TRYMAP_ENC
(
jisx0213_bmp
,
coded
,
*
data
)
)
{
if
(
coded
==
MULTIC
)
return
MAP_MULTIPLE_AVAIL
;
}
else
TRYMAP_ENC
(
jisxcommon
,
coded
,
*
data
)
{
else
if
(
TRYMAP_ENC
(
jisxcommon
,
coded
,
*
data
)
)
{
if
(
coded
&
0x8000
)
return
MAP_UNMAPPABLE
;
}
...
...
@@ -962,7 +962,7 @@ gb2312_encoder(const Py_UCS4 *data, Py_ssize_t *length)
DBCHAR
coded
;
assert
(
*
length
==
1
);
if
(
*
data
<
0x10000
)
{
TRYMAP_ENC
(
gbcommon
,
coded
,
*
data
)
{
if
(
TRYMAP_ENC
(
gbcommon
,
coded
,
*
data
)
)
{
if
(
!
(
coded
&
0x8000
))
return
coded
;
}
...
...
Modules/cjkcodecs/_codecs_jp.c
View file @
bd97ac35
...
...
@@ -49,11 +49,11 @@ ENCODER(cp932)
return
1
;
REQUIRE_OUTBUF
(
2
)
TRYMAP_ENC
(
cp932ext
,
code
,
c
)
{
if
(
TRYMAP_ENC
(
cp932ext
,
code
,
c
)
)
{
OUTBYTE1
(
code
>>
8
)
OUTBYTE2
(
code
&
0xff
)
}
else
TRYMAP_ENC
(
jisxcommon
,
code
,
c
)
{
else
if
(
TRYMAP_ENC
(
jisxcommon
,
code
,
c
)
)
{
if
(
code
&
0x8000
)
/* MSB set: JIS X 0212 */
return
1
;
...
...
@@ -165,7 +165,7 @@ ENCODER(euc_jis_2004)
if
(
c
<=
0xFFFF
)
{
EMULATE_JISX0213_2000_ENCODE_BMP
(
code
,
c
)
else
TRYMAP_ENC
(
jisx0213_bmp
,
code
,
c
)
{
else
if
(
TRYMAP_ENC
(
jisx0213_bmp
,
code
,
c
)
)
{
if
(
code
==
MULTIC
)
{
if
(
inlen
-
*
inpos
<
2
)
{
if
(
flags
&
MBENC_FLUSH
)
{
...
...
@@ -197,7 +197,7 @@ ENCODER(euc_jis_2004)
}
}
}
else
TRYMAP_ENC
(
jisxcommon
,
code
,
c
);
else
if
(
TRYMAP_ENC
(
jisxcommon
,
code
,
c
)
);
else
if
(
c
>=
0xff61
&&
c
<=
0xff9f
)
{
/* JIS X 0201 half-width katakana */
WRITEBYTE2
(
0x8e
,
c
-
0xfec0
)
...
...
@@ -215,7 +215,7 @@ ENCODER(euc_jis_2004)
}
else
if
(
c
>>
16
==
EMPBASE
>>
16
)
{
EMULATE_JISX0213_2000_ENCODE_EMP
(
code
,
c
)
else
TRYMAP_ENC
(
jisx0213_emp
,
code
,
c
&
0xffff
);
else
if
(
TRYMAP_ENC
(
jisx0213_emp
,
code
,
c
&
0xffff
)
);
else
return
insize
;
}
else
...
...
@@ -334,7 +334,7 @@ ENCODER(euc_jp)
if
(
c
>
0xFFFF
)
return
1
;
TRYMAP_ENC
(
jisxcommon
,
code
,
c
);
if
(
TRYMAP_ENC
(
jisxcommon
,
code
,
c
)
);
else
if
(
c
>=
0xff61
&&
c
<=
0xff9f
)
{
/* JIS X 0201 half-width katakana */
WRITEBYTE2
(
0x8e
,
c
-
0xfec0
)
...
...
@@ -469,7 +469,7 @@ ENCODER(shift_jis)
REQUIRE_OUTBUF
(
2
)
if
(
code
==
NOCHAR
)
{
TRYMAP_ENC
(
jisxcommon
,
code
,
c
);
if
(
TRYMAP_ENC
(
jisxcommon
,
code
,
c
)
);
#ifndef STRICT_BUILD
else
if
(
c
==
0xff3c
)
code
=
0x2140
;
/* FULL-WIDTH REVERSE SOLIDUS */
...
...
@@ -570,7 +570,7 @@ ENCODER(shift_jis_2004)
if
(
code
==
NOCHAR
)
{
if
(
c
<=
0xffff
)
{
EMULATE_JISX0213_2000_ENCODE_BMP
(
code
,
c
)
else
TRYMAP_ENC
(
jisx0213_bmp
,
code
,
c
)
{
else
if
(
TRYMAP_ENC
(
jisx0213_bmp
,
code
,
c
)
)
{
if
(
code
==
MULTIC
)
{
if
(
inlen
-
*
inpos
<
2
)
{
if
(
flags
&
MBENC_FLUSH
)
{
...
...
@@ -603,7 +603,7 @@ ENCODER(shift_jis_2004)
}
}
}
else
TRYMAP_ENC
(
jisxcommon
,
code
,
c
)
{
else
if
(
TRYMAP_ENC
(
jisxcommon
,
code
,
c
)
)
{
/* abandon JIS X 0212 codes */
if
(
code
&
0x8000
)
return
1
;
...
...
@@ -612,7 +612,7 @@ ENCODER(shift_jis_2004)
}
else
if
(
c
>>
16
==
EMPBASE
>>
16
)
{
EMULATE_JISX0213_2000_ENCODE_EMP
(
code
,
c
)
else
TRYMAP_ENC
(
jisx0213_emp
,
code
,
c
&
0xffff
);
else
if
(
TRYMAP_ENC
(
jisx0213_emp
,
code
,
c
&
0xffff
)
);
else
return
insize
;
}
else
...
...
Modules/cjkcodecs/_codecs_kr.c
View file @
bd97ac35
...
...
@@ -47,7 +47,7 @@ ENCODER(euc_kr)
return
1
;
REQUIRE_OUTBUF
(
2
)
TRYMAP_ENC
(
cp949
,
code
,
c
);
if
(
TRYMAP_ENC
(
cp949
,
code
,
c
)
);
else
return
1
;
if
((
code
&
0x8000
)
==
0
)
{
...
...
@@ -182,7 +182,7 @@ ENCODER(cp949)
return
1
;
REQUIRE_OUTBUF
(
2
)
TRYMAP_ENC
(
cp949
,
code
,
c
);
if
(
TRYMAP_ENC
(
cp949
,
code
,
c
)
);
else
return
1
;
OUTBYTE1
((
code
>>
8
)
|
0x80
)
...
...
@@ -279,7 +279,7 @@ ENCODER(johab)
}
else
if
(
c
>=
0x3131
&&
c
<=
0x3163
)
code
=
u2johabjamo
[
c
-
0x3131
];
else
TRYMAP_ENC
(
cp949
,
code
,
c
)
{
else
if
(
TRYMAP_ENC
(
cp949
,
code
,
c
)
)
{
unsigned
char
c1
,
c2
,
t2
;
unsigned
short
t1
;
...
...
Modules/cjkcodecs/_codecs_tw.c
View file @
bd97ac35
...
...
@@ -29,7 +29,7 @@ ENCODER(big5)
REQUIRE_OUTBUF
(
2
)
TRYMAP_ENC
(
big5
,
code
,
c
);
if
(
TRYMAP_ENC
(
big5
,
code
,
c
)
);
else
return
1
;
OUTBYTE1
(
code
>>
8
)
...
...
@@ -84,8 +84,8 @@ ENCODER(cp950)
return
1
;
REQUIRE_OUTBUF
(
2
)
TRYMAP_ENC
(
cp950ext
,
code
,
c
);
else
TRYMAP_ENC
(
big5
,
code
,
c
);
if
(
TRYMAP_ENC
(
cp950ext
,
code
,
c
)
);
else
if
(
TRYMAP_ENC
(
big5
,
code
,
c
)
);
else
return
1
;
OUTBYTE1
(
code
>>
8
)
...
...
Modules/cjkcodecs/cjkcodecs.h
View file @
bd97ac35
...
...
@@ -172,10 +172,8 @@ static const struct dbcs_map *mapping_list;
((m)->map != NULL && (val) >= (m)->bottom && \
(val)<= (m)->top && ((assi) = (m)->map[(val) - \
(m)->bottom]) != NOCHAR)
#define TRYMAP_ENC
_COND
(charset, assi, uni) \
#define TRYMAP_ENC(charset, assi, uni) \
_TRYMAP_ENC(&charset##_encmap[(uni) >> 8], assi, (uni) & 0xff)
#define TRYMAP_ENC(charset, assi, uni) \
if TRYMAP_ENC_COND(charset, assi, uni)
#define _TRYMAP_DEC(m, assi, val) \
((m)->map != NULL && \
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment