1
0
mirror of https://github.com/TREX-CoE/trexio.git synced 2024-12-23 04:43:57 +01:00

Renamed backend -> back_end for consistency + Better type names, using types in functions.

This commit is contained in:
Anthony Scemama 2022-01-20 09:58:27 +01:00
parent 0651ef66b6
commit 73a8ef1925

View File

@ -82,9 +82,9 @@ module trexio
use, intrinsic :: iso_c_binding
implicit none
integer, parameter :: trexio_exit_code = c_int32_t
integer, parameter :: trexio_backend = c_int32_t
integer, parameter :: trexio_filetype = c_int64_t
integer, parameter :: trexio_exit_code = c_int32_t
integer, parameter :: trexio_back_end_t = c_int32_t
integer, parameter :: trexio_t = c_int64_t
character(kind=c_char), parameter :: TREXIO_DELIM = c_new_line
#+end_src
@ -560,15 +560,16 @@ typedef int32_t back_end_t;
#define TREXIO_DELIM "\n"
#+end_src
The helper function ~trexio_has_backend~ returns ~true~ if TREXIO compilation includes a back end provided as an argument; ~false~ otherwise.
The helper function ~trexio_has_back_end~ returns ~true~ if TREXIO compilation includes a back end provided as an argument; ~false~ otherwise.
This is useful due to the fact that HDF5 back end can be disabled at configure step.
#+begin_src c :tangle prefix_front.h
bool trexio_has_backend(back_end_t back_end);
bool trexio_has_back_end(back_end_t back_end);
#+end_src
#+begin_src c :tangle prefix_front.c
bool trexio_has_backend(back_end_t back_end) {
bool trexio_has_back_end(back_end_t back_end) {
switch (back_end) {
case TREXIO_TEXT:
return true;
@ -581,20 +582,32 @@ bool trexio_has_backend(back_end_t back_end) {
}
return false;
}
bool trexio_has_backend(back_end_t back_end) {
return trexio_has_back_end(back_end);
}
#+end_src
*** Fortran
#+begin_src f90 :tangle prefix_fortran.f90
integer(trexio_backend), parameter :: TREXIO_HDF5 = 0
integer(trexio_backend), parameter :: TREXIO_TEXT = 1
! integer(trexio_backend), parameter :: TREXIO_JSON = 2
integer(trexio_backend), parameter :: TREXIO_INVALID_BACK_END = 2
integer(trexio_back_end_t), parameter :: TREXIO_HDF5 = 0
integer(trexio_back_end_t), parameter :: TREXIO_TEXT = 1
! integer(trexio_back_end_t), parameter :: TREXIO_JSON = 2
integer(trexio_back_end_t), parameter :: TREXIO_INVALID_BACK_END = 2
#+end_src
The function below is a Fortran interface for the aforementioned C-compatible ~trexio_has_backend~ function.
The function below is a Fortran interface for the aforementioned C-compatible ~trexio_has_back_end~ function.
#+begin_src f90 :tangle prefix_fortran.f90
interface
logical(c_bool) function trexio_has_back_end (back_end) bind(C)
use, intrinsic :: iso_c_binding
import
integer(c_int32_t), intent(in), value :: back_end
end function trexio_has_back_end
end interface
interface
logical(c_bool) function trexio_has_backend (back_end) bind(C)
use, intrinsic :: iso_c_binding
@ -604,6 +617,9 @@ interface
end interface
#+end_src
Originally, the function was named ~trexio_has_backend~. For
consistency, in version 2.2 it was renamed ~trexio_has_back_end~.
*** Python
#+begin_src python :tangle prefix_python.py
@ -968,13 +984,13 @@ trexio_open(const char* file_name, const char mode,
#+begin_src f90 :tangle prefix_fortran.f90
interface
integer(c_int64_t) function trexio_open_c (filename, mode, backend, rc_open) bind(C, name="trexio_open")
integer(c_int64_t) function trexio_open_c (filename, mode, back_end, rc_open) bind(C, name="trexio_open")
use, intrinsic :: iso_c_binding
import
character(kind=c_char), dimension(*) :: filename
character(kind=c_char), intent(in), value :: mode
integer(trexio_backend), intent(in), value :: backend
integer(trexio_exit_code), intent(out) :: rc_open
character(kind=c_char), dimension(*) :: filename
character(kind=c_char), intent(in), value :: mode
integer(trexio_back_end_t), intent(in), value :: back_end
integer(trexio_exit_code), intent(out) :: rc_open
end function trexio_open_c
end interface
#+end_src
@ -3736,7 +3752,7 @@ interface
bind(C, name="trexio_write_$group_str$")
use, intrinsic :: iso_c_binding
import
integer(c_int64_t), intent(in), value :: trex_file
integer(trexio_t), intent(in), value :: trex_file
character(kind=c_char), intent(in) :: str(*)
integer(c_int32_t), intent(in), value :: max_str_len
end function trexio_write_$group_str$_c
@ -3749,7 +3765,7 @@ interface
bind(C, name="trexio_read_$group_str$")
use, intrinsic :: iso_c_binding
import
integer(c_int64_t), intent(in), value :: trex_file
integer(trexio_t), intent(in), value :: trex_file
character(kind=c_char), intent(out) :: str(*)
integer(c_int32_t), intent(in), value :: max_str_len
end function trexio_read_$group_str$_c
@ -3761,7 +3777,7 @@ interface
integer(trexio_exit_code) function trexio_has_$group_str$ (trex_file) bind(C)
use, intrinsic :: iso_c_binding
import
integer(c_int64_t), intent(in), value :: trex_file
integer(trexio_t), intent(in), value :: trex_file
end function trexio_has_$group_str$
end interface
#+end_src
@ -3769,7 +3785,7 @@ end interface
#+begin_src f90 :tangle helper_read_attr_str_front_fortran.fh_90
integer(trexio_exit_code) function trexio_read_$group_str$ (trex_file, str, max_str_len)
implicit none
integer(c_int64_t), intent(in), value :: trex_file
integer(trexio_t), intent(in), value :: trex_file
integer(c_int32_t), intent(in), value :: max_str_len
character, intent(out) :: str(*)
@ -3782,7 +3798,7 @@ end interface
integer(trexio_exit_code) function trexio_write_$group_str$ (trex_file, str, max_str_len)
use, intrinsic :: iso_c_binding, only : c_null_char
implicit none
integer(c_int64_t), intent(in), value :: trex_file
integer(trexio_t), intent(in), value :: trex_file
integer(c_int32_t), intent(in), value :: max_str_len
character(len=*), intent(in) :: str
@ -3887,18 +3903,18 @@ def has_$group_str$(trexio_file) -> bool:
#+begin_src f90 :tangle helper_fortran.f90
contains
integer(c_int64_t) function trexio_open (filename, mode, backend, rc_open)
integer(trexio_t) function trexio_open (filename, mode, back_end, rc_open)
use, intrinsic :: iso_c_binding, only : c_null_char
implicit none
character(len=*), intent(in) :: filename
character, intent(in), value :: mode
integer(trexio_backend), intent(in), value :: backend
integer(trexio_exit_code), intent(out) :: rc_open
character(len=len_trim(filename)+1) :: filename_c
character(len=*), intent(in) :: filename
character, intent(in), value :: mode
integer(trexio_back_end_t), intent(in), value :: back_end
integer(trexio_exit_code), intent(out) :: rc_open
character(len=len_trim(filename)+1) :: filename_c
integer(trexio_exit_code) :: rc
filename_c = trim(filename) // c_null_char
trexio_open = trexio_open_c(filename_c, mode, backend, rc_open)
trexio_open = trexio_open_c(filename_c, mode, back_end, rc_open)
if (trexio_open == 0_8 .or. rc_open /= TREXIO_SUCCESS) then
return
endif