Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:06:49

0001 
0002 #ifndef Py_MODSUPPORT_H
0003 #define Py_MODSUPPORT_H
0004 #ifdef __cplusplus
0005 extern "C" {
0006 #endif
0007 
0008 /* Module support interface */
0009 
0010 #include <stdarg.h>               // va_list
0011 
0012 /* If PY_SSIZE_T_CLEAN is defined, each functions treats #-specifier
0013    to mean Py_ssize_t */
0014 #ifdef PY_SSIZE_T_CLEAN
0015 #define PyArg_Parse                     _PyArg_Parse_SizeT
0016 #define PyArg_ParseTuple                _PyArg_ParseTuple_SizeT
0017 #define PyArg_ParseTupleAndKeywords     _PyArg_ParseTupleAndKeywords_SizeT
0018 #define PyArg_VaParse                   _PyArg_VaParse_SizeT
0019 #define PyArg_VaParseTupleAndKeywords   _PyArg_VaParseTupleAndKeywords_SizeT
0020 #define Py_BuildValue                   _Py_BuildValue_SizeT
0021 #define Py_VaBuildValue                 _Py_VaBuildValue_SizeT
0022 #endif
0023 
0024 /* Due to a glitch in 3.2, the _SizeT versions weren't exported from the DLL. */
0025 #if !defined(PY_SSIZE_T_CLEAN) || !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
0026 PyAPI_FUNC(int) PyArg_Parse(PyObject *, const char *, ...);
0027 PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...);
0028 PyAPI_FUNC(int) PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
0029                                                   const char *, char **, ...);
0030 PyAPI_FUNC(int) PyArg_VaParse(PyObject *, const char *, va_list);
0031 PyAPI_FUNC(int) PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
0032                                                   const char *, char **, va_list);
0033 #endif
0034 PyAPI_FUNC(int) PyArg_ValidateKeywordArguments(PyObject *);
0035 PyAPI_FUNC(int) PyArg_UnpackTuple(PyObject *, const char *, Py_ssize_t, Py_ssize_t, ...);
0036 PyAPI_FUNC(PyObject *) Py_BuildValue(const char *, ...);
0037 PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...);
0038 
0039 
0040 PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list);
0041 
0042 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030a0000
0043 // Add an attribute with name 'name' and value 'obj' to the module 'mod.
0044 // On success, return 0 on success.
0045 // On error, raise an exception and return -1.
0046 PyAPI_FUNC(int) PyModule_AddObjectRef(PyObject *mod, const char *name, PyObject *value);
0047 #endif   /* Py_LIMITED_API */
0048 
0049 // Similar to PyModule_AddObjectRef() but steal a reference to 'obj'
0050 // (Py_DECREF(obj)) on success (if it returns 0).
0051 PyAPI_FUNC(int) PyModule_AddObject(PyObject *mod, const char *, PyObject *value);
0052 
0053 PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long);
0054 PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *);
0055 
0056 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03090000
0057 /* New in 3.9 */
0058 PyAPI_FUNC(int) PyModule_AddType(PyObject *module, PyTypeObject *type);
0059 #endif /* Py_LIMITED_API */
0060 
0061 #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant((m), #c, (c))
0062 #define PyModule_AddStringMacro(m, c) PyModule_AddStringConstant((m), #c, (c))
0063 
0064 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
0065 /* New in 3.5 */
0066 PyAPI_FUNC(int) PyModule_SetDocString(PyObject *, const char *);
0067 PyAPI_FUNC(int) PyModule_AddFunctions(PyObject *, PyMethodDef *);
0068 PyAPI_FUNC(int) PyModule_ExecDef(PyObject *module, PyModuleDef *def);
0069 #endif
0070 
0071 #define Py_CLEANUP_SUPPORTED 0x20000
0072 
0073 #define PYTHON_API_VERSION 1013
0074 #define PYTHON_API_STRING "1013"
0075 /* The API version is maintained (independently from the Python version)
0076    so we can detect mismatches between the interpreter and dynamically
0077    loaded modules.  These are diagnosed by an error message but
0078    the module is still loaded (because the mismatch can only be tested
0079    after loading the module).  The error message is intended to
0080    explain the core dump a few seconds later.
0081 
0082    The symbol PYTHON_API_STRING defines the same value as a string
0083    literal.  *** PLEASE MAKE SURE THE DEFINITIONS MATCH. ***
0084 
0085    Please add a line or two to the top of this log for each API
0086    version change:
0087 
0088    22-Feb-2006  MvL     1013    PEP 353 - long indices for sequence lengths
0089 
0090    19-Aug-2002  GvR     1012    Changes to string object struct for
0091                                 interning changes, saving 3 bytes.
0092 
0093    17-Jul-2001  GvR     1011    Descr-branch, just to be on the safe side
0094 
0095    25-Jan-2001  FLD     1010    Parameters added to PyCode_New() and
0096                                 PyFrame_New(); Python 2.1a2
0097 
0098    14-Mar-2000  GvR     1009    Unicode API added
0099 
0100    3-Jan-1999   GvR     1007    Decided to change back!  (Don't reuse 1008!)
0101 
0102    3-Dec-1998   GvR     1008    Python 1.5.2b1
0103 
0104    18-Jan-1997  GvR     1007    string interning and other speedups
0105 
0106    11-Oct-1996  GvR     renamed Py_Ellipses to Py_Ellipsis :-(
0107 
0108    30-Jul-1996  GvR     Slice and ellipses syntax added
0109 
0110    23-Jul-1996  GvR     For 1.4 -- better safe than sorry this time :-)
0111 
0112    7-Nov-1995   GvR     Keyword arguments (should've been done at 1.3 :-( )
0113 
0114    10-Jan-1995  GvR     Renamed globals to new naming scheme
0115 
0116    9-Jan-1995   GvR     Initial version (incompatible with older API)
0117 */
0118 
0119 /* The PYTHON_ABI_VERSION is introduced in PEP 384. For the lifetime of
0120    Python 3, it will stay at the value of 3; changes to the limited API
0121    must be performed in a strictly backwards-compatible manner. */
0122 #define PYTHON_ABI_VERSION 3
0123 #define PYTHON_ABI_STRING "3"
0124 
0125 #ifdef Py_TRACE_REFS
0126  /* When we are tracing reference counts, rename module creation functions so
0127     modules compiled with incompatible settings will generate a
0128     link-time error. */
0129  #define PyModule_Create2 PyModule_Create2TraceRefs
0130  #define PyModule_FromDefAndSpec2 PyModule_FromDefAndSpec2TraceRefs
0131 #endif
0132 
0133 PyAPI_FUNC(PyObject *) PyModule_Create2(PyModuleDef*, int apiver);
0134 
0135 #ifdef Py_LIMITED_API
0136 #define PyModule_Create(module) \
0137         PyModule_Create2((module), PYTHON_ABI_VERSION)
0138 #else
0139 #define PyModule_Create(module) \
0140         PyModule_Create2((module), PYTHON_API_VERSION)
0141 #endif
0142 
0143 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
0144 /* New in 3.5 */
0145 PyAPI_FUNC(PyObject *) PyModule_FromDefAndSpec2(PyModuleDef *def,
0146                                                 PyObject *spec,
0147                                                 int module_api_version);
0148 
0149 #ifdef Py_LIMITED_API
0150 #define PyModule_FromDefAndSpec(module, spec) \
0151     PyModule_FromDefAndSpec2((module), (spec), PYTHON_ABI_VERSION)
0152 #else
0153 #define PyModule_FromDefAndSpec(module, spec) \
0154     PyModule_FromDefAndSpec2((module), (spec), PYTHON_API_VERSION)
0155 #endif /* Py_LIMITED_API */
0156 
0157 #endif /* New in 3.5 */
0158 
0159 #ifndef Py_LIMITED_API
0160 #  define Py_CPYTHON_MODSUPPORT_H
0161 #  include "cpython/modsupport.h"
0162 #  undef Py_CPYTHON_MODSUPPORT_H
0163 #endif
0164 
0165 #ifdef __cplusplus
0166 }
0167 #endif
0168 #endif /* !Py_MODSUPPORT_H */