6a30ada4a0
Signed-off-by: Adam Tkac <atkac@redhat.com>
93 lines
3.4 KiB
Diff
93 lines
3.4 KiB
Diff
diff -up swig-2.0.0/Lib/python/pyrun.swg.rh623854 swig-2.0.0/Lib/python/pyrun.swg
|
|
--- swig-2.0.0/Lib/python/pyrun.swg.rh623854 2010-02-28 00:26:02.000000000 +0100
|
|
+++ swig-2.0.0/Lib/python/pyrun.swg 2010-08-17 16:32:16.581604656 +0200
|
|
@@ -45,8 +45,18 @@
|
|
#define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg
|
|
#define SWIG_ErrorType(code) SWIG_Python_ErrorType(code)
|
|
#define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg)
|
|
-#define SWIG_fail goto fail
|
|
+#define SWIG_fail goto fail
|
|
|
|
+/*
|
|
+ * Python 2.7 and newer and Python 3.1 and newer should use Capsules API instead of
|
|
+ * CObjects API.
|
|
+ */
|
|
+#if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \
|
|
+ (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0))
|
|
+#define USE_CAPSULES
|
|
+#define TYPE_POINTER_NAME \
|
|
+ ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME)
|
|
+#endif
|
|
|
|
/* Runtime API implementation */
|
|
|
|
@@ -1356,8 +1366,12 @@ SWIG_Python_GetModule(void) {
|
|
#ifdef SWIG_LINK_RUNTIME
|
|
type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
|
|
#else
|
|
+#ifdef USE_CAPSULES
|
|
+ type_pointer = PyCapsule_Import(TYPE_POINTER_NAME, 0);
|
|
+#else
|
|
type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
|
|
(char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
|
|
+#endif
|
|
if (PyErr_Occurred()) {
|
|
PyErr_Clear();
|
|
type_pointer = (void *)0;
|
|
@@ -1402,9 +1416,14 @@ PyModule_AddObject(PyObject *m, char *na
|
|
SWIGRUNTIME void
|
|
SWIG_Python_DestroyModule(void *vptr)
|
|
{
|
|
+ size_t i;
|
|
+#ifdef USE_CAPSULES
|
|
+ swig_module_info *swig_module =
|
|
+ (swig_module_info *) PyCapsule_GetPointer((PyObject *)vptr, TYPE_POINTER_NAME);
|
|
+#else
|
|
swig_module_info *swig_module = (swig_module_info *) vptr;
|
|
+#endif
|
|
swig_type_info **types = swig_module->types;
|
|
- size_t i;
|
|
for (i =0; i < swig_module->size; ++i) {
|
|
swig_type_info *ty = types[i];
|
|
if (ty->owndata) {
|
|
@@ -1426,9 +1445,18 @@ SWIG_Python_SetModule(swig_module_info *
|
|
PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
|
|
swig_empty_runtime_method_table);
|
|
#endif
|
|
+#ifdef USE_CAPSULES
|
|
+ PyObject *pointer = PyCapsule_New((void *)swig_module, TYPE_POINTER_NAME,
|
|
+ (PyCapsule_Destructor)SWIG_Python_DestroyModule);
|
|
+#else
|
|
PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule);
|
|
+#endif
|
|
if (pointer && module) {
|
|
+#ifdef USE_CAPSULES
|
|
+ PyModule_AddObject(module, (char*)"type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer);
|
|
+#else
|
|
PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
|
|
+#endif
|
|
} else {
|
|
Py_XDECREF(pointer);
|
|
}
|
|
@@ -1449,12 +1477,20 @@ SWIG_Python_TypeQuery(const char *type)
|
|
PyObject *obj = PyDict_GetItem(cache, key);
|
|
swig_type_info *descriptor;
|
|
if (obj) {
|
|
+#ifdef USE_CAPSULES
|
|
+ descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, type);
|
|
+#else
|
|
descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj);
|
|
+#endif
|
|
} else {
|
|
swig_module_info *swig_module = SWIG_Python_GetModule();
|
|
descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type);
|
|
if (descriptor) {
|
|
+#ifdef USE_CAPSULES
|
|
+ obj = PyCapsule_New(descriptor, type, NULL);
|
|
+#else
|
|
obj = PyCObject_FromVoidPtr(descriptor, NULL);
|
|
+#endif
|
|
PyDict_SetItem(cache, key, obj);
|
|
Py_DECREF(obj);
|
|
}
|