1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2024-12-23 04:44:03 +01:00

Add dummy error handling on the SWIG side

This commit is contained in:
q-posev 2022-05-03 16:16:56 +02:00
parent 1be899d0c5
commit 5bca219c1b

View File

@ -40,9 +40,26 @@ import_array();
%numpy_typemaps(int32_t, NPY_INT32, int64_t) %numpy_typemaps(int32_t, NPY_INT32, int64_t)
%numpy_typemaps(int64_t, NPY_INT64, int64_t) %numpy_typemaps(int64_t, NPY_INT64, int64_t)
/* Include typemaps generated by the process.py */ /* Include typemaps generated by the process_header.py script */
%include pyqmckl_include.i %include "pyqmckl_include.i"
/* exception.i is a generic (language-independent) module */
%include "exception.i"
/* Error handling
TODO: the sizeof() check below if a dummy workaround
It is good to skip exception raise for functions like context_create and others, but might fail
if sizeof(result) == sizeof(qmckl_exit_code), e.g. for functions that return non-zero integers or floats
*/
%exception {
$action
if (result != 0 && sizeof(result) == sizeof(qmckl_exit_code)) {
SWIG_exception_fail(SWIG_RuntimeError, qmckl_string_of_error(result));
}
}
/* The exception handling above does not work for void functions like lock/unlock so exclude them for now */
%ignore qmckl_lock;
%ignore qmckl_unlock;
/* Parse the header files to generate wrappers */ /* Parse the header files to generate wrappers */
%include "qmckl.h" %include "qmckl.h"