gh-104469 : Convert _testcapi/vectorcall_limited.c to use AC (gh-107857)

This commit is contained in:
nahyeon 2023-08-12 09:57:35 +09:00 committed by GitHub
parent d93b4ac2ff
commit 2e27da1895
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 68 additions and 4 deletions

View File

@ -0,0 +1,42 @@
/*[clinic input]
preserve
[clinic start generated code]*/
#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
# include "pycore_gc.h" // PyGC_Head
# include "pycore_runtime.h" // _Py_ID()
#endif
#if defined(LIMITED_API_AVAILABLE)
PyDoc_STRVAR(_testcapi_call_vectorcall__doc__,
"call_vectorcall($module, callable, /)\n"
"--\n"
"\n");
#define _TESTCAPI_CALL_VECTORCALL_METHODDEF \
{"call_vectorcall", (PyCFunction)_testcapi_call_vectorcall, METH_O, _testcapi_call_vectorcall__doc__},
#endif /* defined(LIMITED_API_AVAILABLE) */
#if defined(LIMITED_API_AVAILABLE)
PyDoc_STRVAR(_testcapi_call_vectorcall_method__doc__,
"call_vectorcall_method($module, callable, /)\n"
"--\n"
"\n");
#define _TESTCAPI_CALL_VECTORCALL_METHOD_METHODDEF \
{"call_vectorcall_method", (PyCFunction)_testcapi_call_vectorcall_method, METH_O, _testcapi_call_vectorcall_method__doc__},
#endif /* defined(LIMITED_API_AVAILABLE) */
#ifndef _TESTCAPI_CALL_VECTORCALL_METHODDEF
#define _TESTCAPI_CALL_VECTORCALL_METHODDEF
#endif /* !defined(_TESTCAPI_CALL_VECTORCALL_METHODDEF) */
#ifndef _TESTCAPI_CALL_VECTORCALL_METHOD_METHODDEF
#define _TESTCAPI_CALL_VECTORCALL_METHOD_METHODDEF
#endif /* !defined(_TESTCAPI_CALL_VECTORCALL_METHOD_METHODDEF) */
/*[clinic end generated code: output=409028b637aba77b input=a9049054013a1b77]*/

View File

@ -1,5 +1,6 @@
#define Py_LIMITED_API 0x030c0000 // 3.12
#include "parts.h"
#include "clinic/vectorcall_limited.c.h"
#ifdef LIMITED_API_AVAILABLE
@ -7,6 +8,11 @@
/* Test Vectorcall in the limited API */
/*[clinic input]
module _testcapi
[clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=6361033e795369fc]*/
static PyObject *
LimitedVectorCallClass_tpcall(PyObject *self, PyObject *args, PyObject *kwargs) {
return PyUnicode_FromString("tp_call called");
@ -32,8 +38,16 @@ LimitedVectorCallClass_new(PyTypeObject *tp, PyTypeObject *a, PyTypeObject *kw)
return self;
}
/*[clinic input]
_testcapi.call_vectorcall
callable: object
/
[clinic start generated code]*/
static PyObject *
call_vectorcall(PyObject* self, PyObject *callable)
_testcapi_call_vectorcall(PyObject *module, PyObject *callable)
/*[clinic end generated code: output=bae81eec97fcaad7 input=55d88f92240957ee]*/
{
PyObject *args[3] = { NULL, NULL, NULL };
PyObject *kwname = NULL, *kwnames = NULL, *result = NULL;
@ -77,8 +91,16 @@ leave:
return result;
}
/*[clinic input]
_testcapi.call_vectorcall_method
callable: object
/
[clinic start generated code]*/
static PyObject *
call_vectorcall_method(PyObject* self, PyObject *callable)
_testcapi_call_vectorcall_method(PyObject *module, PyObject *callable)
/*[clinic end generated code: output=e661f48dda08b6fb input=5ba81c27511395b6]*/
{
PyObject *args[3] = { NULL, NULL, NULL };
PyObject *name = NULL, *kwname = NULL,
@ -153,8 +175,8 @@ static PyType_Spec LimitedVectorCallClass_spec = {
};
static PyMethodDef TestMethods[] = {
{"call_vectorcall", call_vectorcall, METH_O},
{"call_vectorcall_method", call_vectorcall_method, METH_O},
_TESTCAPI_CALL_VECTORCALL_METHODDEF
_TESTCAPI_CALL_VECTORCALL_METHOD_METHODDEF
{NULL},
};