mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00:00
Issue #28295: Fixed the documentation and added tests for PyUnicode_AsUCS4().
Original patch by Xiang Zhang.
This commit is contained in:
parent
63b5b6fd45
commit
cc164232aa
4 changed files with 50 additions and 2 deletions
|
@ -1829,6 +1829,36 @@ unicode_aswidecharstring(PyObject *self, PyObject *args)
|
|||
return Py_BuildValue("(Nn)", result, size);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
unicode_asucs4(PyObject *self, PyObject *args)
|
||||
{
|
||||
PyObject *unicode, *result;
|
||||
Py_UCS4 *buffer;
|
||||
int copy_null;
|
||||
Py_ssize_t str_len, buf_len;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "Unp:unicode_asucs4", &unicode, &str_len, ©_null)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
buf_len = str_len + 1;
|
||||
buffer = PyMem_NEW(Py_UCS4, buf_len);
|
||||
if (buffer == NULL) {
|
||||
return PyErr_NoMemory();
|
||||
}
|
||||
memset(buffer, 0, sizeof(Py_UCS4)*buf_len);
|
||||
buffer[str_len] = 0xffffU;
|
||||
|
||||
if (!PyUnicode_AsUCS4(unicode, buffer, buf_len, copy_null)) {
|
||||
PyMem_FREE(buffer);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
result = PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND, buffer, buf_len);
|
||||
PyMem_FREE(buffer);
|
||||
return result;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
unicode_encodedecimal(PyObject *self, PyObject *args)
|
||||
{
|
||||
|
@ -3884,6 +3914,7 @@ static PyMethodDef TestMethods[] = {
|
|||
{"test_widechar", (PyCFunction)test_widechar, METH_NOARGS},
|
||||
{"unicode_aswidechar", unicode_aswidechar, METH_VARARGS},
|
||||
{"unicode_aswidecharstring",unicode_aswidecharstring, METH_VARARGS},
|
||||
{"unicode_asucs4", unicode_asucs4, METH_VARARGS},
|
||||
{"unicode_encodedecimal", unicode_encodedecimal, METH_VARARGS},
|
||||
{"unicode_transformdecimaltoascii", unicode_transformdecimaltoascii, METH_VARARGS},
|
||||
{"unicode_legacy_string", unicode_legacy_string, METH_VARARGS},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue