1 #pragma once
2 
3 #include <fstream>
4 
5 namespace phosphor
6 {
7 namespace time
8 {
9 namespace utils
10 {
11 
12 /** @brief Read data with type T from file
13  *
14  * @param[in] fileName - The name of file to read from
15  *
16  * @return The data with type T
17  */
18 template <typename T>
19 T readData(const char* fileName)
20 {
21     T data{};
22     std::ifstream fs(fileName);
23     if (fs.is_open())
24     {
25         fs >> data;
26     }
27     return data;
28 }
29 
30 /** @brief Write data with type T to file
31  *
32  * @param[in] fileName - The name of file to write to
33  * @param[in] data - The data with type T to write to file
34  */
35 template <typename T>
36 void writeData(const char* fileName, T&& data)
37 {
38     std::ofstream fs(fileName, std::ios::out);
39     if (fs.is_open())
40     {
41         fs << std::forward<T>(data);
42     }
43 }
44 
45 }
46 }
47 }
48