Procházet zdrojové kódy

py_compat: Add vectorcall functions

rdb před 3 týdny
rodič
revize
b630e14dc4
1 změnil soubory, kde provedl 12 přidání a 0 odebrání
  1. 12 0
      dtool/src/interrogatedb/py_compat.h

+ 12 - 0
dtool/src/interrogatedb/py_compat.h

@@ -219,6 +219,14 @@ INLINE PyObject *_PyLong_Lshift(PyObject *a, size_t shiftby) {
 }
 #endif
 
+#ifndef PY_VECTORCALL_ARGUMENTS_OFFSET
+#  define PY_VECTORCALL_ARGUMENTS_OFFSET (((size_t)1) << (8 * sizeof(size_t) - 1))
+#endif
+
+#if PY_VERSION_HEX < 0x030800B1
+#  define PyVectorcall_NARGS(n) ((n) & ~PY_VECTORCALL_ARGUMENTS_OFFSET)
+#endif
+
 /* Python 3.9 */
 
 #if PY_VERSION_HEX < 0x030900A4 && !defined(Py_IS_TYPE)
@@ -229,6 +237,10 @@ INLINE PyObject *_PyLong_Lshift(PyObject *a, size_t shiftby) {
 #  define PyCFunction_CheckExact(op) (Py_IS_TYPE(op, &PyCFunction_Type))
 #endif
 
+#if PY_VERSION_HEX < 0x030900A4
+#  define PyObject_Vectorcall(callable, args, nargsf, kwnames) (_PyObject_Vectorcall((callable), (args), (nargsf), (kwnames)))
+#endif
+
 #if PY_VERSION_HEX < 0x03090000
 INLINE PyObject *PyObject_CallNoArgs(PyObject *func) {
 #if PY_VERSION_HEX >= 0x03080000