PyUnicode_AsWideCharString() takes a PyObject*, not a PyUnicodeObject*

All unicode functions uses PyObject* except PyUnicode_AsWideChar(). Fix the
prototype for the new function PyUnicode_AsWideCharString().
diff --git a/Doc/c-api/unicode.rst b/Doc/c-api/unicode.rst
index aae2b4a..8f9e994 100644
--- a/Doc/c-api/unicode.rst
+++ b/Doc/c-api/unicode.rst
@@ -462,7 +462,7 @@
    required by the application.
 
 
-.. c:function:: wchar_t* PyUnicode_AsWideCharString(PyUnicodeObject *unicode, Py_ssize_t *size)
+.. c:function:: wchar_t* PyUnicode_AsWideCharString(PyObject *unicode, Py_ssize_t *size)
 
    Convert the Unicode object to a wide character string. The output string
    always ends with a nul character. If *size* is not *NULL*, write the number
diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h
index f206895..39a6b2e 100644
--- a/Include/unicodeobject.h
+++ b/Include/unicodeobject.h
@@ -581,7 +581,7 @@
    MemoryError. */
 
 PyAPI_FUNC(wchar_t*) PyUnicode_AsWideCharString(
-    PyUnicodeObject *unicode,   /* Unicode object */
+    PyObject *unicode,          /* Unicode object */
     Py_ssize_t *size            /* number of characters of the result */
     );
 
diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c
index ce2acb5..737e4c3 100644
--- a/Modules/_ctypes/callproc.c
+++ b/Modules/_ctypes/callproc.c
@@ -666,7 +666,7 @@
         return 0;
 #else
         pa->ffi_type = &ffi_type_pointer;
-        pa->value.p = PyUnicode_AsWideCharString((PyUnicodeObject *)obj, NULL);
+        pa->value.p = PyUnicode_AsWideCharString(obj, NULL);
         if (pa->value.p == NULL)
             return -1;
         pa->keep = PyCapsule_New(pa->value.p, CTYPES_CAPSULE_NAME_PYMEM, pymem_destructor);
diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c
index 072b8c6..ab293f7 100644
--- a/Modules/_ctypes/cfield.c
+++ b/Modules/_ctypes/cfield.c
@@ -1434,7 +1434,7 @@
         PyObject *keep;
         wchar_t *buffer;
 
-        buffer = PyUnicode_AsWideCharString((PyUnicodeObject *)value, NULL);
+        buffer = PyUnicode_AsWideCharString(value, NULL);
         if (!buffer) {
             Py_DECREF(value);
             return NULL;
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index 67d16f4..1001dd2 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -246,10 +246,10 @@
     if (!PyArg_ParseTuple(args, "UU:strcoll", &os1, &os2))
         return NULL;
     /* Convert the unicode strings to wchar[]. */
-    ws1 = PyUnicode_AsWideCharString((PyUnicodeObject*)os1, NULL);
+    ws1 = PyUnicode_AsWideCharString(os1, NULL);
     if (ws1 == NULL)
         goto done;
-    ws2 = PyUnicode_AsWideCharString((PyUnicodeObject*)os2, NULL);
+    ws2 = PyUnicode_AsWideCharString(os2, NULL);
     if (ws2 == NULL)
         goto done;
     /* Collate the strings. */
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index 912ba17..473d805 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -1426,7 +1426,7 @@
     if (!PyArg_ParseTuple(args, "U", &unicode))
         return NULL;
 
-    buffer = PyUnicode_AsWideCharString((PyUnicodeObject*)unicode, &size);
+    buffer = PyUnicode_AsWideCharString(unicode, &size);
     if (buffer == NULL)
         return NULL;
 
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 1a85662..5e6cd6c 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -502,7 +502,7 @@
         buf.tm_isdst = 1;
 
 #ifdef HAVE_WCSFTIME
-    format = PyUnicode_AsWideCharString((PyUnicodeObject*)format_arg, NULL);
+    format = PyUnicode_AsWideCharString(format_arg, NULL);
     if (format == NULL)
         return NULL;
     fmt = format;
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 3fd22a3..37a9070 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1275,7 +1275,7 @@
 }
 
 wchar_t*
-PyUnicode_AsWideCharString(PyUnicodeObject *unicode,
+PyUnicode_AsWideCharString(PyObject *unicode,
                            Py_ssize_t *size)
 {
     wchar_t* buffer;
@@ -1286,7 +1286,7 @@
         return NULL;
     }
 
-    buflen = unicode_aswidechar(unicode, NULL, 0);
+    buflen = unicode_aswidechar((PyUnicodeObject *)unicode, NULL, 0);
     if (PY_SSIZE_T_MAX / sizeof(wchar_t) < buflen) {
         PyErr_NoMemory();
         return NULL;
@@ -1297,7 +1297,7 @@
         PyErr_NoMemory();
         return NULL;
     }
-    buflen = unicode_aswidechar(unicode, buffer, buflen);
+    buflen = unicode_aswidechar((PyUnicodeObject *)unicode, buffer, buflen);
     if (size != NULL)
         *size = buflen;
     return buffer;
diff --git a/Python/import.c b/Python/import.c
index 43c1494..ab1615c 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1970,7 +1970,7 @@
     if (usize == 0)
         return NULL;
 
-    path = PyUnicode_AsWideCharString((PyUnicodeObject*)unicode, NULL);
+    path = PyUnicode_AsWideCharString(unicode, NULL);
     if (path == NULL)
         return NULL;
     f = _wfopen(path, wmode);
@@ -2001,7 +2001,7 @@
     int err;
     struct _stat wstatbuf;
 
-    path = PyUnicode_AsWideCharString((PyUnicodeObject*)unicode, NULL);
+    path = PyUnicode_AsWideCharString(unicode, NULL);
     if (path == NULL)
         return -1;
     err = _wstat(path, &wstatbuf);
@@ -3736,7 +3736,7 @@
         return -1;
     }
 
-    path = PyUnicode_AsWideCharString((PyUnicodeObject*)pathobj, NULL);
+    path = PyUnicode_AsWideCharString(pathobj, NULL);
     if (path == NULL)
         return -1;
     /* see issue1293 and issue3677: