| #include "parts.h" |
| |
| |
| |
| static PyObject * |
| pyabiinfo_check(PyObject *Py_UNUSED(module), PyObject *args) |
| { |
| const char *modname; |
| unsigned long maj, min, flags, buildver, abiver; |
| |
| if (!PyArg_ParseTuple(args, "zkkkkk", |
| &modname, &maj, &min, &flags, &buildver, &abiver)) |
| { |
| return NULL; |
| } |
| PyABIInfo info = { |
| .abiinfo_major_version = (uint8_t)maj, |
| .abiinfo_minor_version = (uint8_t)min, |
| .flags = (uint16_t)flags, |
| .build_version = (uint32_t)buildver, |
| .abi_version = (uint32_t)abiver}; |
| if (PyABIInfo_Check(&info, modname) < 0) { |
| return NULL; |
| } |
| Py_RETURN_NONE; |
| } |
| |
| static PyObject * |
| pyarg_parsearray(PyObject* self, PyObject* const* args, Py_ssize_t nargs) |
| { |
| int a, b, c = 0; |
| if (!PyArg_ParseArray(args, nargs, "ii|i", &a, &b, &c)) { |
| return NULL; |
| } |
| return Py_BuildValue("iii", a, b, c); |
| } |
| |
| static PyObject * |
| pyarg_parsearrayandkeywords(PyObject* self, PyObject* const* args, |
| Py_ssize_t nargs, PyObject* kwnames) |
| { |
| int a, b, c = 0; |
| const char *kwlist[] = {"a", "b", "c", NULL}; |
| if (!PyArg_ParseArrayAndKeywords(args, nargs, kwnames, |
| "ii|i", kwlist, |
| &a, &b, &c)) { |
| return NULL; |
| } |
| return Py_BuildValue("iii", a, b, c); |
| } |
| |
| static PyMethodDef TestMethods[] = { |
| {"pyabiinfo_check", pyabiinfo_check, METH_VARARGS}, |
| {"pyarg_parsearray", _PyCFunction_CAST(pyarg_parsearray), METH_FASTCALL}, |
| {"pyarg_parsearrayandkeywords", |
| _PyCFunction_CAST(pyarg_parsearrayandkeywords), |
| METH_FASTCALL | METH_KEYWORDS}, |
| {NULL}, |
| }; |
| |
| int |
| _PyTestCapi_Init_Modsupport(PyObject *m) |
| { |
| if (PyModule_AddIntMacro(m, PyABIInfo_STABLE) < 0) { |
| return -1; |
| } |
| if (PyModule_AddIntMacro(m, PyABIInfo_INTERNAL) < 0) { |
| return -1; |
| } |
| if (PyModule_AddIntMacro(m, PyABIInfo_GIL) < 0) { |
| return -1; |
| } |
| if (PyModule_AddIntMacro(m, PyABIInfo_FREETHREADED) < 0) { |
| return -1; |
| } |
| if (PyModule_AddIntMacro(m, PyABIInfo_FREETHREADING_AGNOSTIC) < 0) { |
| return -1; |
| } |
| if (PyModule_AddFunctions(m, TestMethods) < 0) { |
| return -1; |
| } |
| return 0; |
| } |