mirror of
https://github.com/TREX-CoE/trexio.git
synced 2025-04-27 10:54:44 +02:00
added templator for frontend
This commit is contained in:
parent
c0b319a751
commit
f29f3d4263
624
src/templates_front/templator_front.org
Normal file
624
src/templates_front/templator_front.org
Normal file
@ -0,0 +1,624 @@
|
||||
#+Title: Templator for frontend
|
||||
|
||||
* Constant file prefixes (not used by generator) :noxport:
|
||||
|
||||
** Prefixes
|
||||
|
||||
#+NAME:header
|
||||
#+begin_src c
|
||||
/* This file was generated from the trexio.org org-mode file.
|
||||
To generate it, open trexio.org in Emacs and execute
|
||||
M-x org-babel-tangle
|
||||
*/
|
||||
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle prefix_front.h :noweb yes
|
||||
<<header>>
|
||||
#ifndef _TREXIO_H
|
||||
#define _TREXIO_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle prefix_front.c :noweb yes
|
||||
<<header>>
|
||||
#include <pthread.h>
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include "trexio.h"
|
||||
#include "trexio_s.h"
|
||||
#include "trexio_text.h"
|
||||
#include "trexio_hdf5.h"
|
||||
/*
|
||||
#include "trexio_json.h"
|
||||
,*/
|
||||
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle prefix_s_front.h :noweb yes
|
||||
<<header>>
|
||||
#ifndef _TREXIO_S_H
|
||||
#define _TREXIO_S_H
|
||||
|
||||
#include "trexio.h"
|
||||
#include <pthread.h>
|
||||
#include <assert.h>
|
||||
#+end_src
|
||||
|
||||
** Error handling
|
||||
#+begin_src c :tangle prefix_front.h
|
||||
typedef int32_t trexio_exit_code;
|
||||
|
||||
#define TREXIO_FAILURE ( (trexio_exit_code) -1 )
|
||||
#define TREXIO_SUCCESS ( (trexio_exit_code) 0 )
|
||||
#define TREXIO_INVALID_ARG_1 ( (trexio_exit_code) 1 )
|
||||
#define TREXIO_INVALID_ARG_2 ( (trexio_exit_code) 2 )
|
||||
#define TREXIO_INVALID_ARG_3 ( (trexio_exit_code) 3 )
|
||||
#define TREXIO_INVALID_ARG_4 ( (trexio_exit_code) 4 )
|
||||
#define TREXIO_INVALID_ARG_5 ( (trexio_exit_code) 5 )
|
||||
#define TREXIO_END ( (trexio_exit_code) 10 )
|
||||
#define TREXIO_READONLY ( (trexio_exit_code) 11 )
|
||||
#define TREXIO_ERRNO ( (trexio_exit_code) 12 )
|
||||
#define TREXIO_INVALID_ID ( (trexio_exit_code) 20 )
|
||||
#define TREXIO_INVALID_NUM ( (trexio_exit_code) 21 )
|
||||
#+end_src
|
||||
|
||||
** Back ends
|
||||
|
||||
#+begin_src c :tangle prefix_front.h
|
||||
typedef int32_t back_end_t;
|
||||
|
||||
#define TREXIO_HDF5 ( (back_end_t) 0 )
|
||||
#define TREXIO_TEXT ( (back_end_t) 1 )
|
||||
#define TREXIO_JSON ( (back_end_t) 2 )
|
||||
#define TREXIO_INVALID_BACK_END ( (back_end_t) 3 )
|
||||
#+end_src
|
||||
|
||||
** Read/write behavior
|
||||
|
||||
Every time a reading function is called, the data is read from the
|
||||
disk. If data needs to be cached, this is left to the user of the
|
||||
library.
|
||||
|
||||
Writing to TREXIO files is done with transactions (all-or-nothing
|
||||
effect) in a per-group fashion. File writes are attempted by
|
||||
calling explicitly the flush function, or when the TREXIO file is
|
||||
closed. If writing is impossible because the data is not valid, no
|
||||
data is written.
|
||||
|
||||
The order in which the data is written is not necessarily consistent
|
||||
with the order in which the function calls were made.
|
||||
|
||||
The TREXIO files are supposed to be opened by only one program at a
|
||||
time: if the same TREXIO file is modified simultaneously by multiple
|
||||
concurrent programs, the behavior is not specified.
|
||||
|
||||
** TREXIO file type
|
||||
|
||||
~trexio_s~ is the the main type for TREXIO files, visible to the users
|
||||
of the library. This type is kept opaque, and all modifications to
|
||||
the files will be necessarily done through the use of functions,
|
||||
taking such a type as argument.
|
||||
|
||||
File creation and opening functions will return /TREXIO file handles/,
|
||||
namely pointers to ~trexio_s~ types. All functions accessing to the
|
||||
TREXIO files will have as a first argument the TREXIO file handle.
|
||||
|
||||
#+begin_src c :tangle prefix_front.h
|
||||
typedef struct trexio_s trexio_t;
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle prefix_s_front.h
|
||||
struct trexio_s {
|
||||
char* file_name;
|
||||
pthread_mutex_t thread_lock;
|
||||
back_end_t back_end;
|
||||
char mode;
|
||||
char padding[7]; /* Ensures the proper alignment of back-ends */
|
||||
};
|
||||
#+end_src
|
||||
|
||||
** Polymorphism of the file handle
|
||||
|
||||
Polymorphism of the ~trexio_t~ type is handled by ensuring that the
|
||||
corresponding types for all back ends can be safely casted to
|
||||
~trexio_t~. This is done by making the back end structs start with
|
||||
~struct trexio_s~:
|
||||
|
||||
#+begin_src c
|
||||
struct trexio_back_end_s {
|
||||
trexio_t parent ;
|
||||
/* add below specific back end data */
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** File opening
|
||||
|
||||
#+begin_src c :tangle prefix_front.h
|
||||
trexio_t* trexio_open(const char* file_name, const char mode, const back_end_t back_end);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle prefix_front.c
|
||||
trexio_t* trexio_open(const char* file_name, const char mode, const back_end_t back_end) {
|
||||
|
||||
if (file_name == NULL) return NULL;
|
||||
if (file_name[0] == '\0') return NULL;
|
||||
|
||||
if (back_end < 0) return NULL;
|
||||
if (back_end >= TREXIO_INVALID_BACK_END) return NULL;
|
||||
|
||||
if (mode != 'r' && mode != 'w' && mode != 'a') return NULL;
|
||||
|
||||
trexio_t* result = NULL;
|
||||
|
||||
/* Allocate data structures */
|
||||
switch (back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
result = (trexio_t*) malloc (sizeof(trexio_text_t));
|
||||
break;
|
||||
|
||||
case TREXIO_HDF5:
|
||||
result = (trexio_t*) malloc (sizeof(trexio_hdf5_t));
|
||||
break;
|
||||
/*
|
||||
case TREXIO_JSON:
|
||||
result = (trexio_t*) malloc (sizeof(trexio_json_t));
|
||||
break;
|
||||
,*/
|
||||
}
|
||||
|
||||
assert (result != NULL); /* TODO: Error handling */
|
||||
|
||||
|
||||
/* Data for the parent type */
|
||||
|
||||
result->file_name = (char*) calloc(strlen(file_name)+1,sizeof(char));
|
||||
strcpy(result->file_name, file_name);
|
||||
result->back_end = back_end;
|
||||
result->mode = mode;
|
||||
int irc = pthread_mutex_init ( &(result->thread_lock), NULL);
|
||||
assert (irc == 0);
|
||||
|
||||
trexio_exit_code rc;
|
||||
|
||||
/* Back end initialization */
|
||||
|
||||
rc = TREXIO_FAILURE;
|
||||
|
||||
switch (back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
rc = trexio_text_init(result);
|
||||
break;
|
||||
|
||||
case TREXIO_HDF5:
|
||||
rc = trexio_hdf5_init(result);
|
||||
break;
|
||||
/*
|
||||
case TREXIO_JSON:
|
||||
rc = trexio_json_init(result);
|
||||
break;
|
||||
,*/
|
||||
}
|
||||
|
||||
if (rc != TREXIO_SUCCESS) {
|
||||
free(result->file_name);
|
||||
free(result);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* File locking */
|
||||
|
||||
rc = TREXIO_FAILURE;
|
||||
|
||||
switch (back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
rc = trexio_text_lock(result);
|
||||
break;
|
||||
|
||||
case TREXIO_HDF5:
|
||||
rc = TREXIO_SUCCESS;
|
||||
break;
|
||||
/*
|
||||
case TREXIO_JSON:
|
||||
rc = trexio_json_lock(result);
|
||||
break;
|
||||
*/
|
||||
}
|
||||
|
||||
if (rc != TREXIO_SUCCESS) {
|
||||
free(result->file_name);
|
||||
free(result);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** File closing
|
||||
|
||||
#+begin_src c :tangle prefix_front.h
|
||||
trexio_exit_code trexio_close(trexio_t* file);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle prefix_front.c
|
||||
trexio_exit_code trexio_close(trexio_t* file) {
|
||||
|
||||
if (file == NULL) return TREXIO_FAILURE;
|
||||
|
||||
trexio_exit_code rc;
|
||||
|
||||
/* Terminate the back end */
|
||||
switch (file->back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
rc = trexio_text_finalize(file);
|
||||
break;
|
||||
|
||||
case TREXIO_HDF5:
|
||||
rc = trexio_hdf5_finalize(file);
|
||||
break;
|
||||
/*
|
||||
case TREXIO_JSON:
|
||||
rc = trexio_json_finalize(file);
|
||||
break;
|
||||
,*/
|
||||
default:
|
||||
assert (1 == 0); /* Impossible case */
|
||||
}
|
||||
|
||||
if (rc != TREXIO_SUCCESS) {
|
||||
free(file->file_name);
|
||||
free(file);
|
||||
return TREXIO_FAILURE;
|
||||
}
|
||||
|
||||
/* File unlocking */
|
||||
|
||||
rc = TREXIO_FAILURE;
|
||||
|
||||
switch (file->back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
rc = trexio_text_unlock(file);
|
||||
break;
|
||||
|
||||
case TREXIO_HDF5:
|
||||
rc = TREXIO_SUCCESS;
|
||||
break;
|
||||
/*
|
||||
case TREXIO_JSON:
|
||||
rc = trexio_json_unlock(file);
|
||||
break;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Terminate front end */
|
||||
|
||||
free(file->file_name);
|
||||
file->file_name = NULL;
|
||||
|
||||
int irc = pthread_mutex_destroy( &(file->thread_lock) );
|
||||
|
||||
free(file);
|
||||
|
||||
if (irc != 0) return TREXIO_ERRNO;
|
||||
if (rc != TREXIO_SUCCESS) return TREXIO_FAILURE;
|
||||
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
#+end_src
|
||||
|
||||
|
||||
* Front end
|
||||
|
||||
** Template for frontend read/write a number
|
||||
|
||||
#+begin_src c :tangle rw_num_front.h
|
||||
trexio_exit_code trexio_read_$group_num$(trexio_t* file, int64_t* num);
|
||||
trexio_exit_code trexio_write_$group_num$(trexio_t* file, const int64_t num);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle read_num_front.c
|
||||
trexio_exit_code trexio_read_$group_num$(trexio_t* file, int64_t* num) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
|
||||
uint64_t u_num = 0;
|
||||
trexio_exit_code rc = TREXIO_FAILURE;
|
||||
|
||||
switch (file->back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
rc = trexio_text_read_$group_num$(file, &u_num);
|
||||
break;
|
||||
|
||||
case TREXIO_HDF5:
|
||||
rc = trexio_hdf5_read_$group_num$(file, &u_num);
|
||||
break;
|
||||
/*
|
||||
case TREXIO_JSON:
|
||||
rc =trexio_json_read_$group_num$(file, &u_num);
|
||||
break;
|
||||
,*/
|
||||
}
|
||||
|
||||
if (rc != TREXIO_SUCCESS) return rc;
|
||||
|
||||
/**/ *num = (int64_t) u_num;
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle write_num_front.c
|
||||
|
||||
trexio_exit_code trexio_write_$group_num$(trexio_t* file, const int64_t num) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
if (num < 0 ) return TREXIO_INVALID_ARG_2;
|
||||
|
||||
trexio_exit_code rc = TREXIO_FAILURE;
|
||||
|
||||
switch (file->back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
rc = trexio_text_write_$group_num$(file, (uint64_t) num);
|
||||
break;
|
||||
|
||||
case TREXIO_HDF5:
|
||||
rc = trexio_hdf5_write_$group_num$(file, (uint64_t) num);
|
||||
break;
|
||||
/*
|
||||
case TREXIO_JSON:
|
||||
rc = trexio_json_write_$group_num$(file, (uint64_t) num);
|
||||
break;
|
||||
,*/
|
||||
}
|
||||
if (rc != TREXIO_SUCCESS) return rc;
|
||||
|
||||
return TREXIO_SUCCESS;
|
||||
}
|
||||
#+end_src
|
||||
|
||||
|
||||
** Template for frontend read/write a dataset
|
||||
|
||||
#+begin_src c :tangle rw_dset_front.h
|
||||
trexio_exit_code trexio_read_$group$_$group_dset$(trexio_t* file, $group_dset_dtype$* $group_dset$);
|
||||
trexio_exit_code trexio_write_$group$_$group_dset$(trexio_t* file, const $group_dset_dtype$* $group_dset$);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle read_dset_front.c
|
||||
trexio_exit_code trexio_read_$group$_$group_dset$(trexio_t* file, $group_dset_dtype$* $group_dset$) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
if (coord == NULL) return TREXIO_INVALID_ARG_2;
|
||||
|
||||
trexio_exit_code rc;
|
||||
uint64_t $group_dset_dim$ = -1;
|
||||
// error handling for rc is added by the generator
|
||||
rc = trexio_hdf5_read_$group_dset_dim$(file, &$group_dset_dim$);
|
||||
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$;
|
||||
uint64_t dims[$group_dset_rank$] = {$group_dset_dim_list$};
|
||||
|
||||
switch (file->back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
return trexio_text_read_$group$_$group_dset$(file, $group_dset$, (uint64_t) dim_total);
|
||||
break;
|
||||
|
||||
case TREXIO_HDF5:
|
||||
return trexio_hdf5_read_$group$_$group_dset$(file, $group_dset$, rank, dims);
|
||||
break;
|
||||
/*
|
||||
case TREXIO_JSON:
|
||||
return trexio_json_read_$group$_$group_dset$(file, $group_dset$);
|
||||
break;
|
||||
,*/
|
||||
default:
|
||||
return TREXIO_FAILURE; /* Impossible case */
|
||||
}
|
||||
}
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle write_dset_front.c
|
||||
|
||||
trexio_exit_code trexio_write_$group$_$group_dset$(trexio_t* file, const $group_dset_dtype$* $group_dset$) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
if (coord == NULL) return TREXIO_INVALID_ARG_2;
|
||||
|
||||
trexio_exit_code rc;
|
||||
uint64_t $group_dset_dim$ = -1;
|
||||
// error handling for rc is added by the generator
|
||||
rc = trexio_hdf5_read_$group_dset_dim$(file, &$group_dset_dim$);
|
||||
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$;
|
||||
uint64_t dims[$group_dset_rank$] = {$group_dset_dim_list$};
|
||||
|
||||
switch (file->back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
return trexio_text_write_$group$_$group_dset$(file, $group_dset$, (uint64_t) dim_total);
|
||||
break;
|
||||
|
||||
case TREXIO_HDF5:
|
||||
return trexio_hdf5_write_$group$_$group_dset$(file, $group_dset$, rank, dims);
|
||||
break;
|
||||
/*
|
||||
case TREXIO_JSON:
|
||||
return trexio_json_write_$group$_$group_dset$(file, $group_dset$);
|
||||
break;
|
||||
,*/
|
||||
default:
|
||||
return TREXIO_FAILURE; /* Impossible case */
|
||||
}
|
||||
}
|
||||
#+end_src
|
||||
|
||||
## *** rdm
|
||||
**** one_e
|
||||
#+begin_src c :tangle trexio.h
|
||||
trexio_exit_code trexio_read_rdm_one_e(trexio_t* file, double* one_e);
|
||||
trexio_exit_code trexio_write_rdm_one_e(trexio_t* file, const double* one_e);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle trexio.c
|
||||
trexio_exit_code trexio_read_rdm_one_e(trexio_t* file, double* one_e) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
if (one_e == NULL) return TREXIO_INVALID_ARG_2;
|
||||
|
||||
int64_t dim_one_e = -1;
|
||||
trexio_exit_code rc = trexio_read_nucleus_num(file, &dim_one_e); /* This dimension is wrong. Should be mo_num */
|
||||
if (rc != TREXIO_SUCCESS) return rc;
|
||||
if (dim_one_e < 0) return TREXIO_FAILURE;
|
||||
|
||||
switch (file->back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
return trexio_text_read_rdm_one_e(file, one_e, (uint64_t) dim_one_e);
|
||||
break;
|
||||
/*
|
||||
case TREXIO_HDF5:
|
||||
return trexio_hdf5_read_rdm_one_e(file, one_e);
|
||||
break;
|
||||
|
||||
case TREXIO_JSON:
|
||||
return trexio_json_read_rdm_one_e(file, one_e);
|
||||
break;
|
||||
,*/
|
||||
default:
|
||||
return TREXIO_FAILURE; /* Impossible case */
|
||||
}
|
||||
}
|
||||
|
||||
trexio_exit_code trexio_write_rdm_one_e(trexio_t* file, const double* one_e) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
if (one_e == NULL) return TREXIO_INVALID_ARG_2;
|
||||
|
||||
int64_t nucleus_num = -1;
|
||||
trexio_exit_code rc = trexio_read_nucleus_num(file, &nucleus_num);
|
||||
if (rc != TREXIO_SUCCESS) return rc;
|
||||
|
||||
int64_t dim_one_e = nucleus_num * nucleus_num; /* This dimension is wrong. Should be mo_num */
|
||||
if (dim_one_e < 0) return TREXIO_FAILURE;
|
||||
|
||||
switch (file->back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
return trexio_text_write_rdm_one_e(file, one_e, (uint64_t) dim_one_e);
|
||||
break;
|
||||
/*
|
||||
case TREXIO_HDF5:
|
||||
return trexio_hdf5_write_rdm_one_e(file, one_e);
|
||||
break;
|
||||
|
||||
case TREXIO_JSON:
|
||||
return trexio_json_write_rdm_one_e(file, one_e);
|
||||
break;
|
||||
,*/
|
||||
default:
|
||||
return TREXIO_FAILURE; /* Impossible case */
|
||||
}
|
||||
}
|
||||
#+end_src
|
||||
|
||||
**** two_e
|
||||
|
||||
~buffered_read~ functions return ~TREXIO_SUCCESS~ if the complete
|
||||
buffer was read or written. If the read data is smaller than the
|
||||
buffer because the end is reached, the function returns ~TREXIO_END~.
|
||||
|
||||
#+begin_src c :tangle trexio.h
|
||||
trexio_exit_code trexio_buffered_read_rdm_two_e(trexio_t* file, const int64_t offset, const int64_t size, int64_t* index, double* value);
|
||||
trexio_exit_code trexio_buffered_write_rdm_two_e(trexio_t* file, const int64_t offset, const int64_t size, const int64_t* index, const double* value);
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle trexio.c
|
||||
trexio_exit_code trexio_buffered_read_rdm_two_e(trexio_t* file, const int64_t offset, const int64_t size, int64_t* index, double* value) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
if (offset <= 0 ) return TREXIO_INVALID_ARG_2;
|
||||
if (size <= 0 ) return TREXIO_INVALID_ARG_3;
|
||||
if (index == NULL) return TREXIO_INVALID_ARG_4;
|
||||
if (value == NULL) return TREXIO_INVALID_ARG_5;
|
||||
|
||||
switch (file->back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
return trexio_text_buffered_read_rdm_two_e(file, (uint64_t) offset, (uint64_t) size, index, value);
|
||||
break;
|
||||
/*
|
||||
case TREXIO_HDF5:
|
||||
return trexio_hdf5_buffered_read_rdm_two_e(file, size);
|
||||
break;
|
||||
|
||||
case TREXIO_JSON:
|
||||
return trexio_json_buffered_read_rdm_two_e(file, size);
|
||||
break;
|
||||
,*/
|
||||
default:
|
||||
return TREXIO_FAILURE; /* Impossible case */
|
||||
}
|
||||
}
|
||||
|
||||
trexio_exit_code trexio_buffered_write_rdm_two_e(trexio_t* file, const int64_t offset, const int64_t size, const int64_t* index, const double* value) {
|
||||
if (file == NULL) return TREXIO_INVALID_ARG_1;
|
||||
if (offset <= 0 ) return TREXIO_INVALID_ARG_2;
|
||||
if (size <= 0 ) return TREXIO_INVALID_ARG_3;
|
||||
if (index == NULL) return TREXIO_INVALID_ARG_4;
|
||||
if (value == NULL) return TREXIO_INVALID_ARG_5;
|
||||
|
||||
switch (file->back_end) {
|
||||
|
||||
case TREXIO_TEXT:
|
||||
return trexio_text_buffered_write_rdm_two_e(file, (uint64_t) offset, (uint64_t) size, index, value);
|
||||
break;
|
||||
/*
|
||||
case TREXIO_HDF5:
|
||||
return trexio_hdf5_buffered_write_rdm_two_e(file, size);
|
||||
break;
|
||||
|
||||
case TREXIO_JSON:
|
||||
return trexio_json_buffered_write_rdm_two_e(file, size);
|
||||
break;
|
||||
,*/
|
||||
default:
|
||||
return TREXIO_FAILURE; /* Impossible case */
|
||||
}
|
||||
}
|
||||
#+end_src
|
||||
|
||||
|
||||
* Back ends
|
||||
|
||||
TREXIO has multiple possible back ends:
|
||||
|
||||
- HDF5: The most efficient back-end, by default
|
||||
- Text files: not to be used for production, but useful for debugging
|
||||
- JSON: for portability
|
||||
|
||||
* File suffixes :noxport:
|
||||
|
||||
#+begin_src c :tangle suffix_front.h
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
#+begin_src c :tangle suffix_s_front.h
|
||||
#endif
|
||||
#+end_src
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user