mirror of
https://github.com/TREX-CoE/trexio.git
synced 2025-01-10 13:08:27 +01:00
less allocations in the front end
This commit is contained in:
parent
40bfc581ee
commit
d2bc25ef03
@ -1450,12 +1450,6 @@ trexio_read_$group_dset$ (trexio_t* const file, char* const dset)
|
|||||||
|
|
||||||
assert(file->back_end < TREXIO_INVALID_BACK_END);
|
assert(file->back_end < TREXIO_INVALID_BACK_END);
|
||||||
|
|
||||||
char** dset_str;
|
|
||||||
dset_str = CALLOC(dims[0],char*);
|
|
||||||
for (int i=0; i<dims[0]; i++){
|
|
||||||
dset_str[i] = CALLOC(16,char);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (file->back_end) {
|
switch (file->back_end) {
|
||||||
|
|
||||||
case TREXIO_TEXT:
|
case TREXIO_TEXT:
|
||||||
@ -1463,7 +1457,7 @@ trexio_read_$group_dset$ (trexio_t* const file, char* const dset)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case TREXIO_HDF5:
|
case TREXIO_HDF5:
|
||||||
rc = trexio_hdf5_read_$group_dset$(file, dset_str, rank, dims);
|
rc = trexio_hdf5_read_$group_dset$(file, dset, rank, dims);
|
||||||
break;
|
break;
|
||||||
/*
|
/*
|
||||||
case TREXIO_JSON:
|
case TREXIO_JSON:
|
||||||
@ -1472,25 +1466,6 @@ trexio_read_$group_dset$ (trexio_t* const file, char* const dset)
|
|||||||
,*/
|
,*/
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rc != TREXIO_SUCCESS) {
|
|
||||||
for (int i=0; i<dims[0]; i++){
|
|
||||||
FREE(dset_str[i]);
|
|
||||||
}
|
|
||||||
FREE(dset_str);
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
strcpy(dset, "");
|
|
||||||
for(size_t i=0; i<dims[0]; i++){
|
|
||||||
strcat(dset, dset_str[i]);
|
|
||||||
strcat(dset, TREXIO_DELIM);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i=0; i<dims[0]; i++){
|
|
||||||
FREE(dset_str[i]);
|
|
||||||
}
|
|
||||||
FREE(dset_str);
|
|
||||||
|
|
||||||
return TREXIO_SUCCESS;
|
return TREXIO_SUCCESS;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1517,18 +1492,24 @@ trexio_write_$group_dset$ (trexio_t* const file, const char* dset)
|
|||||||
|
|
||||||
assert(file->back_end < TREXIO_INVALID_BACK_END);
|
assert(file->back_end < TREXIO_INVALID_BACK_END);
|
||||||
|
|
||||||
char** dset_str = CALLOC(dims[0],char*);
|
char** dset_str = CALLOC(dims[0], char*);
|
||||||
dset_str = CALLOC(dims[0],char*);
|
char* tmp_str = CALLOC(dims[0]*32, char);
|
||||||
for (int i=0; i<dims[0]; i++){
|
|
||||||
dset_str[i] = CALLOC(16,char);
|
|
||||||
}
|
|
||||||
|
|
||||||
char* pch;
|
char* pch;
|
||||||
pch = strtok( (char*) dset, TREXIO_DELIM);
|
pch = strtok( (char*) dset, TREXIO_DELIM);
|
||||||
strcpy(dset_str[0], pch);
|
|
||||||
|
size_t pch_len;
|
||||||
|
pch_len = strlen(pch);
|
||||||
|
dset_str[0]=tmp_str;
|
||||||
|
strncpy(tmp_str, pch, pch_len);
|
||||||
|
tmp_str += pch_len + 1;
|
||||||
for(size_t i=1; i<dims[0]; i++){
|
for(size_t i=1; i<dims[0]; i++){
|
||||||
pch = strtok (NULL, TREXIO_DELIM);
|
pch = strtok(NULL, TREXIO_DELIM);
|
||||||
strcpy(dset_str[i], pch);
|
|
||||||
|
pch_len = strlen(pch);
|
||||||
|
dset_str[i]=tmp_str;
|
||||||
|
strncpy(tmp_str, pch, pch_len);
|
||||||
|
tmp_str += pch_len + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (file->back_end) {
|
switch (file->back_end) {
|
||||||
@ -1547,9 +1528,7 @@ trexio_write_$group_dset$ (trexio_t* const file, const char* dset)
|
|||||||
,*/
|
,*/
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i=0; i<dims[0]; i++){
|
FREE(dset_str[0]);
|
||||||
FREE(dset_str[i]);
|
|
||||||
}
|
|
||||||
FREE(dset_str);
|
FREE(dset_str);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
Loading…
Reference in New Issue
Block a user