%module pyqmckl /* Define SWIGWORDSIZE in order to properly align long integers on 64-bit system */ #define SWIGWORDSIZE64 %{ #define SWIG_FILE_WITH_INIT /* Include the headers in the wrapper code */ #include "qmckl.h" %} /* Include stdint to recognize types from stdint.h */ %include /* Include typemaps to play with input/output re-casting Useful when working with C pointers */ %include typemaps.i /* Return TREXIO exit code from trexio_open as part of the output tuple */ %apply int *OUTPUT { qmckl_exit_code *exit_code}; /* This enables access to trexio_[...]_read_dset_str_low set of functions in order to return one long string with TREXIO_DELIM delimeter as 2-nd argument of output tuple */ %include /* This block is needed make SWIG treat (double * dset_out|_in, int64_t dim_out|_in) pattern as a special case in order to return the NumPy array to Python from C pointer to array provided by trexio_read_safe_[dset_num] function. NOTE: numpy.i is currently not part of SWIG but included in the numpy distribution (under numpy/tools/swig/numpy.i) */ %include "numpy.i" %init %{ import_array(); %} /* Typemaps below change the type of numpy array dimensions from int to int64_t */ %numpy_typemaps(double, NPY_DOUBLE, int64_t) %numpy_typemaps(float, NPY_FLOAT, int64_t) %numpy_typemaps(int32_t, NPY_INT32, int64_t) %numpy_typemaps(int64_t, NPY_INT64, int64_t) /* Include typemaps generated by the process.py */ %include pyqmckl_include.i /* Parse the header files to generate wrappers */ %include "qmckl.h"