From 90bd9d466da2f482e23812f93748eb1d3c0cb3d5 Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Sat, 5 Jan 2013 08:49:24 +0100 Subject: [PATCH] python module mac compilation --- src/python/recoll/pyrclextract.cpp | 12 ++++++++++++ src/python/recoll/pyrecoll.cpp | 10 ++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/python/recoll/pyrclextract.cpp b/src/python/recoll/pyrclextract.cpp index b0126a14..d38f4543 100644 --- a/src/python/recoll/pyrclextract.cpp +++ b/src/python/recoll/pyrclextract.cpp @@ -291,5 +291,17 @@ initrclextract(void) Py_INCREF(&rclx_ExtractorType); PyModule_AddObject(m, "Extractor", (PyObject *)&rclx_ExtractorType); +#if PY_MAJOR_VERSION >= 2 && PY_MINOR_VERSION >= 7 recoll_DocType = (PyObject*)PyCapsule_Import(PYRECOLL_PACKAGE "recoll.doctypeptr", 0); +#else + PyObject *module = PyImport_ImportModule(PYRECOLL_PACKAGE "recoll"); + if (module != NULL) { + PyObject *cobject = PyObject_GetAttrString(module, "_C_API"); + if (cobject == NULL) + return; + if (PyCObject_Check(cobject)) + recoll_DocType = (PyObject*)PyCObject_AsVoidPtr(cobject); + Py_DECREF(cobject); + } +#endif } diff --git a/src/python/recoll/pyrecoll.cpp b/src/python/recoll/pyrecoll.cpp index 0a56d605..b83879f8 100644 --- a/src/python/recoll/pyrecoll.cpp +++ b/src/python/recoll/pyrecoll.cpp @@ -1857,8 +1857,14 @@ initrecoll(void) PyModule_AddStringConstant(m, "__doc__", pyrecoll_doc_string); + PyObject *doctypecobject; + +#if PY_MAJOR_VERSION >= 2 && PY_MINOR_VERSION >= 7 // Export a few pointers for the benefit of other recoll python modules - PyObject* doctypecapsule = + doctypecobject= PyCapsule_New(&recoll_DocType, PYRECOLL_PACKAGE "recoll.doctypeptr", 0); - PyModule_AddObject(m, "doctypeptr", doctypecapsule); +#else + doctypecobject = PyCObject_FromVoidPtr(&recoll_DocType, NULL); +#endif + PyModule_AddObject(m, "doctypeptr", doctypecobject); }