diff --git a/README.html b/README.html index 1da2413..ddc9208 100644 --- a/README.html +++ b/README.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + TREXIO source code documentation @@ -341,7 +341,7 @@ and bug reports should be submitted at

Author: TREX-CoE

-

Created: 2021-05-19 Wed 14:18

+

Created: 2021-05-19 Wed 20:03

Validate

diff --git a/index.html b/index.html index 1da2413..ddc9208 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + TREXIO source code documentation @@ -341,7 +341,7 @@ and bug reports should be submitted at

Author: TREX-CoE

-

Created: 2021-05-19 Wed 14:18

+

Created: 2021-05-19 Wed 20:03

Validate

diff --git a/templator_front.html b/templator_front.html index 24a2dd4..a0b8f24 100644 --- a/templator_front.html +++ b/templator_front.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Front end API @@ -311,45 +311,45 @@ for the JavaScript code in this tag.

Table of Contents

-
-

1 Coding conventions

+
+

1 Coding conventions

  • integer types will be defined using types given in stdint.h
  • @@ -364,8 +364,8 @@ for the JavaScript code in this tag.
-
-

1.1 Memory allocation

+
+

1.1 Memory allocation

Memory allocation of structures can be facilitated by using the @@ -400,8 +400,8 @@ The maximum string size for the filenames is 4096 characters.

-
-

2 Front end

+
+

2 Front end

All calls to TREXIO are thread-safe. @@ -409,10 +409,10 @@ TREXIO front end is modular, which simplifies implementation of new back ends.

-
-

2.1 Error handling

+
+

2.1 Error handling

- +
@@ -694,8 +694,8 @@ The text strings are extracted from the previous table. -
-

2.2 Back ends

+
+

2.2 Back ends

