(root)/
Python-3.11.7/
Include/
modsupport.h
       1  
       2  #ifndef Py_MODSUPPORT_H
       3  #define Py_MODSUPPORT_H
       4  #ifdef __cplusplus
       5  extern "C" {
       6  #endif
       7  
       8  /* Module support interface */
       9  
      10  #include <stdarg.h>               // va_list
      11  
      12  /* If PY_SSIZE_T_CLEAN is defined, each functions treats #-specifier
      13     to mean Py_ssize_t */
      14  #ifdef PY_SSIZE_T_CLEAN
      15  #define PyArg_Parse                     _PyArg_Parse_SizeT
      16  #define PyArg_ParseTuple                _PyArg_ParseTuple_SizeT
      17  #define PyArg_ParseTupleAndKeywords     _PyArg_ParseTupleAndKeywords_SizeT
      18  #define PyArg_VaParse                   _PyArg_VaParse_SizeT
      19  #define PyArg_VaParseTupleAndKeywords   _PyArg_VaParseTupleAndKeywords_SizeT
      20  #define Py_BuildValue                   _Py_BuildValue_SizeT
      21  #define Py_VaBuildValue                 _Py_VaBuildValue_SizeT
      22  #endif
      23  
      24  /* Due to a glitch in 3.2, the _SizeT versions weren't exported from the DLL. */
      25  #if !defined(PY_SSIZE_T_CLEAN) || !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
      26  PyAPI_FUNC(int) PyArg_Parse(PyObject *, const char *, ...);
      27  PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...);
      28  PyAPI_FUNC(int) PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
      29                                                    const char *, char **, ...);
      30  PyAPI_FUNC(int) PyArg_VaParse(PyObject *, const char *, va_list);
      31  PyAPI_FUNC(int) PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
      32                                                    const char *, char **, va_list);
      33  #endif
      34  PyAPI_FUNC(int) PyArg_ValidateKeywordArguments(PyObject *);
      35  PyAPI_FUNC(int) PyArg_UnpackTuple(PyObject *, const char *, Py_ssize_t, Py_ssize_t, ...);
      36  PyAPI_FUNC(PyObject *) Py_BuildValue(const char *, ...);
      37  PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...);
      38  
      39  
      40  #define ANY_VARARGS(n) (n == PY_SSIZE_T_MAX)
      41  
      42  PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list);
      43  
      44  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030a0000
      45  // Add an attribute with name 'name' and value 'obj' to the module 'mod.
      46  // On success, return 0 on success.
      47  // On error, raise an exception and return -1.
      48  PyAPI_FUNC(int) PyModule_AddObjectRef(PyObject *mod, const char *name, PyObject *value);
      49  #endif   /* Py_LIMITED_API */
      50  
      51  // Similar to PyModule_AddObjectRef() but steal a reference to 'obj'
      52  // (Py_DECREF(obj)) on success (if it returns 0).
      53  PyAPI_FUNC(int) PyModule_AddObject(PyObject *mod, const char *, PyObject *value);
      54  
      55  PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long);
      56  PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *);
      57  
      58  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03090000
      59  /* New in 3.9 */
      60  PyAPI_FUNC(int) PyModule_AddType(PyObject *module, PyTypeObject *type);
      61  #endif /* Py_LIMITED_API */
      62  
      63  #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
      64  #define PyModule_AddStringMacro(m, c) PyModule_AddStringConstant(m, #c, c)
      65  
      66  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
      67  /* New in 3.5 */
      68  PyAPI_FUNC(int) PyModule_SetDocString(PyObject *, const char *);
      69  PyAPI_FUNC(int) PyModule_AddFunctions(PyObject *, PyMethodDef *);
      70  PyAPI_FUNC(int) PyModule_ExecDef(PyObject *module, PyModuleDef *def);
      71  #endif
      72  
      73  #define Py_CLEANUP_SUPPORTED 0x20000
      74  
      75  #define PYTHON_API_VERSION 1013
      76  #define PYTHON_API_STRING "1013"
      77  /* The API version is maintained (independently from the Python version)
      78     so we can detect mismatches between the interpreter and dynamically
      79     loaded modules.  These are diagnosed by an error message but
      80     the module is still loaded (because the mismatch can only be tested
      81     after loading the module).  The error message is intended to
      82     explain the core dump a few seconds later.
      83  
      84     The symbol PYTHON_API_STRING defines the same value as a string
      85     literal.  *** PLEASE MAKE SURE THE DEFINITIONS MATCH. ***
      86  
      87     Please add a line or two to the top of this log for each API
      88     version change:
      89  
      90     22-Feb-2006  MvL     1013    PEP 353 - long indices for sequence lengths
      91  
      92     19-Aug-2002  GvR     1012    Changes to string object struct for
      93                                  interning changes, saving 3 bytes.
      94  
      95     17-Jul-2001  GvR     1011    Descr-branch, just to be on the safe side
      96  
      97     25-Jan-2001  FLD     1010    Parameters added to PyCode_New() and
      98                                  PyFrame_New(); Python 2.1a2
      99  
     100     14-Mar-2000  GvR     1009    Unicode API added
     101  
     102     3-Jan-1999   GvR     1007    Decided to change back!  (Don't reuse 1008!)
     103  
     104     3-Dec-1998   GvR     1008    Python 1.5.2b1
     105  
     106     18-Jan-1997  GvR     1007    string interning and other speedups
     107  
     108     11-Oct-1996  GvR     renamed Py_Ellipses to Py_Ellipsis :-(
     109  
     110     30-Jul-1996  GvR     Slice and ellipses syntax added
     111  
     112     23-Jul-1996  GvR     For 1.4 -- better safe than sorry this time :-)
     113  
     114     7-Nov-1995   GvR     Keyword arguments (should've been done at 1.3 :-( )
     115  
     116     10-Jan-1995  GvR     Renamed globals to new naming scheme
     117  
     118     9-Jan-1995   GvR     Initial version (incompatible with older API)
     119  */
     120  
     121  /* The PYTHON_ABI_VERSION is introduced in PEP 384. For the lifetime of
     122     Python 3, it will stay at the value of 3; changes to the limited API
     123     must be performed in a strictly backwards-compatible manner. */
     124  #define PYTHON_ABI_VERSION 3
     125  #define PYTHON_ABI_STRING "3"
     126  
     127  #ifdef Py_TRACE_REFS
     128   /* When we are tracing reference counts, rename module creation functions so
     129      modules compiled with incompatible settings will generate a
     130      link-time error. */
     131   #define PyModule_Create2 PyModule_Create2TraceRefs
     132   #define PyModule_FromDefAndSpec2 PyModule_FromDefAndSpec2TraceRefs
     133  #endif
     134  
     135  PyAPI_FUNC(PyObject *) PyModule_Create2(PyModuleDef*, int apiver);
     136  
     137  #ifdef Py_LIMITED_API
     138  #define PyModule_Create(module) \
     139          PyModule_Create2(module, PYTHON_ABI_VERSION)
     140  #else
     141  #define PyModule_Create(module) \
     142          PyModule_Create2(module, PYTHON_API_VERSION)
     143  #endif
     144  
     145  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
     146  /* New in 3.5 */
     147  PyAPI_FUNC(PyObject *) PyModule_FromDefAndSpec2(PyModuleDef *def,
     148                                                  PyObject *spec,
     149                                                  int module_api_version);
     150  
     151  #ifdef Py_LIMITED_API
     152  #define PyModule_FromDefAndSpec(module, spec) \
     153      PyModule_FromDefAndSpec2(module, spec, PYTHON_ABI_VERSION)
     154  #else
     155  #define PyModule_FromDefAndSpec(module, spec) \
     156      PyModule_FromDefAndSpec2(module, spec, PYTHON_API_VERSION)
     157  #endif /* Py_LIMITED_API */
     158  
     159  #endif /* New in 3.5 */
     160  
     161  #ifndef Py_LIMITED_API
     162  #  define Py_CPYTHON_MODSUPPORT_H
     163  #  include "cpython/modsupport.h"
     164  #  undef Py_CPYTHON_MODSUPPORT_H
     165  #endif
     166  
     167  #ifdef __cplusplus
     168  }
     169  #endif
     170  #endif /* !Py_MODSUPPORT_H */