python (3.12.0)

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