TREXIO has several back ends: @@ -725,8 +725,8 @@ lines that correspond to the TREXIO_JSON back end (not implemented

-
-

2.3 Read/write behavior

+
+

2.3 Read/write behavior

Every time a reading function is called, the data is read from the @@ -754,8 +754,8 @@ concurrent programs, the behavior is not specified.

-
-

2.4 TREXIO file type

+
+

2.4 TREXIO file type

trexio_s is the the main type for TREXIO files, visible to the users @@ -787,8 +787,8 @@ TREXIO files will have as a first argument the TREXIO file handle.

-
-

2.5 Polymorphism of the file handle

+
+

2.5 Polymorphism of the file handle

Polymorphism of the trexio_t type is handled by ensuring that the @@ -807,8 +807,8 @@ corresponding types for all back ends can be safely casted to

-
-

2.6 File opening

+
+

2.6 File opening

trexio_open creates a new TREXIO file or opens existing one. @@ -861,16 +861,17 @@ should tend to avoid renaming the .txt data files. if (mode != 'r' && mode != 'w' && mode != 'a') return NULL; trexio_t* result = NULL; + void* result_tmp = NULL; /* Allocate data structures */ switch (back_end) { case TREXIO_TEXT: - result = (trexio_t*) malloc (sizeof(trexio_text_t)); + result_tmp = malloc(sizeof(trexio_text_t)); break; case TREXIO_HDF5: - result = (trexio_t*) malloc (sizeof(trexio_hdf5_t)); + result_tmp = malloc(sizeof(trexio_hdf5_t)); break; /* case TREXIO_JSON: @@ -878,6 +879,7 @@ should tend to avoid renaming the .txt data files. break; */ } + result = (trexio_t*) result_tmp; assert (result != NULL); /* TODO: Error handling */ @@ -970,8 +972,8 @@ should tend to avoid renaming the .txt data files.

-
-

2.7 File closing

+
+

2.7 File closing

trexio_close closes an existing trexio_t file. @@ -994,7 +996,9 @@ output: if (file == NULL) return TREXIO_FILE_ERROR; - trexio_exit_code rc; + trexio_exit_code rc = TREXIO_FAILURE; + + assert(file->back_end < TREXIO_INVALID_BACK_END); /* Terminate the back end */ switch (file->back_end) { @@ -1011,8 +1015,6 @@ output: rc = trexio_json_deinit(file); break; */ - default: - rc = TREXIO_FAILURE; /* Impossible case */ } if (rc != TREXIO_SUCCESS) { @@ -1070,8 +1072,8 @@ output:

-
-

3 Templates for front end

+
+

3 Templates for front end

Consider the following block of trex.json: @@ -1261,8 +1263,8 @@ or double precision for integer and floating point numbers.

-
-

3.1 Templates for front end has/read/write a dimension

+
+

3.1 Templates for front end has/read/write a dimension

This section concerns API calls related to dimensioning variables. @@ -1331,8 +1333,8 @@ This section concerns API calls related to dimensioning variables.

-
-

3.1.1 C templates for front end

+
+

3.1.1 C templates for front end

The C templates that correspond to each of the abovementioned @@ -1500,6 +1502,8 @@ precision (see Table above). if (file == NULL) return TREXIO_INVALID_ARG_1; + assert(file->back_end < TREXIO_INVALID_BACK_END); + switch (file->back_end) { case TREXIO_TEXT: @@ -1514,9 +1518,8 @@ precision (see Table above). return trexio_json_has_$group_num$(file); break; */ - default: - return TREXIO_FAILURE; /* Impossible case */ } + return TREXIO_FAILURE; } @@ -1524,8 +1527,8 @@ precision (see Table above).

-
-

3.1.2 Fortran templates for front end

+
+

3.1.2 Fortran templates for front end

The Fortran templates that provide an access to the C API calls from Fortran. @@ -1611,8 +1614,8 @@ These templates are based on the use of iso_c_binding. Pointers hav

-
-

3.2 Templates for front end has/read/write a dataset

+
+

3.2 Templates for front end has/read/write a dataset

This section concerns API calls related to datasets. @@ -1681,8 +1684,8 @@ This section concerns API calls related to datasets.

-
-

3.2.1 C templates for front end

+
+

3.2.1 C templates for front end

The C templates that correspond to each of the abovementioned functions can be found below. @@ -1712,6 +1715,8 @@ The basic (non-suffixed) API call on datasets deals with double precision (see T 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: @@ -1726,9 +1731,8 @@ The basic (non-suffixed) API call on datasets deals with double precision (see T return trexio_json_read_$group$_$group_dset$(file, $group_dset$, rank, dims); break; */ - default: - return TREXIO_FAILURE; /* Impossible case */ } + return TREXIO_FAILURE; }

@@ -1752,6 +1756,8 @@ The basic (non-suffixed) API call on datasets deals with double precision (see T 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: @@ -1766,9 +1772,8 @@ The basic (non-suffixed) API call on datasets deals with double precision (see T return trexio_json_write_$group$_$group_dset$(file, $group_dset$, rank, dims); break; */ - default: - return TREXIO_FAILURE; /* Impossible case */ } + return TREXIO_FAILURE; }
@@ -1800,6 +1805,10 @@ The basic (non-suffixed) API call on datasets deals with double precision (see T $group_dset_dtype_double$* $group_dset$_64 = CALLOC(dim_size, $group_dset_dtype_double$); if ($group_dset$_64 == NULL) return TREXIO_ALLOCATION_FAILED; + assert(file->back_end < TREXIO_INVALID_BACK_END); + + rc = TREXIO_FAILURE; + switch (file->back_end) { case TREXIO_TEXT: @@ -1814,8 +1823,6 @@ The basic (non-suffixed) API call on datasets deals with double precision (see T rc = trexio_json_read_$group$_$group_dset$(file, $group_dset$_64, rank, dims); break; */ - default: - return TREXIO_FAILURE; /* Impossible case */ } if (rc != TREXIO_SUCCESS){ @@ -1865,6 +1872,9 @@ The basic (non-suffixed) API call on datasets deals with double precision (see T $group_dset$_64[i] = ($group_dset_dtype_double$) $group_dset$[i]; } + assert(file->back_end < TREXIO_INVALID_BACK_END); + + rc = TREXIO_FAILURE; switch (file->back_end) { case TREXIO_TEXT: @@ -1879,8 +1889,6 @@ The basic (non-suffixed) API call on datasets deals with double precision (see T rc = trexio_json_write_$group$_$group_dset$(file, $group_dset$_64, rank, dims); break; */ - default: - return TREXIO_FAILURE; /* Impossible case */ } FREE($group_dset$_64); @@ -1917,6 +1925,8 @@ The basic (non-suffixed) API call on datasets deals with double precision (see T if (file == NULL) return TREXIO_INVALID_ARG_1; + assert(file->back_end < TREXIO_INVALID_BACK_END); + switch (file->back_end) { case TREXIO_TEXT: @@ -1931,17 +1941,16 @@ The basic (non-suffixed) API call on datasets deals with double precision (see T return trexio_json_has_$group$_$group_dset$(file); break; */ - default: - return TREXIO_FAILURE; /* Impossible case */ } + return TREXIO_FAILURE; }
-
-

3.2.2 Fortran templates for front end

+
+

3.2.2 Fortran templates for front end

The Fortran templates that provide an access to the C API calls from Fortran. @@ -2028,8 +2037,8 @@ These templates are based on the use of iso_c_binding. Pointers hav

-
-

4 Fortran helper/wrapper functions

+
+

4 Fortran helper/wrapper functions

The function below adapts the original C-based trexio_open for Fortran. @@ -2058,7 +2067,7 @@ Note, that Fortran interface calls the main TREXIO API, which is wr

Author: TREX-CoE

-

Created: 2021-05-19 Wed 14:18

+

Created: 2021-05-19 Wed 20:03

Validate

diff --git a/templator_hdf5.html b/templator_hdf5.html index c3d79e4..729c59e 100644 --- a/templator_hdf5.html +++ b/templator_hdf5.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + HDF5 back end @@ -311,25 +311,25 @@ for the JavaScript code in this tag.

Table of Contents

-
-

1 HDF5 back end

+
+

1 HDF5 back end

-
-

1.1 Template for HDF5 definitions

+
+

1.1 Template for HDF5 definitions

#define $GROUP$_GROUP_NAME          "$group$"
@@ -340,8 +340,8 @@ for the JavaScript code in this tag.
 
-
-

1.2 Template for HDF5 structures

+
+

1.2 Template for HDF5 structures

typedef struct trexio_hdf5_s {
@@ -356,8 +356,8 @@ for the JavaScript code in this tag.
 
-
-

1.3 Template for HDF5 init/deinit

+
+

1.3 Template for HDF5 init/deinit

trexio_exit_code
@@ -440,8 +440,8 @@ for the JavaScript code in this tag.
 
-
-

1.4 Template for HDF5 has/read/write a number

+
+

1.4 Template for HDF5 has/read/write a number

trexio_exit_code
@@ -563,8 +563,8 @@ for the JavaScript code in this tag.
 
-
-

1.5 Template for HDF5 has/read/write a dataset

+
+

1.5 Template for HDF5 has/read/write a dataset

trexio_exit_code
@@ -698,7 +698,7 @@ for the JavaScript code in this tag.
 

Author: TREX-CoE

-

Created: 2021-05-19 Wed 14:18

+

Created: 2021-05-19 Wed 20:03

Validate

diff --git a/templator_text.html b/templator_text.html index 1cdfbf4..edde3dd 100644 --- a/templator_text.html +++ b/templator_text.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + TEXT back end @@ -311,24 +311,24 @@ for the JavaScript code in this tag.

Table of Contents

-
-

1 TEXT back end

+
+

1 TEXT back end

The "file" produced by the text back end is a directory with one @@ -359,8 +359,8 @@ The file is written when closed, or when the flush function is called.

-
-

1.1 Template for group-related structures in text back end

+
+

1.1 Template for group-related structures in text back end

typedef struct $group$_s {
@@ -376,8 +376,8 @@ The file is written when closed, or when the flush function is called.
 
-
-

1.2 Template for general structure in text back end

+
+

1.2 Template for general structure in text back end

typedef struct rdm_s {
@@ -403,8 +403,8 @@ The file is written when closed, or when the flush function is called.
 
-
-

1.3 Initialize function (constant part)

+
+

1.3 Initialize function (constant part)

trexio_exit_code
@@ -505,8 +505,8 @@ The file is written when closed, or when the flush function is called.
 
-
-

1.4 Deinitialize function (templated part)

+
+

1.4 Deinitialize function (templated part)

trexio_exit_code
@@ -531,8 +531,8 @@ The file is written when closed, or when the flush function is called.
 
-
-

1.5 Template for text read struct

+
+

1.5 Template for text read struct

$group$_t*
@@ -698,8 +698,8 @@ trexio_text_read_$group$ (trexio_text_t* 
 
-
-

1.6 Template for text flush struct

+
+

1.6 Template for text flush struct

trexio_exit_code
@@ -758,8 +758,8 @@ trexio_text_read_$group$ (trexio_text_t* 
 
-
-

1.7 Template for text free memory

+
+

1.7 Template for text free memory

Memory is allocated when reading. The following function frees memory. @@ -795,8 +795,8 @@ Memory is allocated when reading. The following function frees memory.

-
-

1.8 Template for has/read/write the $group_num$ attribute

+
+

1.8 Template for has/read/write the $group_num$ attribute

trexio_exit_code
@@ -858,8 +858,8 @@ Memory is allocated when reading. The following function frees memory.
 
-
-

1.9 Template for has/read/write the $group_dset$ dataset

+
+

1.9 Template for has/read/write the $group_dset$ dataset

The group_dset array is assumed allocated with the appropriate size. @@ -956,12 +956,12 @@ The group_dset array is assumed allocated with the appropriate size

-
-

1.10 RDM struct (hard-coded)

+
+

1.10 RDM struct (hard-coded)

-
-

1.10.1 Read the complete struct

+
+

1.10.1 Read the complete struct

rdm_t* trexio_text_read_rdm(trexio_text_t* const file);
@@ -1056,8 +1056,8 @@ The group_dset array is assumed allocated with the appropriate size
 
-
-

1.10.2 Flush the complete struct

+
+

1.10.2 Flush the complete struct

trexio_exit_code trexio_text_flush_rdm(trexio_text_t* const file);
@@ -1099,8 +1099,8 @@ The group_dset array is assumed allocated with the appropriate size
 
-
-

1.10.3 Free memory

+
+

1.10.3 Free memory

Memory is allocated when reading. The followig function frees memory. @@ -1136,8 +1136,8 @@ Memory is allocated when reading. The followig function frees memory.

-
-

1.10.4 Read/Write the onee attribute

+
+

1.10.4 Read/Write the onee attribute

The one_e array is assumed allocated with the appropriate size. @@ -1203,8 +1203,8 @@ The one_e array is assumed allocated with the appropriate size.

-
-

1.10.5 Read/Write the twoe attribute

+
+

1.10.5 Read/Write the twoe attribute

two_e is a sparse data structure, which can be too large to fit @@ -1312,7 +1312,7 @@ file for each sparse float structure.

Author: TREX-CoE

-

Created: 2021-05-19 Wed 14:18

+

Created: 2021-05-19 Wed 20:03

Validate