mirror of
https://github.com/python/cpython.git
synced 2026-02-28 10:00:52 +00:00
bpo-23867: Argument Clinic: inline parsing code for a single positional parameter. (GH-9689)
This commit is contained in:
parent
65ce60aef1
commit
32d96a2b5b
49 changed files with 1677 additions and 275 deletions
66
PC/clinic/msvcrtmodule.c.h
generated
66
PC/clinic/msvcrtmodule.c.h
generated
|
|
@ -158,7 +158,13 @@ msvcrt_get_osfhandle(PyObject *module, PyObject *arg)
|
|||
int fd;
|
||||
void *_return_value;
|
||||
|
||||
if (!PyArg_Parse(arg, "i:get_osfhandle", &fd)) {
|
||||
if (PyFloat_Check(arg)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"integer argument expected, got float" );
|
||||
goto exit;
|
||||
}
|
||||
fd = _PyLong_AsInt(arg);
|
||||
if (fd == -1 && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
_return_value = msvcrt_get_osfhandle_impl(module, fd);
|
||||
|
|
@ -319,7 +325,14 @@ msvcrt_putch(PyObject *module, PyObject *arg)
|
|||
PyObject *return_value = NULL;
|
||||
char char_value;
|
||||
|
||||
if (!PyArg_Parse(arg, "c:putch", &char_value)) {
|
||||
if (PyBytes_Check(arg) && PyBytes_GET_SIZE(arg) == 1) {
|
||||
char_value = PyBytes_AS_STRING(arg)[0];
|
||||
}
|
||||
else if (PyByteArray_Check(arg) && PyByteArray_GET_SIZE(arg) == 1) {
|
||||
char_value = PyByteArray_AS_STRING(arg)[0];
|
||||
}
|
||||
else {
|
||||
_PyArg_BadArgument("putch", "a byte string of length 1", arg);
|
||||
goto exit;
|
||||
}
|
||||
return_value = msvcrt_putch_impl(module, char_value);
|
||||
|
|
@ -346,9 +359,18 @@ msvcrt_putwch(PyObject *module, PyObject *arg)
|
|||
PyObject *return_value = NULL;
|
||||
int unicode_char;
|
||||
|
||||
if (!PyArg_Parse(arg, "C:putwch", &unicode_char)) {
|
||||
if (!PyUnicode_Check(arg)) {
|
||||
_PyArg_BadArgument("putwch", "a unicode character", arg);
|
||||
goto exit;
|
||||
}
|
||||
if (PyUnicode_READY(arg)) {
|
||||
goto exit;
|
||||
}
|
||||
if (PyUnicode_GET_LENGTH(arg) != 1) {
|
||||
_PyArg_BadArgument("putwch", "a unicode character", arg);
|
||||
goto exit;
|
||||
}
|
||||
unicode_char = PyUnicode_READ_CHAR(arg, 0);
|
||||
return_value = msvcrt_putwch_impl(module, unicode_char);
|
||||
|
||||
exit:
|
||||
|
|
@ -377,7 +399,14 @@ msvcrt_ungetch(PyObject *module, PyObject *arg)
|
|||
PyObject *return_value = NULL;
|
||||
char char_value;
|
||||
|
||||
if (!PyArg_Parse(arg, "c:ungetch", &char_value)) {
|
||||
if (PyBytes_Check(arg) && PyBytes_GET_SIZE(arg) == 1) {
|
||||
char_value = PyBytes_AS_STRING(arg)[0];
|
||||
}
|
||||
else if (PyByteArray_Check(arg) && PyByteArray_GET_SIZE(arg) == 1) {
|
||||
char_value = PyByteArray_AS_STRING(arg)[0];
|
||||
}
|
||||
else {
|
||||
_PyArg_BadArgument("ungetch", "a byte string of length 1", arg);
|
||||
goto exit;
|
||||
}
|
||||
return_value = msvcrt_ungetch_impl(module, char_value);
|
||||
|
|
@ -404,9 +433,18 @@ msvcrt_ungetwch(PyObject *module, PyObject *arg)
|
|||
PyObject *return_value = NULL;
|
||||
int unicode_char;
|
||||
|
||||
if (!PyArg_Parse(arg, "C:ungetwch", &unicode_char)) {
|
||||
if (!PyUnicode_Check(arg)) {
|
||||
_PyArg_BadArgument("ungetwch", "a unicode character", arg);
|
||||
goto exit;
|
||||
}
|
||||
if (PyUnicode_READY(arg)) {
|
||||
goto exit;
|
||||
}
|
||||
if (PyUnicode_GET_LENGTH(arg) != 1) {
|
||||
_PyArg_BadArgument("ungetwch", "a unicode character", arg);
|
||||
goto exit;
|
||||
}
|
||||
unicode_char = PyUnicode_READ_CHAR(arg, 0);
|
||||
return_value = msvcrt_ungetwch_impl(module, unicode_char);
|
||||
|
||||
exit:
|
||||
|
|
@ -516,7 +554,13 @@ msvcrt_set_error_mode(PyObject *module, PyObject *arg)
|
|||
int mode;
|
||||
long _return_value;
|
||||
|
||||
if (!PyArg_Parse(arg, "i:set_error_mode", &mode)) {
|
||||
if (PyFloat_Check(arg)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"integer argument expected, got float" );
|
||||
goto exit;
|
||||
}
|
||||
mode = _PyLong_AsInt(arg);
|
||||
if (mode == -1 && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
_return_value = msvcrt_set_error_mode_impl(module, mode);
|
||||
|
|
@ -549,7 +593,13 @@ msvcrt_SetErrorMode(PyObject *module, PyObject *arg)
|
|||
PyObject *return_value = NULL;
|
||||
unsigned int mode;
|
||||
|
||||
if (!PyArg_Parse(arg, "I:SetErrorMode", &mode)) {
|
||||
if (PyFloat_Check(arg)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"integer argument expected, got float" );
|
||||
goto exit;
|
||||
}
|
||||
mode = (unsigned int)PyLong_AsUnsignedLongMask(arg);
|
||||
if (mode == (unsigned int)-1 && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
return_value = msvcrt_SetErrorMode_impl(module, mode);
|
||||
|
|
@ -569,4 +619,4 @@ exit:
|
|||
#ifndef MSVCRT_SET_ERROR_MODE_METHODDEF
|
||||
#define MSVCRT_SET_ERROR_MODE_METHODDEF
|
||||
#endif /* !defined(MSVCRT_SET_ERROR_MODE_METHODDEF) */
|
||||
/*[clinic end generated code: output=632089ff9236ac77 input=a9049054013a1b77]*/
|
||||
/*[clinic end generated code: output=2530b4ff248563b4 input=a9049054013a1b77]*/
|
||||
|
|
|
|||
12
PC/clinic/winreg.c.h
generated
12
PC/clinic/winreg.c.h
generated
|
|
@ -541,7 +541,7 @@ winreg_FlushKey(PyObject *module, PyObject *arg)
|
|||
PyObject *return_value = NULL;
|
||||
HKEY key;
|
||||
|
||||
if (!PyArg_Parse(arg, "O&:FlushKey", clinic_HKEY_converter, &key)) {
|
||||
if (!clinic_HKEY_converter(arg, &key)) {
|
||||
goto exit;
|
||||
}
|
||||
return_value = winreg_FlushKey_impl(module, key);
|
||||
|
|
@ -734,7 +734,7 @@ winreg_QueryInfoKey(PyObject *module, PyObject *arg)
|
|||
PyObject *return_value = NULL;
|
||||
HKEY key;
|
||||
|
||||
if (!PyArg_Parse(arg, "O&:QueryInfoKey", clinic_HKEY_converter, &key)) {
|
||||
if (!clinic_HKEY_converter(arg, &key)) {
|
||||
goto exit;
|
||||
}
|
||||
return_value = winreg_QueryInfoKey_impl(module, key);
|
||||
|
|
@ -1021,7 +1021,7 @@ winreg_DisableReflectionKey(PyObject *module, PyObject *arg)
|
|||
PyObject *return_value = NULL;
|
||||
HKEY key;
|
||||
|
||||
if (!PyArg_Parse(arg, "O&:DisableReflectionKey", clinic_HKEY_converter, &key)) {
|
||||
if (!clinic_HKEY_converter(arg, &key)) {
|
||||
goto exit;
|
||||
}
|
||||
return_value = winreg_DisableReflectionKey_impl(module, key);
|
||||
|
|
@ -1055,7 +1055,7 @@ winreg_EnableReflectionKey(PyObject *module, PyObject *arg)
|
|||
PyObject *return_value = NULL;
|
||||
HKEY key;
|
||||
|
||||
if (!PyArg_Parse(arg, "O&:EnableReflectionKey", clinic_HKEY_converter, &key)) {
|
||||
if (!clinic_HKEY_converter(arg, &key)) {
|
||||
goto exit;
|
||||
}
|
||||
return_value = winreg_EnableReflectionKey_impl(module, key);
|
||||
|
|
@ -1087,7 +1087,7 @@ winreg_QueryReflectionKey(PyObject *module, PyObject *arg)
|
|||
PyObject *return_value = NULL;
|
||||
HKEY key;
|
||||
|
||||
if (!PyArg_Parse(arg, "O&:QueryReflectionKey", clinic_HKEY_converter, &key)) {
|
||||
if (!clinic_HKEY_converter(arg, &key)) {
|
||||
goto exit;
|
||||
}
|
||||
return_value = winreg_QueryReflectionKey_impl(module, key);
|
||||
|
|
@ -1095,4 +1095,4 @@ winreg_QueryReflectionKey(PyObject *module, PyObject *arg)
|
|||
exit:
|
||||
return return_value;
|
||||
}
|
||||
/*[clinic end generated code: output=ff2cc1951ab1a56c input=a9049054013a1b77]*/
|
||||
/*[clinic end generated code: output=82bd56c524c6c3dd input=a9049054013a1b77]*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue