diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2010-02-25 05:20:51 +0000 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2010-02-25 05:20:51 +0000 |
commit | f3580687a3f3752a8a8bebbcbe5b594055beb299 (patch) | |
tree | 116f28c4d47f23a0cfaec37050bfe93cf42ecf44 /numpy/f2py/src/fortranobject.c | |
parent | 9596a895dd01c27b9984fe8ff20e151eda41b9b8 (diff) | |
download | numpy-f3580687a3f3752a8a8bebbcbe5b594055beb299.tar.gz |
ENH: Add support for PyCapsule.
Diffstat (limited to 'numpy/f2py/src/fortranobject.c')
-rw-r--r-- | numpy/f2py/src/fortranobject.c | 55 |
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 |