| /* Test version macros in the limited API */ | |
| #include "pyconfig.h" // Py_GIL_DISABLED | |
| #ifdef Py_GIL_DISABLED | |
| # define Py_TARGET_ABI3T 0x030f0000 | |
| #else | |
| // Need limited C API version 3.14 for Py_PACK_VERSION() | |
| # define Py_LIMITED_API 0x030e0000 | |
| #endif | |
| #include "parts.h" | |
| #include "clinic/version.c.h" | |
| #include <stdio.h> | |
| /*[clinic input] | |
| module _testlimitedcapi | |
| [clinic start generated code]*/ | |
| /*[clinic end generated code: output=da39a3ee5e6b4b0d input=2700057f9c1135ba]*/ | |
| /*[clinic input] | |
| _testlimitedcapi.pack_full_version | |
| major: int | |
| minor: int | |
| micro: int | |
| level: int | |
| serial: int | |
| / | |
| [clinic start generated code]*/ | |
| static PyObject * | |
| _testlimitedcapi_pack_full_version_impl(PyObject *module, int major, | |
| int minor, int micro, int level, | |
| int serial) | |
| /*[clinic end generated code: output=b87a1e9805648861 input=2a304423be61d2ac]*/ | |
| { | |
| uint32_t macro_result = Py_PACK_FULL_VERSION( | |
| major, minor, micro, level, serial); | |
| #undef Py_PACK_FULL_VERSION | |
| uint32_t func_result = Py_PACK_FULL_VERSION( | |
| major, minor, micro, level, serial); | |
| assert(macro_result == func_result); | |
| return PyLong_FromUnsignedLong((unsigned long)func_result); | |
| } | |
| /*[clinic input] | |
| _testlimitedcapi.pack_version | |
| major: int | |
| minor: int | |
| / | |
| [clinic start generated code]*/ | |
| static PyObject * | |
| _testlimitedcapi_pack_version_impl(PyObject *module, int major, int minor) | |
| /*[clinic end generated code: output=771247bbd06e7883 input=3e39e9dcbc09e86a]*/ | |
| { | |
| uint32_t macro_result = Py_PACK_VERSION(major, minor); | |
| #undef Py_PACK_VERSION | |
| uint32_t func_result = Py_PACK_VERSION(major, minor); | |
| assert(macro_result == func_result); | |
| return PyLong_FromUnsignedLong((unsigned long)func_result); | |
| } | |
| static PyMethodDef TestMethods[] = { | |
| _TESTLIMITEDCAPI_PACK_FULL_VERSION_METHODDEF | |
| _TESTLIMITEDCAPI_PACK_VERSION_METHODDEF | |
| {NULL}, | |
| }; | |
| int | |
| _PyTestLimitedCAPI_Init_Version(PyObject *m) | |
| { | |
| if (PyModule_AddFunctions(m, TestMethods) < 0) { | |
| return -1; | |
| } | |
| return 0; | |
| } |