mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
Merging the py3k-pep3137 branch back into the py3k branch.
No detailed change log; just check out the change log for the py3k-pep3137 branch. The most obvious changes: - str8 renamed to bytes (PyString at the C level); - bytes renamed to buffer (PyBytes at the C level); - PyString and PyUnicode are no longer compatible. I.e. we now have an immutable bytes type and a mutable bytes type. The behavior of PyString was modified quite a bit, to make it more bytes-like. Some changes are still on the to-do list.
This commit is contained in:
parent
a19f80c6df
commit
98297ee781
148 changed files with 2533 additions and 3517 deletions
|
@ -180,7 +180,7 @@ escape_encode(PyObject *self,
|
|||
"string is too large to encode");
|
||||
return NULL;
|
||||
}
|
||||
v = PyBytes_FromStringAndSize(NULL, newsize);
|
||||
v = PyString_FromStringAndSize(NULL, newsize);
|
||||
|
||||
if (v == NULL) {
|
||||
return NULL;
|
||||
|
@ -188,11 +188,11 @@ escape_encode(PyObject *self,
|
|||
else {
|
||||
register Py_ssize_t i;
|
||||
register char c;
|
||||
register char *p = PyBytes_AS_STRING(v);
|
||||
register char *p = PyString_AS_STRING(v);
|
||||
|
||||
for (i = 0; i < size; i++) {
|
||||
/* There's at least enough room for a hex escape */
|
||||
assert(newsize - (p - PyBytes_AS_STRING(v)) >= 4);
|
||||
assert(newsize - (p - PyString_AS_STRING(v)) >= 4);
|
||||
c = PyString_AS_STRING(str)[i];
|
||||
if (c == '\'' || c == '\\')
|
||||
*p++ = '\\', *p++ = c;
|
||||
|
@ -212,13 +212,12 @@ escape_encode(PyObject *self,
|
|||
*p++ = c;
|
||||
}
|
||||
*p = '\0';
|
||||
if (PyBytes_Resize(v, (p - PyBytes_AS_STRING(v)))) {
|
||||
Py_DECREF(v);
|
||||
if (_PyString_Resize(&v, (p - PyString_AS_STRING(v)))) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return codec_tuple(v, PyBytes_Size(v));
|
||||
return codec_tuple(v, PyString_Size(v));
|
||||
}
|
||||
|
||||
/* --- Decoder ------------------------------------------------------------ */
|
||||
|
@ -654,7 +653,7 @@ readbuffer_encode(PyObject *self,
|
|||
&data, &size, &errors))
|
||||
return NULL;
|
||||
|
||||
return codec_tuple(PyBytes_FromStringAndSize(data, size), size);
|
||||
return codec_tuple(PyString_FromStringAndSize(data, size), size);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
|
@ -669,7 +668,7 @@ charbuffer_encode(PyObject *self,
|
|||
&data, &size, &errors))
|
||||
return NULL;
|
||||
|
||||
return codec_tuple(PyBytes_FromStringAndSize(data, size), size);
|
||||
return codec_tuple(PyString_FromStringAndSize(data, size), size);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
|
@ -688,12 +687,12 @@ unicode_internal_encode(PyObject *self,
|
|||
if (PyUnicode_Check(obj)) {
|
||||
data = PyUnicode_AS_DATA(obj);
|
||||
size = PyUnicode_GET_DATA_SIZE(obj);
|
||||
return codec_tuple(PyBytes_FromStringAndSize(data, size), size);
|
||||
return codec_tuple(PyString_FromStringAndSize(data, size), size);
|
||||
}
|
||||
else {
|
||||
if (PyObject_AsReadBuffer(obj, (const void **)&data, &size))
|
||||
return NULL;
|
||||
return codec_tuple(PyBytes_FromStringAndSize(data, size), size);
|
||||
return codec_tuple(PyString_FromStringAndSize(data, size), size);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue