Commit ca829102 authored by Yury Selivanov's avatar Yury Selivanov

Issue 24365: Conditionalize PEP 489 additions to the stable ABI

Patch by Petr Viktorin.
parent 72ea27c8
...@@ -49,9 +49,13 @@ PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long); ...@@ -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*, ...@@ -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, ...@@ -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 *); ...@@ -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,30 +50,35 @@ typedef struct PyModuleDef_Base { ...@@ -47,30 +50,35 @@ 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;
#define Py_mod_create 1
#define Py_mod_exec 2
#ifndef Py_LIMITED_API
#define _Py_mod_LAST_SLOT 2
#endif
#endif /* New in 3.5 */
typedef struct PyModuleDef{ typedef struct PyModuleDef{
PyModuleDef_Base m_base; PyModuleDef_Base m_base;
const char* m_name; const char* m_name;
const char* m_doc; const char* m_doc;
Py_ssize_t m_size; Py_ssize_t m_size;
PyMethodDef *m_methods; PyMethodDef *m_methods;
PyModuleDef_Slot* m_slots; struct PyModuleDef_Slot* m_slots;
traverseproc m_traverse; traverseproc m_traverse;
inquiry m_clear; inquiry m_clear;
freefunc m_free; freefunc m_free;
}PyModuleDef; }PyModuleDef;
#define Py_mod_create 1
#define Py_mod_exec 2
#ifndef Py_LIMITED_API
#define _Py_mod_LAST_SLOT 2
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
......
...@@ -79,4 +79,7 @@ ...@@ -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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment