]> granicus.if.org Git - python/commitdiff
Issue 24365: Conditionalize PEP 489 additions to the stable ABI
authorYury Selivanov <yselivanov@sprymix.com>
Tue, 2 Jun 2015 23:06:47 +0000 (19:06 -0400)
committerYury Selivanov <yselivanov@sprymix.com>
Tue, 2 Jun 2015 23:06:47 +0000 (19:06 -0400)
Patch by Petr Viktorin.

Include/modsupport.h
Include/moduleobject.h
Include/typeslots.h

index 21bffb579b1d3d7b751758a6d65162aaf8c1cff1..829aaf8596833b4d5f669c7cd4c6639edcebd27a 100644 (file)
@@ -49,9 +49,13 @@ PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long);
 PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *);
 #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(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_AddFunctions(PyObject *, PyMethodDef *);
 PyAPI_FUNC(int) PyModule_ExecDef(PyObject *module, PyModuleDef *def);
+#endif
 
 #define Py_CLEANUP_SUPPORTED 0x20000
 
@@ -126,6 +130,8 @@ PyAPI_FUNC(PyObject *) PyModule_Create2(struct PyModuleDef*,
         PyModule_Create2(module, PYTHON_API_VERSION)
 #endif
 
+#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
+/* New in 3.5 */
 PyAPI_FUNC(PyObject *) PyModule_FromDefAndSpec2(PyModuleDef *def,
                                                 PyObject *spec,
                                                 int module_api_version);
@@ -136,7 +142,8 @@ PyAPI_FUNC(PyObject *) PyModule_FromDefAndSpec2(PyModuleDef *def,
 #else
 #define PyModule_FromDefAndSpec(module, spec) \
     PyModule_FromDefAndSpec2(module, spec, PYTHON_API_VERSION)
-#endif
+#endif /* Py_LIMITED_API */
+#endif /* New in 3.5 */
 
 #ifndef Py_LIMITED_API
 PyAPI_DATA(char *) _Py_PackageContext;
index dbbf581f97aac725603760b81034db7f1ccdb9d9..229d7fadc244fd000ef120c8585651b00200916e 100644 (file)
@@ -30,8 +30,11 @@ PyAPI_FUNC(void) _PyModule_ClearDict(PyObject *);
 PyAPI_FUNC(struct PyModuleDef*) PyModule_GetDef(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_DATA(PyTypeObject) PyModuleDef_Type;
+#endif
 
 typedef struct PyModuleDef_Base {
   PyObject_HEAD
@@ -47,30 +50,35 @@ typedef struct PyModuleDef_Base {
     NULL, /* m_copy */          \
   }
 
+struct PyModuleDef_Slot;
+#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
+/* New in 3.5 */
 typedef struct PyModuleDef_Slot{
     int slot;
     void *value;
 } 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{
   PyModuleDef_Base m_base;
   const char* m_name;
   const char* m_doc;
   Py_ssize_t m_size;
   PyMethodDef *m_methods;
-  PyModuleDef_Slot* m_slots;
+  struct PyModuleDef_Slot* m_slots;
   traverseproc m_traverse;
   inquiry m_clear;
   freefunc m_free;
 }PyModuleDef;
 
-#define Py_mod_create 1
-#define Py_mod_exec 2
-
-#ifndef Py_LIMITED_API
-#define _Py_mod_LAST_SLOT 2
-#endif
-
 #ifdef __cplusplus
 }
 #endif
index a89d73b823f25e33e064827e8600b94d1445720d..0ce6a377dcfbd692e5b2204496a5c8dd8d7cc8f2 100644 (file)
@@ -79,4 +79,7 @@
 #define Py_am_await 77
 #define Py_am_aiter 78
 #define Py_am_anext 79
+#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
+/* New in 3.5 */
 #define Py_tp_finalize 80
+#endif