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

better error handling in TEXT back end

This commit is contained in:
q-posev 2021-12-01 16:11:40 +01:00
parent f9fd18caa3
commit 7afce779a8

View File

@ -1017,7 +1017,7 @@ trexio_exit_code trexio_text_write_$group_sparse_dset$(trexio_t* const file,
const int32_t* index_sparse, const int32_t* index_sparse,
const double* value_sparse) const double* value_sparse)
{ {
if (file == NULL) return TREXIO_FILE_ERROR; if (file == NULL) return TREXIO_INVALID_ARG_1;
/* Build the name of the file with sparse data*/ /* Build the name of the file with sparse data*/
const char* $group_sparse_dset$_file_name = "/$group_sparse_dset$.txt"; const char* $group_sparse_dset$_file_name = "/$group_sparse_dset$.txt";
@ -1030,34 +1030,31 @@ trexio_exit_code trexio_text_write_$group_sparse_dset$(trexio_t* const file,
FILE* f = fopen(file_abs_path, "a"); FILE* f = fopen(file_abs_path, "a");
//TODO ERROR HANDLING //TODO ERROR HANDLING
assert(f != NULL); if(f == NULL) return TREXIO_FILE_ERROR;
// read the currently written number of elements // read the currently written number of elements
// line_length is 69 because // line_length is 69 because
// 10 per index (40 in total) + 4 spaces + 24 for floating point value + 1 for newline char // 10 per index (40 in total) + 4 spaces + 24 for floating point value + 1 for newline char
// in general: 10*n_indices + n_indices + 24 + 1 // in general: 10*n_indices + n_indices + 24 + 1
const uint64_t line_length = $group_sparse_dset_line_length$L; const uint64_t line_length = $group_sparse_dset_line_length$L;
//fseek(f, (long) offset_file * line_length, SEEK_SET); //fseek(f, (long) offset_file * line_length, SEEK_SET);
int rc; int rc;
for (uint64_t i=0L; i<size; ++i) { for (uint64_t i=0L; i<size; ++i) {
rc = fprintf(f, "$group_sparse_dset_format_printf$\n", rc = fprintf(f, "$group_sparse_dset_format_printf$\n",
$group_sparse_dset_indices_printf$, $group_sparse_dset_indices_printf$,
value_sparse[i]); value_sparse[i]);
assert(rc > 0);
if(rc <= 0) {
fclose(f);
return TREXIO_FAILURE;
}
} }
/*
int rc = fprintf(f, "%10d %10d %10d %10d %24.16e\n",
index[4*i],
index[4*i+1],
index[4*i+2],
index[4*i+3],
value[i]);
*/
rc = fclose(f); rc = fclose(f);
assert(rc == 0); if(rc != 0) return TREXIO_FILE_ERROR;
return TREXIO_SUCCESS; return TREXIO_SUCCESS;
} }
@ -1072,7 +1069,7 @@ trexio_exit_code trexio_text_read_$group_sparse_dset$(trexio_t* const file,
int32_t* const index_sparse, int32_t* const index_sparse,
double* const value_sparse) double* const value_sparse)
{ {
if (file == NULL) return TREXIO_FILE_ERROR; if (file == NULL) return TREXIO_INVALID_ARG_1;
/* Build the name of the file with sparse data*/ /* Build the name of the file with sparse data*/
const char* $group_sparse_dset$_file_name = "/$group_sparse_dset$.txt"; const char* $group_sparse_dset$_file_name = "/$group_sparse_dset$.txt";
@ -1084,8 +1081,7 @@ trexio_exit_code trexio_text_read_$group_sparse_dset$(trexio_t* const file,
FILE* f = fopen(file_abs_path, "r"); FILE* f = fopen(file_abs_path, "r");
//TODO ERROR HANDLING if(f == NULL) return TREXIO_FILE_ERROR;
assert(f != NULL);
// read the currently written number of elements // read the currently written number of elements
// line_length is 69 because // line_length is 69 because
@ -1097,20 +1093,29 @@ trexio_exit_code trexio_text_read_$group_sparse_dset$(trexio_t* const file,
int rc; int rc;
for (uint64_t i=0L; i<size; ++i) { for (uint64_t i=0L; i<size; ++i) {
rc = fscanf(f, "$group_sparse_dset_format_scanf$", rc = fscanf(f, "$group_sparse_dset_format_scanf$",
$group_sparse_dset_indices_scanf$, $group_sparse_dset_indices_scanf$,
&value_sparse[i]); &value_sparse[i]);
// TODO: find a way to indicate the number of elements being read (useful?) // TODO: find a way to indicate the number of elements being read (useful?)
if (rc == EOF){ if (rc == EOF){
fclose(f);
return TREXIO_END; return TREXIO_END;
} else { } else {
assert(rc > 0);
if(rc <= 0) {
fclose(f);
return TREXIO_FAILURE;
}
} }
} }
rc = fclose(f); rc = fclose(f);
assert(rc==0); if(rc != 0) return TREXIO_FILE_ERROR;
return TREXIO_SUCCESS; return TREXIO_SUCCESS;
@ -1120,7 +1125,7 @@ trexio_exit_code trexio_text_read_$group_sparse_dset$(trexio_t* const file,
#+begin_src c :tangle has_dset_sparse_text.c #+begin_src c :tangle has_dset_sparse_text.c
trexio_exit_code trexio_text_has_$group_sparse_dset$(trexio_t* const file) trexio_exit_code trexio_text_has_$group_sparse_dset$(trexio_t* const file)
{ {
if (file == NULL) return TREXIO_FILE_ERROR; if (file == NULL) return TREXIO_INVALID_ARG_1;
/* Build the name of the file with sparse data*/ /* Build the name of the file with sparse data*/
const char* $group_sparse_dset$_file_name = "/$group_sparse_dset$.txt"; const char* $group_sparse_dset$_file_name = "/$group_sparse_dset$.txt";