|
|
|
@ -1828,6 +1828,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) |
|
|
|
{ |
|
|
|
@ -4030,6 +4060,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}, |
|
|
|
|