Skip to content

Commit 6bbd996

Browse files
committed
Implement C API function PyUnicode_FromWideChar.
1 parent 3f61687 commit 6bbd996

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

graalpython/com.oracle.graal.python.cext/src/unicodeobject.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,12 +402,22 @@ int _PyUnicode_EqualToASCIIString( PyObject *left, const char *right) {
402402
return UPCALL_CEXT_I(_jls_PyUnicode_Compare, native_to_java(left), polyglot_from_string(right, SRC_CS)) == 0;
403403
}
404404

405+
UPCALL_ID(PyTruffle_Unicode_FromWchar);
406+
PyObject * PyUnicode_FromWideChar(const wchar_t *u, Py_ssize_t size) {
407+
#if SIZEOF_WCHAR_T == 1
408+
return UPCALL_CEXT_O(_jls_PyTruffle_Unicode_FromWchar, polyglot_from_i8_array(u, size), 1, NULL);
409+
#elif SIZEOF_WCHAR_T == 2
410+
return UPCALL_CEXT_O(_jls_PyTruffle_Unicode_FromWchar, polyglot_from_i32_array(u, size), 2, NULL);
411+
#elif SIZEOF_WCHAR_T == 4
412+
return UPCALL_CEXT_O(_jls_PyTruffle_Unicode_FromWchar, polyglot_from_i32_array(u, size), 4, NULL);
413+
#endif
414+
}
415+
405416
static PyObject* _PyUnicode_FromUCS1(const Py_UCS1* u, Py_ssize_t size) {
406417
// CPython assumes latin1 when decoding an UCS1 array
407418
return polyglot_from_string((const char *) u, "ISO-8859-1");
408419
}
409420

410-
UPCALL_ID(PyTruffle_Unicode_FromWchar);
411421
static PyObject* _PyUnicode_FromUCS2(const Py_UCS2 *u, Py_ssize_t size) {
412422
return UPCALL_CEXT_O(_jls_PyTruffle_Unicode_FromWchar, polyglot_from_i16_array(u, size), 2, NULL);
413423
}

0 commit comments

Comments
 (0)