Issue 24365: Conditionalize PEP 489 additions to the stable ABI
Patch by Petr Viktorin.
This commit is contained in:
parent
72ea27c89b
commit
ca82910221
|
@ -49,9 +49,13 @@ PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long);
|
||||||
PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *);
|
PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *);
|
||||||
#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
|
#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
|
||||||
#define PyModule_AddStringMacro(m, c) PyModule_AddStringConstant(m, #c, c)
|
#define PyModule_AddStringMacro(m, c) PyModule_AddStringConstant(m, #c, c)
|
||||||
|
|
||||||
|
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
|
||||||
|
/* New in 3.5 */
|
||||||
PyAPI_FUNC(int) PyModule_SetDocString(PyObject *, const char *);
|
PyAPI_FUNC(int) PyModule_SetDocString(PyObject *, const char *);
|
||||||
PyAPI_FUNC(int) PyModule_AddFunctions(PyObject *, PyMethodDef *);
|
PyAPI_FUNC(int) PyModule_AddFunctions(PyObject *, PyMethodDef *);
|
||||||
PyAPI_FUNC(int) PyModule_ExecDef(PyObject *module, PyModuleDef *def);
|
PyAPI_FUNC(int) PyModule_ExecDef(PyObject *module, PyModuleDef *def);
|
||||||
|
#endif
|
||||||
|
|
||||||
#define Py_CLEANUP_SUPPORTED 0x20000
|
#define Py_CLEANUP_SUPPORTED 0x20000
|
||||||
|
|
||||||
|
@ -126,6 +130,8 @@ PyAPI_FUNC(PyObject *) PyModule_Create2(struct PyModuleDef*,
|
||||||
PyModule_Create2(module, PYTHON_API_VERSION)
|
PyModule_Create2(module, PYTHON_API_VERSION)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
|
||||||
|
/* New in 3.5 */
|
||||||
PyAPI_FUNC(PyObject *) PyModule_FromDefAndSpec2(PyModuleDef *def,
|
PyAPI_FUNC(PyObject *) PyModule_FromDefAndSpec2(PyModuleDef *def,
|
||||||
PyObject *spec,
|
PyObject *spec,
|
||||||
int module_api_version);
|
int module_api_version);
|
||||||
|
@ -136,7 +142,8 @@ PyAPI_FUNC(PyObject *) PyModule_FromDefAndSpec2(PyModuleDef *def,
|
||||||
#else
|
#else
|
||||||
#define PyModule_FromDefAndSpec(module, spec) \
|
#define PyModule_FromDefAndSpec(module, spec) \
|
||||||
PyModule_FromDefAndSpec2(module, spec, PYTHON_API_VERSION)
|
PyModule_FromDefAndSpec2(module, spec, PYTHON_API_VERSION)
|
||||||
#endif
|
#endif /* Py_LIMITED_API */
|
||||||
|
#endif /* New in 3.5 */
|
||||||
|
|
||||||
#ifndef Py_LIMITED_API
|
#ifndef Py_LIMITED_API
|
||||||
PyAPI_DATA(char *) _Py_PackageContext;
|
PyAPI_DATA(char *) _Py_PackageContext;
|
||||||
|
|
|
@ -30,8 +30,11 @@ PyAPI_FUNC(void) _PyModule_ClearDict(PyObject *);
|
||||||
PyAPI_FUNC(struct PyModuleDef*) PyModule_GetDef(PyObject*);
|
PyAPI_FUNC(struct PyModuleDef*) PyModule_GetDef(PyObject*);
|
||||||
PyAPI_FUNC(void*) PyModule_GetState(PyObject*);
|
PyAPI_FUNC(void*) PyModule_GetState(PyObject*);
|
||||||
|
|
||||||
|
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
|
||||||
|
/* New in 3.5 */
|
||||||
PyAPI_FUNC(PyObject *) PyModuleDef_Init(struct PyModuleDef*);
|
PyAPI_FUNC(PyObject *) PyModuleDef_Init(struct PyModuleDef*);
|
||||||
PyAPI_DATA(PyTypeObject) PyModuleDef_Type;
|
PyAPI_DATA(PyTypeObject) PyModuleDef_Type;
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct PyModuleDef_Base {
|
typedef struct PyModuleDef_Base {
|
||||||
PyObject_HEAD
|
PyObject_HEAD
|
||||||
|
@ -47,23 +50,14 @@ typedef struct PyModuleDef_Base {
|
||||||
NULL, /* m_copy */ \
|
NULL, /* m_copy */ \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct PyModuleDef_Slot;
|
||||||
|
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
|
||||||
|
/* New in 3.5 */
|
||||||
typedef struct PyModuleDef_Slot{
|
typedef struct PyModuleDef_Slot{
|
||||||
int slot;
|
int slot;
|
||||||
void *value;
|
void *value;
|
||||||
} PyModuleDef_Slot;
|
} PyModuleDef_Slot;
|
||||||
|
|
||||||
typedef struct PyModuleDef{
|
|
||||||
PyModuleDef_Base m_base;
|
|
||||||
const char* m_name;
|
|
||||||
const char* m_doc;
|
|
||||||
Py_ssize_t m_size;
|
|
||||||
PyMethodDef *m_methods;
|
|
||||||
PyModuleDef_Slot* m_slots;
|
|
||||||
traverseproc m_traverse;
|
|
||||||
inquiry m_clear;
|
|
||||||
freefunc m_free;
|
|
||||||
}PyModuleDef;
|
|
||||||
|
|
||||||
#define Py_mod_create 1
|
#define Py_mod_create 1
|
||||||
#define Py_mod_exec 2
|
#define Py_mod_exec 2
|
||||||
|
|
||||||
|
@ -71,6 +65,20 @@ typedef struct PyModuleDef{
|
||||||
#define _Py_mod_LAST_SLOT 2
|
#define _Py_mod_LAST_SLOT 2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif /* New in 3.5 */
|
||||||
|
|
||||||
|
typedef struct PyModuleDef{
|
||||||
|
PyModuleDef_Base m_base;
|
||||||
|
const char* m_name;
|
||||||
|
const char* m_doc;
|
||||||
|
Py_ssize_t m_size;
|
||||||
|
PyMethodDef *m_methods;
|
||||||
|
struct PyModuleDef_Slot* m_slots;
|
||||||
|
traverseproc m_traverse;
|
||||||
|
inquiry m_clear;
|
||||||
|
freefunc m_free;
|
||||||
|
}PyModuleDef;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -79,4 +79,7 @@
|
||||||
#define Py_am_await 77
|
#define Py_am_await 77
|
||||||
#define Py_am_aiter 78
|
#define Py_am_aiter 78
|
||||||
#define Py_am_anext 79
|
#define Py_am_anext 79
|
||||||
|
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
|
||||||
|
/* New in 3.5 */
|
||||||
#define Py_tp_finalize 80
|
#define Py_tp_finalize 80
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue