From 0a6e038931f270f0e065402f14642a97d4862bdd Mon Sep 17 00:00:00 2001 From: Andre Anjos <andre.dos.anjos@gmail.com> Date: Sun, 24 Nov 2013 05:11:38 +0100 Subject: [PATCH] Use xbob.extension macros almost always --- setup.py | 5 ++--- src/xbob.blitz | 2 +- xbob/io/externals.cpp | 9 +++------ xbob/io/file.cpp | 8 ++++---- xbob/io/hdf5.cpp | 4 ++-- xbob/io/include/xbob.io/api.h | 30 +++++++++++++++--------------- xbob/io/main.cpp | 9 +++------ xbob/io/videoreader.cpp | 8 ++++---- xbob/io/videowriter.cpp | 4 ++-- 9 files changed, 36 insertions(+), 43 deletions(-) diff --git a/setup.py b/setup.py index ba5d5b8..e314346 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,6 @@ include_dirs = [package_dir] packages = ['bob-io >= 1.3'] version = '2.0.0a0' -define_macros = [("XBOB_IO_VERSION", '"%s"' % version)] setup( @@ -46,8 +45,8 @@ setup( "xbob/io/externals.cpp", ], packages = packages, - define_macros = define_macros, include_dirs = include_dirs, + version = version, ), Extension("xbob.io._library", [ @@ -59,8 +58,8 @@ setup( "xbob/io/main.cpp", ], packages = packages, - define_macros = define_macros, include_dirs = include_dirs, + version = version, ), ], diff --git a/src/xbob.blitz b/src/xbob.blitz index 2bfdea4..80ca9be 160000 --- a/src/xbob.blitz +++ b/src/xbob.blitz @@ -1 +1 @@ -Subproject commit 2bfdea46de4100373311cb655b267499d9a779b3 +Subproject commit 80ca9beac6d15de7ce4f2b38e74f77a259b7c40a diff --git a/xbob/io/externals.cpp b/xbob/io/externals.cpp index 5320e45..ce61bc0 100644 --- a/xbob/io/externals.cpp +++ b/xbob/io/externals.cpp @@ -942,16 +942,13 @@ PyDoc_STRVAR(module_docstr, int PyXbobCoreRandom_APIVersion = XBOB_IO_API_VERSION; -#define ENTRY_FUNCTION_INNER(a) init ## a -#define ENTRY_FUNCTION(a) ENTRY_FUNCTION_INNER(a) +PyMODINIT_FUNC XBOB_EXT_ENTRY_NAME (void) { -PyMODINIT_FUNC ENTRY_FUNCTION(XBOB_IO_VERSIONS_MODULE_NAME) (void) { - - PyObject* m = Py_InitModule3(BOOST_PP_STRINGIZE(XBOB_IO_VERSIONS_MODULE_NAME), module_methods, module_docstr); + PyObject* m = Py_InitModule3(XBOB_EXT_MODULE_NAME, module_methods, module_docstr); /* register some constants */ PyModule_AddIntConstant(m, "__api_version__", XBOB_IO_API_VERSION); - PyModule_AddStringConstant(m, "__version__", XBOB_IO_VERSION); + PyModule_AddStringConstant(m, "__version__", XBOB_EXT_MODULE_VERSION); PyModule_AddObject(m, "versions", build_version_dictionary()); /* imports the NumPy C-API */ diff --git a/xbob/io/file.cpp b/xbob/io/file.cpp index 21b47e7..6320bb8 100644 --- a/xbob/io/file.cpp +++ b/xbob/io/file.cpp @@ -14,8 +14,8 @@ #include <stdexcept> #include "bobskin.h" -#define FILETYPE_NAME File -PyDoc_STRVAR(s_file_str, BOOST_PP_STRINGIZE(XBOB_IO_MODULE_PREFIX) "." BOOST_PP_STRINGIZE(FILETYPE_NAME)); +#define FILETYPE_NAME "File" +PyDoc_STRVAR(s_file_str, XBOB_EXT_MODULE_PREFIX "." FILETYPE_NAME); PyDoc_STRVAR(s_file_doc, "File(filename, [mode='r', [pretend_extension='']]) -> new bob::io::File\n\ @@ -595,8 +595,8 @@ static PyMethodDef PyBobIoFile_Methods[] = { * Definition of Iterator to File * **********************************/ -#define FILEITERTYPE_NAME File.iter -PyDoc_STRVAR(s_fileiterator_str, BOOST_PP_STRINGIZE(XBOB_IO_MODULE_PREFIX) "." BOOST_PP_STRINGIZE(FILEITERTYPE_NAME)); +#define FILEITERTYPE_NAME "File.iter" +PyDoc_STRVAR(s_fileiterator_str, XBOB_EXT_MODULE_PREFIX "." FILEITERTYPE_NAME); /* How to create a new PyBobIoFileIteratorObject */ static PyObject* PyBobIoFileIterator_New(PyTypeObject* type, PyObject*, PyObject*) { diff --git a/xbob/io/hdf5.cpp b/xbob/io/hdf5.cpp index 82fe459..62b68ec 100644 --- a/xbob/io/hdf5.cpp +++ b/xbob/io/hdf5.cpp @@ -14,8 +14,8 @@ #include <stdexcept> #include "bobskin.h" -#define HDF5FILE_NAME HDF5File -PyDoc_STRVAR(s_hdf5file_str, BOOST_PP_STRINGIZE(XBOB_IO_MODULE_PREFIX) "." BOOST_PP_STRINGIZE(HDF5FILE_NAME)); +#define HDF5FILE_NAME "HDF5File" +PyDoc_STRVAR(s_hdf5file_str, XBOB_EXT_MODULE_PREFIX "." HDF5FILE_NAME); PyDoc_STRVAR(s_hdf5file_doc, "HDF5File(filename, [mode='r']) -> new bob::io::HDF5File\n\ diff --git a/xbob/io/include/xbob.io/api.h b/xbob/io/include/xbob.io/api.h index 18f9965..89e7a44 100644 --- a/xbob/io/include/xbob.io/api.h +++ b/xbob/io/include/xbob.io/api.h @@ -8,6 +8,11 @@ #ifndef XBOB_IO_H #define XBOB_IO_H +/* Define Module Name and Prefix for other Modules + Note: We cannot use XBOB_EXT_* macros here, unfortunately */ +#define XBOB_IO_PREFIX "xbob.io" +#define XBOB_IO_FULL_NAME "xbob.io._library" + #include <xbob.io/config.h> #include <bob/config.h> #include <bob/io/File.h> @@ -22,9 +27,6 @@ #include <boost/shared_ptr.hpp> #include <Python.h> -#define XBOB_IO_MODULE_PREFIX xbob.io -#define XBOB_IO_MODULE_NAME _library - /******************* * C API functions * *******************/ @@ -269,15 +271,14 @@ typedef struct { # if !defined(NO_IMPORT_ARRAY) /** - * Returns -1 on error, 0 on success. PyCapsule_Import will set an exception - * if there's an error. + * Returns -1 on error, 0 on success. */ static int import_xbob_io(void) { PyObject *c_api_object; PyObject *module; - module = PyImport_ImportModule(BOOST_PP_STRINGIZE(XBOB_IO_MODULE_PREFIX) "." BOOST_PP_STRINGIZE(XBOB_IO_MODULE_NAME)); + module = PyImport_ImportModule(XBOB_IO_FULL_NAME); if (module == NULL) return -1; @@ -295,30 +296,29 @@ typedef struct { } # else if (PyCObject_Check(c_api_object)) { - XbobIo_API = (void **)PyCObject_AsVoidPtr(c_api_object); + PyXbobIo_API = (void **)PyCObject_AsVoidPtr(c_api_object); } # endif Py_DECREF(c_api_object); Py_DECREF(module); - if (!XbobIo_API) { - PyErr_Format(PyExc_ImportError, + if (!PyXbobIo_API) { + PyErr_SetString(PyExc_ImportError, "cannot find C/C++ API " # if PY_VERSION_HEX >= 0x02070000 - "cannot find C/C++ API capsule at `%s.%s._C_API'", + "capsule" # else - "cannot find C/C++ API cobject at `%s.%s._C_API'", + "cobject" # endif - BOOST_PP_STRINGIZE(XBOB_IO_MODULE_PREFIX), - BOOST_PP_STRINGIZE(XBOB_IO_MODULE_NAME)); + " at `" XBOB_IO_FULL_NAME "._C_API'"); return -1; } /* Checks that the imported version matches the compiled version */ - int imported_version = *(int*)PyXbobIo_API[PyIo_APIVersion_NUM]; + int imported_version = *(int*)PyXbobIo_API[PyXbobIo_APIVersion_NUM]; if (XBOB_IO_API_VERSION != imported_version) { - PyErr_Format(PyExc_ImportError, "%s.%s import error: you compiled against API version 0x%04x, but are now importing an API with version 0x%04x which is not compatible - check your Python runtime environment for errors", BOOST_PP_STRINGIZE(XBOB_IO_MODULE_PREFIX), BOOST_PP_STRINGIZE(XBOB_IO_MODULE_NAME), XBOB_IO_API_VERSION, imported_version); + PyErr_Format(PyExc_ImportError, XBOB_IO_FULL_NAME " import error: you compiled against API version 0x%04x, but are now importing an API with version 0x%04x which is not compatible - check your Python runtime environment for errors", XBOB_IO_API_VERSION, imported_version); return -1; } diff --git a/xbob/io/main.cpp b/xbob/io/main.cpp index 31064f6..215c206 100644 --- a/xbob/io/main.cpp +++ b/xbob/io/main.cpp @@ -21,10 +21,7 @@ PyDoc_STRVAR(module_docstr, "bob::io classes and methods"); int PyXbobIo_APIVersion = XBOB_IO_API_VERSION; -#define ENTRY_FUNCTION_INNER(a) init ## a -#define ENTRY_FUNCTION(a) ENTRY_FUNCTION_INNER(a) - -PyMODINIT_FUNC ENTRY_FUNCTION(XBOB_IO_MODULE_NAME) (void) { +PyMODINIT_FUNC XBOB_EXT_ENTRY_NAME (void) { PyBobIoFile_Type.tp_new = PyType_GenericNew; if (PyType_Ready(&PyBobIoFile_Type) < 0) return; @@ -46,12 +43,12 @@ PyMODINIT_FUNC ENTRY_FUNCTION(XBOB_IO_MODULE_NAME) (void) { PyBobIoHDF5File_Type.tp_new = PyType_GenericNew; if (PyType_Ready(&PyBobIoHDF5File_Type) < 0) return; - PyObject* m = Py_InitModule3(BOOST_PP_STRINGIZE(XBOB_IO_MODULE_NAME), + PyObject* m = Py_InitModule3(XBOB_EXT_MODULE_NAME, module_methods, module_docstr); /* register some constants */ PyModule_AddIntConstant(m, "__api_version__", XBOB_IO_API_VERSION); - PyModule_AddStringConstant(m, "__version__", XBOB_IO_VERSION); + PyModule_AddStringConstant(m, "__version__", XBOB_EXT_MODULE_VERSION); /* register the types to python */ Py_INCREF(&PyBobIoFile_Type); diff --git a/xbob/io/videoreader.cpp b/xbob/io/videoreader.cpp index 0390aa5..0095d14 100644 --- a/xbob/io/videoreader.cpp +++ b/xbob/io/videoreader.cpp @@ -15,8 +15,8 @@ #include <stdexcept> #include "bobskin.h" -#define VIDEOREADER_NAME VideoReader -PyDoc_STRVAR(s_videoreader_str, BOOST_PP_STRINGIZE(XBOB_IO_MODULE_PREFIX) "." BOOST_PP_STRINGIZE(VIDEOREADER_NAME)); +#define VIDEOREADER_NAME "VideoReader" +PyDoc_STRVAR(s_videoreader_str, XBOB_EXT_MODULE_PREFIX "." VIDEOREADER_NAME); PyDoc_STRVAR(s_videoreader_doc, "VideoReader(filename, [check=True]) -> new bob::io::VideoReader\n\ @@ -544,8 +544,8 @@ static PyMappingMethods PyBobIoVideoReader_Mapping = { * Definition of Iterator to VideoReader * *****************************************/ -#define VIDEOITERTYPE_NAME VideoReader.iter -PyDoc_STRVAR(s_videoreaderiterator_str, BOOST_PP_STRINGIZE(XBOB_IO_MODULE_PREFIX) "." BOOST_PP_STRINGIZE(VIDEOITERTYPE_NAME)); +#define VIDEOITERTYPE_NAME "VideoReader.iter" +PyDoc_STRVAR(s_videoreaderiterator_str, XBOB_EXT_MODULE_PREFIX "." VIDEOITERTYPE_NAME); static PyObject* PyBobIoVideoReaderIterator_New(PyTypeObject* type, PyObject*, PyObject*) { diff --git a/xbob/io/videowriter.cpp b/xbob/io/videowriter.cpp index 94ea02e..ab88ec0 100644 --- a/xbob/io/videowriter.cpp +++ b/xbob/io/videowriter.cpp @@ -15,8 +15,8 @@ #include <stdexcept> #include "bobskin.h" -#define VIDEOWRITER_NAME VideoWriter -PyDoc_STRVAR(s_videowriter_str, BOOST_PP_STRINGIZE(XBOB_IO_MODULE_PREFIX) "." BOOST_PP_STRINGIZE(VIDEOWRITER_NAME)); +#define VIDEOWRITER_NAME "VideoWriter" +PyDoc_STRVAR(s_videowriter_str, XBOB_EXT_MODULE_PREFIX "." VIDEOWRITER_NAME); PyDoc_STRVAR(s_videowriter_doc, "VideoWriter(filename, height, width, [framerate=25., [bitrate=1500000., [gop=12, [codec='', [format='', [check=True]) -> new bob::io::VideoWriter\n\ -- GitLab