mirror of
https://github.com/TREX-CoE/trexio.git
synced 2025-01-05 19:08:59 +01:00
add functions for has/read/write_dset_str [front]
This commit is contained in:
parent
29d927675e
commit
1575c1f4d0
@ -1056,7 +1056,7 @@ end interface
|
|||||||
This section concerns API calls related to datasets.
|
This section concerns API calls related to datasets.
|
||||||
|
|
||||||
| Function name | Description | Precision |
|
| Function name | Description | Precision |
|
||||||
|----------------------------------------+-------------------------------------+-----------|
|
|--------------------------------+-------------------------------------+-----------|
|
||||||
| ~trexio_has_$group_dset$~ | Check if a dataset exists in a file | --- |
|
| ~trexio_has_$group_dset$~ | Check if a dataset exists in a file | --- |
|
||||||
| ~trexio_read_$group_dset$~ | Read a dataset | Double |
|
| ~trexio_read_$group_dset$~ | Read a dataset | Double |
|
||||||
| ~trexio_write_$group_dset$~ | Write a dataset | Double |
|
| ~trexio_write_$group_dset$~ | Write a dataset | Double |
|
||||||
@ -1402,6 +1402,170 @@ interface
|
|||||||
end interface
|
end interface
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** Templates for front end has/read/write a dataset of strings
|
||||||
|
|
||||||
|
This section concerns API calls related to datasets of strings.
|
||||||
|
|
||||||
|
| Function name | Description |
|
||||||
|
|---------------------------------+-------------------------------------|
|
||||||
|
| ~trexio_has_$group_dset_str$~ | Check if a dataset exists in a file |
|
||||||
|
| ~trexio_read_$group_dset_str$~ | Read a dataset |
|
||||||
|
| ~trexio_write_$group_dset_str$~ | Write a dataset |
|
||||||
|
|
||||||
|
*** C templates for front end
|
||||||
|
|
||||||
|
First parameter is the ~TREXIO~ file handle. Second parameter is the variable to be written/read
|
||||||
|
to/from the ~TREXIO~ file (except for ~trexio_has_~ functions).
|
||||||
|
|
||||||
|
|
||||||
|
#+begin_src c :tangle hrw_dset_str_front.h :exports none
|
||||||
|
trexio_exit_code trexio_has_$group_dset$(trexio_t* const file);
|
||||||
|
trexio_exit_code trexio_read_$group_dset$(trexio_t* const file, $group_dset_dtype$* const dset);
|
||||||
|
trexio_exit_code trexio_write_$group_dset$(trexio_t* const file, const $group_dset_dtype$* dset);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src c :tangle read_dset_str_front.c
|
||||||
|
trexio_exit_code
|
||||||
|
trexio_read_$group_dset$ (trexio_t* const file, $group_dset_dtype$* const dset)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||||
|
if (dset == NULL) return TREXIO_INVALID_ARG_2;
|
||||||
|
|
||||||
|
trexio_exit_code rc;
|
||||||
|
int64_t $group_dset_dim$ = 0;
|
||||||
|
|
||||||
|
/* Error handling for this call is added by the generator */
|
||||||
|
rc = trexio_read_$group_dset_dim$_64(file, &($group_dset_dim$));
|
||||||
|
|
||||||
|
if ($group_dset_dim$ == 0L) return TREXIO_INVALID_NUM;
|
||||||
|
|
||||||
|
uint32_t rank = $group_dset_rank$;
|
||||||
|
uint64_t dims[$group_dset_rank$] = {$group_dset_dim_list$};
|
||||||
|
|
||||||
|
assert(file->back_end < TREXIO_INVALID_BACK_END);
|
||||||
|
|
||||||
|
switch (file->back_end) {
|
||||||
|
|
||||||
|
case TREXIO_TEXT:
|
||||||
|
return trexio_text_read_$group_dset$(file, dset, rank, dims);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TREXIO_HDF5:
|
||||||
|
return trexio_hdf5_read_$group_dset$(file, dset, rank, dims);
|
||||||
|
break;
|
||||||
|
/*
|
||||||
|
case TREXIO_JSON:
|
||||||
|
return trexio_json_read_$group_dset$(file, dset, rank, dims);
|
||||||
|
break;
|
||||||
|
,*/
|
||||||
|
}
|
||||||
|
return TREXIO_FAILURE;
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src c :tangle write_dset_str_front.c
|
||||||
|
trexio_exit_code
|
||||||
|
trexio_write_$group_dset$ (trexio_t* const file, const $group_dset_dtype$* dset)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||||
|
if (dset == NULL) return TREXIO_INVALID_ARG_2;
|
||||||
|
|
||||||
|
trexio_exit_code rc;
|
||||||
|
int64_t $group_dset_dim$ = 0;
|
||||||
|
|
||||||
|
/* Error handling for this call is added by the generator */
|
||||||
|
rc = trexio_read_$group_dset_dim$_64(file, &($group_dset_dim$));
|
||||||
|
|
||||||
|
if ($group_dset_dim$ == 0L) return TREXIO_INVALID_NUM;
|
||||||
|
|
||||||
|
uint32_t rank = $group_dset_rank$;
|
||||||
|
uint64_t dims[$group_dset_rank$] = {$group_dset_dim_list$};
|
||||||
|
|
||||||
|
assert(file->back_end < TREXIO_INVALID_BACK_END);
|
||||||
|
|
||||||
|
switch (file->back_end) {
|
||||||
|
|
||||||
|
case TREXIO_TEXT:
|
||||||
|
return trexio_text_write_$group_dset$(file, dset, rank, dims);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TREXIO_HDF5:
|
||||||
|
return trexio_hdf5_write_$group_dset$(file, dset, rank, dims);
|
||||||
|
break;
|
||||||
|
/*
|
||||||
|
case TREXIO_JSON:
|
||||||
|
return trexio_json_write_$group_dset$(file, dset, rank, dims);
|
||||||
|
break;
|
||||||
|
,*/
|
||||||
|
}
|
||||||
|
return TREXIO_FAILURE;
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src c :tangle has_dset_str_front.c
|
||||||
|
trexio_exit_code
|
||||||
|
trexio_has_$group_dset$ (trexio_t* const file)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||||
|
|
||||||
|
assert(file->back_end < TREXIO_INVALID_BACK_END);
|
||||||
|
|
||||||
|
switch (file->back_end) {
|
||||||
|
|
||||||
|
case TREXIO_TEXT:
|
||||||
|
return trexio_text_has_$group_dset$(file);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TREXIO_HDF5:
|
||||||
|
return trexio_hdf5_has_$group_dset$(file);
|
||||||
|
break;
|
||||||
|
/*
|
||||||
|
case TREXIO_JSON:
|
||||||
|
return trexio_json_has_$group_dset$(file);
|
||||||
|
break;
|
||||||
|
,*/
|
||||||
|
}
|
||||||
|
return TREXIO_FAILURE;
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Fortran templates for front end
|
||||||
|
|
||||||
|
The ~Fortran~ templates that provide an access to the ~C~ API calls from ~Fortran~.
|
||||||
|
These templates are based on the use of ~iso_c_binding~. Pointers have to be passed by value.
|
||||||
|
|
||||||
|
#+begin_src f90 :tangle write_dset_str_front_fortran.f90
|
||||||
|
interface
|
||||||
|
integer function trexio_write_$group_dset$ (trex_file, dset) bind(C)
|
||||||
|
use, intrinsic :: iso_c_binding
|
||||||
|
integer(8), intent(in), value :: trex_file
|
||||||
|
$group_dset_f_dtype$, intent(in) :: dset$group_dset_f_dims$
|
||||||
|
end function trexio_write_$group_dset$
|
||||||
|
end interface
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src f90 :tangle read_dset_str_front_fortran.f90
|
||||||
|
interface
|
||||||
|
integer function trexio_read_$group_dset$ (trex_file, dset) bind(C)
|
||||||
|
use, intrinsic :: iso_c_binding
|
||||||
|
integer(8), intent(in), value :: trex_file
|
||||||
|
$group_dset_f_dtype$, intent(out) :: dset$group_dset_f_dims$
|
||||||
|
end function trexio_read_$group_dset$
|
||||||
|
end interface
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src f90 :tangle has_dset_str_front_fortran.f90
|
||||||
|
interface
|
||||||
|
integer function trexio_has_$group_dset$ (trex_file) bind(C)
|
||||||
|
use, intrinsic :: iso_c_binding
|
||||||
|
integer(8), intent(in), value :: trex_file
|
||||||
|
end function trexio_has_$group_dset$
|
||||||
|
end interface
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Fortran helper/wrapper functions
|
* Fortran helper/wrapper functions
|
||||||
|
|
||||||
The function below adapts the original C-based ~trexio_open~ for Fortran.
|
The function below adapts the original C-based ~trexio_open~ for Fortran.
|
||||||
|
Loading…
Reference in New Issue
Block a user