mirror of
https://github.com/TREX-CoE/trexio.git
synced 2024-12-23 04:43:57 +01:00
fixed to compile
This commit is contained in:
parent
aa67877948
commit
cc02849689
@ -85,10 +85,10 @@ templ_path_hdf5 = join(fileDir,'templates_hdf5')
|
|||||||
templ_path_front = join(fileDir,'templates_front')
|
templ_path_front = join(fileDir,'templates_front')
|
||||||
|
|
||||||
#clean the populated/ directory
|
#clean the populated/ directory
|
||||||
for popdir in [templ_path_front, templ_path_front, templ_path_text]:
|
#for popdir in [templ_path_front, templ_path_front, templ_path_text]:
|
||||||
cleandir = join(popdir, 'populated')
|
# cleandir = join(popdir, 'populated')
|
||||||
for f in scandir(cleandir):
|
# for f in scandir(cleandir):
|
||||||
remove(f.path)
|
# remove(f.path)
|
||||||
|
|
||||||
files_exclude = ['prefix_hdf5.c', 'prefix_hdf5.h', 'suffix_hdf5.h',
|
files_exclude = ['prefix_hdf5.c', 'prefix_hdf5.h', 'suffix_hdf5.h',
|
||||||
'prefix_text.c', 'prefix_text.h', 'suffix_text.h',
|
'prefix_text.c', 'prefix_text.h', 'suffix_text.h',
|
||||||
@ -329,8 +329,8 @@ for fname in ['def_hdf5.c', 'basic_hdf5.c', 'basic_text_group.c',
|
|||||||
templine2 = templine1.replace('$group_dset$', dset)
|
templine2 = templine1.replace('$group_dset$', dset)
|
||||||
f_out.write(templine2)
|
f_out.write(templine2)
|
||||||
elif '$group_num$' in line or '$GROUP_NUM$' in line :
|
elif '$group_num$' in line or '$GROUP_NUM$' in line :
|
||||||
#for num in dim_variables.keys():
|
for num in dim_variables.keys():
|
||||||
for num in numbers.keys():
|
#for num in numbers.keys():
|
||||||
templine1 = line.replace('$GROUP_NUM$', num.upper())
|
templine1 = line.replace('$GROUP_NUM$', num.upper())
|
||||||
templine2 = templine1.replace('$group_num$', num)
|
templine2 = templine1.replace('$group_num$', num)
|
||||||
f_out.write(templine2)
|
f_out.write(templine2)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
g+Title: Templator for frontend
|
#+Title: Templator for frontend
|
||||||
|
|
||||||
* Constant file prefixes (not used by generator) :noxport:
|
* Constant file prefixes (not used by generator) :noxport:
|
||||||
|
|
||||||
@ -50,6 +50,41 @@ g+Title: Templator for frontend
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
* Coding conventions
|
||||||
|
|
||||||
|
- integer types will be defined using types given in ~stdint.h~
|
||||||
|
- pointers are always initialized to ~NULL~
|
||||||
|
- when memory is freed, the pointer is set to ~NULL~
|
||||||
|
- ~assert.h~ should be used extensively
|
||||||
|
- variable names are in lower case
|
||||||
|
- ~#define~ constants are in upper case
|
||||||
|
- structs are suffixed by ~_s~
|
||||||
|
- types are suffixed by ~_t~
|
||||||
|
|
||||||
|
** Memory allocation
|
||||||
|
|
||||||
|
Memory allocation of structures can be facilitated by using the
|
||||||
|
following macro, which ensures that the size of the allocated
|
||||||
|
object is the same as the size of the data type pointed by the pointer.
|
||||||
|
|
||||||
|
#+begin_src c :tangle trexio_private.h
|
||||||
|
#define MALLOC(T) (T*) malloc (sizeof(T));
|
||||||
|
#define CALLOC(N,T) (T*) calloc ((N),sizeof(T));
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
When a pointer is freed, it should be set to ~NULL~.
|
||||||
|
This can be facilitated by the use of the following macro:
|
||||||
|
|
||||||
|
#+begin_src c :tangle trexio_private.h
|
||||||
|
#define FREE(X) { free(X) ; (X)=NULL; }
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Front end
|
||||||
|
|
||||||
|
All calls to TREXIO are thread-safe.
|
||||||
|
|
||||||
|
|
||||||
** Error handling
|
** Error handling
|
||||||
#+begin_src c :tangle prefix_front.h
|
#+begin_src c :tangle prefix_front.h
|
||||||
typedef int32_t trexio_exit_code;
|
typedef int32_t trexio_exit_code;
|
||||||
@ -65,7 +100,9 @@ typedef int32_t trexio_exit_code;
|
|||||||
#define TREXIO_READONLY ( (trexio_exit_code) 11 )
|
#define TREXIO_READONLY ( (trexio_exit_code) 11 )
|
||||||
#define TREXIO_ERRNO ( (trexio_exit_code) 12 )
|
#define TREXIO_ERRNO ( (trexio_exit_code) 12 )
|
||||||
#define TREXIO_INVALID_ID ( (trexio_exit_code) 20 )
|
#define TREXIO_INVALID_ID ( (trexio_exit_code) 20 )
|
||||||
#define TREXIO_INVALID_NUM ( (trexio_exit_code) 21 )
|
#define TREXIO_ALLOCATION_FAILED ( (trexio_exit_code) 21 )
|
||||||
|
#define TREXIO_INVALID_NUM ( (trexio_exit_code) 22 )
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Back ends
|
** Back ends
|
||||||
@ -318,7 +355,7 @@ trexio_exit_code trexio_close(trexio_t* file) {
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
* Front end
|
* Templates for front end
|
||||||
|
|
||||||
** Template for frontend read/write a number
|
** Template for frontend read/write a number
|
||||||
|
|
||||||
@ -405,16 +442,13 @@ trexio_exit_code trexio_read_$group$_$group_dset$(trexio_t* file, $group_dset_dt
|
|||||||
rc = trexio_hdf5_read_$group_dset_dim$(file, &$group_dset_dim$);
|
rc = trexio_hdf5_read_$group_dset_dim$(file, &$group_dset_dim$);
|
||||||
if ($group_dset_dim$ <= 0L) return TREXIO_INVALID_NUM;
|
if ($group_dset_dim$ <= 0L) return TREXIO_INVALID_NUM;
|
||||||
|
|
||||||
int64_t dim_total = nucleus_num*3;
|
|
||||||
if (dim_total < 0) return TREXIO_FAILURE;
|
|
||||||
|
|
||||||
uint32_t rank = $group_dset_rank$;
|
uint32_t rank = $group_dset_rank$;
|
||||||
uint64_t dims[$group_dset_rank$] = {$group_dset_dim_list$};
|
uint64_t dims[$group_dset_rank$] = {$group_dset_dim_list$};
|
||||||
|
|
||||||
switch (file->back_end) {
|
switch (file->back_end) {
|
||||||
|
|
||||||
case TREXIO_TEXT:
|
case TREXIO_TEXT:
|
||||||
return trexio_text_read_$group$_$group_dset$(file, $group_dset$, (uint64_t) dim_total);
|
return trexio_text_read_$group$_$group_dset$(file, $group_dset$, rank, dims);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TREXIO_HDF5:
|
case TREXIO_HDF5:
|
||||||
@ -443,16 +477,13 @@ trexio_exit_code trexio_write_$group$_$group_dset$(trexio_t* file, const $group_
|
|||||||
rc = trexio_hdf5_read_$group_dset_dim$(file, &$group_dset_dim$);
|
rc = trexio_hdf5_read_$group_dset_dim$(file, &$group_dset_dim$);
|
||||||
if ($group_dset_dim$ <= 0L) return TREXIO_INVALID_NUM;
|
if ($group_dset_dim$ <= 0L) return TREXIO_INVALID_NUM;
|
||||||
|
|
||||||
int64_t dim_total = nucleus_num*3;
|
|
||||||
if (dim_total < 0) return TREXIO_FAILURE;
|
|
||||||
|
|
||||||
uint32_t rank = $group_dset_rank$;
|
uint32_t rank = $group_dset_rank$;
|
||||||
uint64_t dims[$group_dset_rank$] = {$group_dset_dim_list$};
|
uint64_t dims[$group_dset_rank$] = {$group_dset_dim_list$};
|
||||||
|
|
||||||
switch (file->back_end) {
|
switch (file->back_end) {
|
||||||
|
|
||||||
case TREXIO_TEXT:
|
case TREXIO_TEXT:
|
||||||
return trexio_text_write_$group$_$group_dset$(file, $group_dset$, (uint64_t) dim_total);
|
return trexio_text_write_$group$_$group_dset$(file, $group_dset$, rank, dims);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TREXIO_HDF5:
|
case TREXIO_HDF5:
|
||||||
|
@ -583,7 +583,7 @@ trexio_exit_code trexio_text_write_$group_dset$(const trexio_t* file, const $gro
|
|||||||
trexio_exit_code trexio_text_read_$group_dset$(const trexio_t* file, $group_dset_dtype$* $group_dset$, const uint32_t rank, const uint64_t* dims) {
|
trexio_exit_code trexio_text_read_$group_dset$(const trexio_t* file, $group_dset_dtype$* $group_dset$, const uint32_t rank, const uint64_t* dims) {
|
||||||
|
|
||||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||||
if (coord == NULL) return TREXIO_INVALID_ARG_2;
|
if ($group_dset$ == NULL) return TREXIO_INVALID_ARG_2;
|
||||||
|
|
||||||
$group$_t* $group$ = trexio_text_read_$group$((trexio_text_t*) file);
|
$group$_t* $group$ = trexio_text_read_$group$((trexio_text_t*) file);
|
||||||
if ($group$ == NULL) return TREXIO_FAILURE;
|
if ($group$ == NULL) return TREXIO_FAILURE;
|
||||||
@ -608,7 +608,7 @@ trexio_exit_code trexio_text_read_$group_dset$(const trexio_t* file, $group_dset
|
|||||||
|
|
||||||
trexio_exit_code trexio_text_write_$group_dset$(const trexio_t* file, const $group_dset_dtype$* $group_dset$, const uint32_t rank, const uint64_t* dims) {
|
trexio_exit_code trexio_text_write_$group_dset$(const trexio_t* file, const $group_dset_dtype$* $group_dset$, const uint32_t rank, const uint64_t* dims) {
|
||||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||||
if (coord == NULL) return TREXIO_INVALID_ARG_2;
|
if ($group_dset$ == NULL) return TREXIO_INVALID_ARG_2;
|
||||||
|
|
||||||
if (file->mode == 'r') return TREXIO_READONLY;
|
if (file->mode == 'r') return TREXIO_READONLY;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user