From 304bb4c36d481dc1fea0560a7500770f5143321d Mon Sep 17 00:00:00 2001 From: Andre Anjos <andre.dos.anjos@gmail.com> Date: Tue, 21 Jan 2014 18:36:25 +0100 Subject: [PATCH] Python 3 compatibility --- xbob/measure/main.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/xbob/measure/main.cpp b/xbob/measure/main.cpp index e1cf79d..bcedb33 100644 --- a/xbob/measure/main.cpp +++ b/xbob/measure/main.cpp @@ -954,7 +954,7 @@ static PyObject* roc_for_far(PyObject*, PyObject* args, PyObject* kwds) { } -static PyMethodDef library_methods[] = { +static PyMethodDef module_methods[] = { { s_epc_str, (PyCFunction)epc, @@ -1072,10 +1072,30 @@ static PyMethodDef library_methods[] = { {0} /* Sentinel */ }; +PyDoc_STRVAR(module_docstr, "Bob metrics and performance figures"); + +#if PY_VERSION_HEX >= 0x03000000 +static PyModuleDef module_definition = { + PyModuleDef_HEAD_INIT, + XBOB_EXT_MODULE_NAME, + module_docstr, + -1, + module_methods, + 0, 0, 0, 0 +}; +#endif + PyMODINIT_FUNC XBOB_EXT_ENTRY_NAME (void) { - PyObject* m = Py_InitModule3(XBOB_EXT_MODULE_NAME, - library_methods, "bob::measure bindings"); +# if PY_VERSION_HEX >= 0x03000000 + PyObject* m = PyModule_Create(&module_definition); + if (!m) return 0; +# else + PyObject* m = Py_InitModule3(XBOB_EXT_MODULE_NAME, + module_methods, module_docstr); + if (!m) return; +# endif + PyModule_AddStringConstant(m, "__version__", XBOB_EXT_MODULE_VERSION); /* imports the NumPy C-API */ @@ -1084,4 +1104,8 @@ PyMODINIT_FUNC XBOB_EXT_ENTRY_NAME (void) { /* imports xbob.blitz C-API */ import_xbob_blitz(); +# if PY_VERSION_HEX >= 0x03000000 + return m; +# endif + } -- GitLab