summaryrefslogtreecommitdiff
path: root/numpy/f2py/src/fortranobject.c
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2010-02-25 05:20:51 +0000
committerCharles Harris <charlesr.harris@gmail.com>2010-02-25 05:20:51 +0000
commitf3580687a3f3752a8a8bebbcbe5b594055beb299 (patch)
tree116f28c4d47f23a0cfaec37050bfe93cf42ecf44 /numpy/f2py/src/fortranobject.c
parent9596a895dd01c27b9984fe8ff20e151eda41b9b8 (diff)
downloadnumpy-f3580687a3f3752a8a8bebbcbe5b594055beb299.tar.gz
ENH: Add support for PyCapsule.
Diffstat (limited to 'numpy/f2py/src/fortranobject.c')
-rw-r--r--numpy/f2py/src/fortranobject.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/numpy/f2py/src/fortranobject.c b/numpy/f2py/src/fortranobject.c
index 66e02ff89..3f8177808 100644
--- a/numpy/f2py/src/fortranobject.c
+++ b/numpy/f2py/src/fortranobject.c
@@ -855,6 +855,61 @@ int copy_ND_array(const PyArrayObject *arr, PyArrayObject *out)
return PyArray_CopyInto(out, (PyArrayObject *)arr);
}
+/*******************************************/
+/* Compatibility functions for Python 3.1 */
+/*******************************************/
+
+#if PY_VERSION_HEX >= 0X03010000
+
+PyObject *
+F2PyCapsule_FromVoidPtr(void *ptr, void (*dtor)(PyObject *))
+{
+ PyObject *ret = PyCapsule_New(ptr, NULL, dtor);
+ if (ret == NULL) {
+ PyErr_Clear();
+ }
+ return ret;
+}
+
+void *
+F2PyCapsule_AsVoidPtr(PyObject *obj)
+{
+ void *ret = PyCapsule_GetPointer(obj, NULL);
+ if (ret == NULL) {
+ PyErr_Clear();
+ }
+ return ret;
+}
+
+int
+F2PyCapsule_Check(PyObject *ptr)
+{
+ return PyCapsule_CheckExact(ptr);
+}
+
+#else
+
+PyObject *
+F2PyCapsule_FromVoidPtr(void *ptr, void (*dtor)(void *))
+{
+ return PyCObject_FromVoidPtr(ptr, dtor);
+}
+
+void *
+F2PyCapsule_AsVoidPtr(PyObject *ptr)
+{
+ return PyCObject_AsVoidPtr(ptr);
+}
+
+int
+F2PyCapsule_Check(PyObject *ptr)
+{
+ return PyCObject_Check(ptr);
+}
+
+#endif
+
+
#ifdef __cplusplus
}
#endif