| Directory: | ./ |
|---|---|
| File: | tmp_project/DataStream/src/data_file.h |
| Date: | 2024-12-09 11:00:39 |
| Exec | Total | Coverage | |
|---|---|---|---|
| Lines: | 28 | 28 | 100.0% |
| Branches: | 14 | 15 | 93.3% |
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /*************************************** | ||
| 2 | Auteur : Pierre Aubert | ||
| 3 | Mail : pierre.aubert@lapp.in2p3.fr | ||
| 4 | Licence : CeCILL-C | ||
| 5 | ****************************************/ | ||
| 6 | |||
| 7 | #ifndef __DATA_FILE_H__ | ||
| 8 | #define __DATA_FILE_H__ | ||
| 9 | |||
| 10 | #include "data_stream.h" | ||
| 11 | |||
| 12 | ///Save data in a message | ||
| 13 | /** @param[out] iter : message to be written | ||
| 14 | * @param data : data to be saved in the message | ||
| 15 | * @return true on success, false otherwise | ||
| 16 | */ | ||
| 17 | template<typename T> | ||
| 18 | bool data_save(FILE* iter, const T & data){ | ||
| 19 | return DataStream<FILE*, DataStreamMode::WRITE, T>::data_stream(iter, (T&)data); | ||
| 20 | } | ||
| 21 | |||
| 22 | ///Save data in a message | ||
| 23 | /** @param[out] iter : message to be written | ||
| 24 | * @param data : data to be saved in the message | ||
| 25 | * @param nbElement : number of elements in the data | ||
| 26 | * @return true on success, false otherwise | ||
| 27 | */ | ||
| 28 | template<typename T> | ||
| 29 | bool data_save(FILE* iter, const T * data, size_t nbElement){ | ||
| 30 | return DataStream<FILE*, DataStreamMode::WRITE, T>::data_stream(iter, (T*)data, nbElement); | ||
| 31 | } | ||
| 32 | |||
| 33 | ///Load data from a message | ||
| 34 | /** @param[out] iter : message to be read | ||
| 35 | * @param[out] data : data to be loaded from the message | ||
| 36 | * @return true on success, false otherwise | ||
| 37 | */ | ||
| 38 | template<typename T> | ||
| 39 | bool data_load(FILE* iter, T & data){ | ||
| 40 | return DataStream<FILE*, DataStreamMode::READ, T>::data_stream(iter, data); | ||
| 41 | } | ||
| 42 | |||
| 43 | ///Load data from a message | ||
| 44 | /** @param[out] iter : message to be read | ||
| 45 | * @param[out] data : data to be loaded from the message | ||
| 46 | * @param nbElement : number of elements in the data | ||
| 47 | * @return true on success, false otherwise | ||
| 48 | */ | ||
| 49 | template<typename T> | ||
| 50 | bool data_load(FILE* iter, T * data, size_t nbElement){ | ||
| 51 | return DataStream<FILE*, DataStreamMode::READ, T>::data_stream(iter, data, nbElement); | ||
| 52 | } | ||
| 53 | |||
| 54 | ///Save data in a message | ||
| 55 | /** @param fileName : name of the file to be written | ||
| 56 | * @param data : data to be saved in the message | ||
| 57 | * @return true on success, false otherwise | ||
| 58 | */ | ||
| 59 | template<typename T> | ||
| 60 | 1097 | bool data_save(const std::string & fileName, const T & data){ | |
| 61 |
1/1✓ Branch 2 taken 549 times.
|
1097 | FILE* iter = fopen(fileName.c_str(), "w"); |
| 62 |
2/2✓ Branch 0 taken 133 times.
✓ Branch 1 taken 416 times.
|
1097 | if(iter == NULL){ |
| 63 | 266 | return false; | |
| 64 | } | ||
| 65 |
1/1✓ Branch 1 taken 416 times.
|
831 | bool b(DataStream<FILE*, DataStreamMode::WRITE, T>::data_stream(iter, (T&)data)); |
| 66 |
1/1✓ Branch 1 taken 416 times.
|
831 | fclose(iter); |
| 67 | 831 | return b; | |
| 68 | } | ||
| 69 | |||
| 70 | ///Save data in a message | ||
| 71 | /** @param fileName : name of the file to be written | ||
| 72 | * @param data : data to be saved in the message | ||
| 73 | * @param nbElement : number of elements in the data | ||
| 74 | * @return true on success, false otherwise | ||
| 75 | */ | ||
| 76 | template<typename T> | ||
| 77 | 4312 | bool data_save(const std::string & fileName, const T * data, size_t nbElement){ | |
| 78 |
1/1✓ Branch 2 taken 2156 times.
|
4312 | FILE* iter = fopen(fileName.c_str(), "w"); |
| 79 |
2/2✓ Branch 0 taken 1078 times.
✓ Branch 1 taken 1078 times.
|
4312 | if(iter == NULL){ |
| 80 | 2156 | return false; | |
| 81 | } | ||
| 82 |
1/1✓ Branch 1 taken 1078 times.
|
2156 | bool b(DataStream<FILE*, DataStreamMode::WRITE, T>::data_stream(iter, (T*)data, nbElement)); |
| 83 |
1/1✓ Branch 1 taken 1078 times.
|
2156 | fclose(iter); |
| 84 | 2156 | return b; | |
| 85 | } | ||
| 86 | |||
| 87 | ///Load data from a message | ||
| 88 | /** @param fileName : name of the file to be read | ||
| 89 | * @param[out] data : data to be loaded from the message | ||
| 90 | * @return true on success, false otherwise | ||
| 91 | */ | ||
| 92 | template<typename T> | ||
| 93 | 550 | bool data_load(const std::string & fileName, T & data){ | |
| 94 |
1/1✓ Branch 2 taken 1 times.
|
550 | FILE* iter = fopen(fileName.c_str(), "r"); |
| 95 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
550 | if(iter == NULL){ |
| 96 | 141 | return false; | |
| 97 | } | ||
| 98 |
1/1✓ Branch 1 taken 1 times.
|
409 | bool b(DataStream<FILE*, DataStreamMode::READ, T>::data_stream(iter, data)); |
| 99 |
1/1✓ Branch 1 taken 1 times.
|
409 | fclose(iter); |
| 100 | 409 | return b; | |
| 101 | } | ||
| 102 | |||
| 103 | ///Load data from a message | ||
| 104 | /** @param fileName : name of the file to be read | ||
| 105 | * @param[out] data : data to be loaded from the message | ||
| 106 | * @param nbElement : number of elements in the data | ||
| 107 | * @return true on success, false otherwise | ||
| 108 | */ | ||
| 109 | template<typename T> | ||
| 110 | 2156 | bool data_load(const std::string & fileName, T * data, size_t nbElement){ | |
| 111 | 2156 | FILE* iter = fopen(fileName.c_str(), "r"); | |
| 112 | 2156 | if(iter == NULL){ | |
| 113 | 1078 | return false; | |
| 114 | } | ||
| 115 | 1078 | bool b(DataStream<FILE*, DataStreamMode::READ, T>::data_stream(iter, data, nbElement)); | |
| 116 | 1078 | fclose(iter); | |
| 117 | 1078 | return b; | |
| 118 | } | ||
| 119 | |||
| 120 | #endif | ||
| 121 |