summaryrefslogtreecommitdiffstats
path: root/Objects/stringlib/codecs.h
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2014-01-04 20:44:01 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2014-01-04 20:44:01 (GMT)
commit3079328d296992af4f64a988ec5dee244b319e7b (patch)
tree43db65bb17d79ec63e93108f11bf378864176a9b /Objects/stringlib/codecs.h
parent3cceb384861eeae1f164568a9ea30534fdf2c87c (diff)
downloadcpython-3079328d296992af4f64a988ec5dee244b319e7b.zip
cpython-3079328d296992af4f64a988ec5dee244b319e7b.tar.gz
cpython-3079328d296992af4f64a988ec5dee244b319e7b.tar.bz2
Reverted changeset b72c5573c5e7 (issue #15027).
Diffstat (limited to 'Objects/stringlib/codecs.h')
-rw-r--r--Objects/stringlib/codecs.h87
1 files changed, 0 insertions, 87 deletions
diff --git a/Objects/stringlib/codecs.h b/Objects/stringlib/codecs.h
index cd5d944..2eb2d14 100644
--- a/Objects/stringlib/codecs.h
+++ b/Objects/stringlib/codecs.h
@@ -718,93 +718,6 @@ STRINGLIB(utf16_encode)(const STRINGLIB_CHAR *in,
return len - (end - in + 1);
#endif
}
-
-#if STRINGLIB_SIZEOF_CHAR == 1
-# define SWAB4(CH, tmp) ((CH) << 24) /* high bytes are zero */
-#elif STRINGLIB_SIZEOF_CHAR == 2
-# define SWAB4(CH, tmp) (tmp = (CH), \
- ((tmp & 0x00FFu) << 24) + ((tmp & 0xFF00u) << 8))
- /* high bytes are zero */
-#else
-# define SWAB4(CH, tmp) (tmp = (CH), \
- tmp = ((tmp & 0x00FF00FFu) << 8) + ((tmp >> 8) & 0x00FF00FFu), \
- ((tmp & 0x0000FFFFu) << 16) + ((tmp >> 16) & 0x0000FFFFu))
-#endif
-Py_LOCAL_INLINE(Py_ssize_t)
-STRINGLIB(utf32_encode)(const STRINGLIB_CHAR *in,
- Py_ssize_t len,
- PY_UINT32_T **outptr,
- int native_ordering)
-{
- PY_UINT32_T *out = *outptr;
- const STRINGLIB_CHAR *end = in + len;
- if (native_ordering) {
- const STRINGLIB_CHAR *unrolled_end = in + _Py_SIZE_ROUND_DOWN(len, 4);
- while (in < unrolled_end) {
-#if STRINGLIB_SIZEOF_CHAR > 1
- /* check if any character is a surrogate character */
- if (((in[0] ^ 0xd800) &
- (in[1] ^ 0xd800) &
- (in[2] ^ 0xd800) &
- (in[3] ^ 0xd800) & 0xf800) == 0)
- break;
-#endif
- out[0] = in[0];
- out[1] = in[1];
- out[2] = in[2];
- out[3] = in[3];
- in += 4; out += 4;
- }
- while (in < end) {
- Py_UCS4 ch;
- ch = *in++;
-#if STRINGLIB_SIZEOF_CHAR > 1
- if (Py_UNICODE_IS_SURROGATE(ch)) {
- /* reject surrogate characters (U+DC800-U+DFFF) */
- goto fail;
- }
-#endif
- *out++ = ch;
- }
- } else {
- const STRINGLIB_CHAR *unrolled_end = in + _Py_SIZE_ROUND_DOWN(len, 4);
- while (in < unrolled_end) {
-#if STRINGLIB_SIZEOF_CHAR > 1
- Py_UCS4 ch1, ch2, ch3, ch4;
- /* check if any character is a surrogate character */
- if (((in[0] ^ 0xd800) &
- (in[1] ^ 0xd800) &
- (in[2] ^ 0xd800) &
- (in[3] ^ 0xd800) & 0xf800) == 0)
- break;
-#endif
- out[0] = SWAB4(in[0], ch1);
- out[1] = SWAB4(in[1], ch2);
- out[2] = SWAB4(in[2], ch3);
- out[3] = SWAB4(in[3], ch4);
- in += 4; out += 4;
- }
- while (in < end) {
- Py_UCS4 ch = *in++;
-#if STRINGLIB_SIZEOF_CHAR > 1
- if (Py_UNICODE_IS_SURROGATE(ch)) {
- /* reject surrogate characters (U+DC800-U+DFFF) */
- goto fail;
- }
-#endif
- *out++ = SWAB4(ch, ch);
- }
- }
- *outptr = out;
- return len;
-#if STRINGLIB_SIZEOF_CHAR > 1
- fail:
- *outptr = out;
- return len - (end - in + 1);
-#endif
-}
-#undef SWAB4
-
#endif
#endif /* STRINGLIB_IS_UNICODE */