begin of config file parsing
Stefan Schuermans authored 7 years ago
|
1) /*
2) * EtherPix simulator
3) *
4) * Copyright 2017 Stefan Schuermans <stefan schuermans info>
5) *
6) * This program is free software: you can redistribute it and/or modify
7) * it under the terms of the GNU General Public License as published by
8) * the Free Software Foundation, version 3 of the License.
9) *
10) *
11) * This program is distributed in the hope that it will be useful,
12) * but WITHOUT ANY WARRANTY; without even the implied warranty of
13) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14) * GNU General Public License for more details.
15) *
16) * You should have received a copy of the GNU Lesser General Public License
17) * along with this program. If not, see <http://www.gnu.org/licenses/>.
18) */
19)
20) #ifndef CONFIG_H
21) #define CONFIG_H
22)
|
continue implementing confi...
Stefan Schuermans authored 7 years ago
|
23) #include <map>
|
begin of config file parsing
Stefan Schuermans authored 7 years ago
|
24) #include <string>
25) #include <vector>
26)
|
continue implementing confi...
Stefan Schuermans authored 7 years ago
|
27) #include "distri.h"
28)
|
begin of config file parsing
Stefan Schuermans authored 7 years ago
|
29) /// config file
30) class Config
31) {
32) public:
33) /**
34) * @brief constructor
35) * @param[in] configFile name of config file
36) */
37) Config(std::string const &configFile);
38)
|
continue implementing confi...
Stefan Schuermans authored 7 years ago
|
39) protected:
40) /// distributor map: distributor number -> distributor object
41) typedef std::map<unsigned long, Distri> DistriMap;
42)
|
begin of config file parsing
Stefan Schuermans authored 7 years ago
|
43) protected:
44) /**
45) * @brief remove whitespace at beging and end of string
46) * @param[in,out] str string to process
47) */
48) static void trim(std::string &str);
49)
50) /**
51) * @brief split string at sequences of whitespace
52) * @param[in] str string to split
53) * @param[out] fields fields of string
54) */
55) static void split(std::string const &str, std::vector<std::string> &fields);
56)
|
continue implementing confi...
Stefan Schuermans authored 7 years ago
|
57) /**
58) * @brief split string at specific character
59) * @param[in] str string to split
60) * @param[in] delim delimiter character
61) * @param[out] fields fields of string
62) */
63) static void split_chr(std::string const &str, char delim,
64) std::vector<std::string> &fields);
65)
66) /**
67) * @brief convert string to unsigned long
68) * @param[in] str string to convert
69) * @return unsigned long parsed from string
70) * @throws std::exception in case of error
71) */
72) static unsigned long str2ul(std::string const &str);
73)
74) /**
75) * @brief convert string to two unsigned longs
76) * @param[in] str string containing two comma-separated unsigned integers
77) * @param[out] ul1 first unsigned long parsed from string
78) * @param[out] ul2 second unsigned long parsed from string
79) * @throws std::exception in case of error
80) */
81) static void str2ul2(std::string const &str,
82) unsigned long &ul1, unsigned long &ul2);
83)
84) /**
85) * @brief convert string to double (using the decimal dot for any locale)
86) * @param[in] str string to convert
87) * @return double parsed from string
88) * @throws std::exception in case of error
89) */
90) static double str2d(std::string const &str);
91)
92) /**
93) * @brief convert string to three doubles (decimal dot for any locale)
94) * @param[in] str string containing three comma-separated doubles
95) * @param[out] d1 first double parsed from string
96) * @param[out] d2 second double parsed from string
97) * @param[out] d3 third double parsed from string
98) * @throws std::exception in case of error
99) */
100) static void str2d3(std::string const &str,
101) double &d1, double &d2, double &d3);
102)
|
begin of config file parsing
Stefan Schuermans authored 7 years ago
|
103) /**
104) * @brief read config file
105) * @param[in] configFile name of config file
106) * @throws std::exception in case of error
107) */
108) void readFile(std::string const &configFile);
109)
110) /**
111) * @brief process line from config file
112) * @param[in] line line to process
113) * @throws std::exception in case of error
114) */
115) void procLine(std::string line);
116)
117) /**
118) * @brief process setting from config file
119) * @param[in] setting name of the setting
120) * @param[in] value value for setting
121) * @throws std::exception in case of error
122) */
123) void procSetting(std::string const &setting, std::string const &value);
124)
|
continue implementing confi...
Stefan Schuermans authored 7 years ago
|
125) /**
126) * @brief process distributor line from config file
127) * @param[in] setFields fields of the setting parts
128) * @param[in] valFields fields of the value part
129) * @throws std::exception in case of error
130) */
131) void proc_distributor(std::vector<std::string> const &setFields,
132) std::vector<std::string> const &valFields);
133)
134) /**
135) * @brief process distributorAddr line from config file
136) * @param[in] setFields fields of the setting parts
137) * @param[in] valFields fields of the value part
138) * @throws std::exception in case of error
139) */
140) void proc_distributorAddr(std::vector<std::string> const &setFields,
141) std::vector<std::string> const &valFields);
142)
143) /**
144) * @brief process mapping line from config file
145) * @param[in] setFields fields of the setting parts
146) * @param[in] valFields fields of the value part
147) * @throws std::exception in case of error
148) */
149) void proc_mapping(std::vector<std::string> const &setFields,
150) std::vector<std::string> const &valFields);
151)
152) /**
153) * @brief process output line from config file
154) * @param[in] setFields fields of the setting parts
155) * @param[in] valFields fields of the value part
156) * @throws std::exception in case of error
157) */
158) void proc_output(std::vector<std::string> const &setFields,
159) std::vector<std::string> const &valFields);
160)
161) /**
162) * @brief get distributor
163) * @param[in] strDistno distributor number as string
164) * @return reference to distributor object in map
165) * @throws std::exception in case of error
166) */
167) Distri & getDistri(std::string const &strDistno);
168)
169) /**
170) * @brief get distributor
171) * @param[in] distno distributor number
172) * @return reference to distributor object in map
173) * @throws std::exception in case of error
174) */
175) Distri & getDistri(unsigned long distno);
176)
177) protected:
178) /// distributors
179) DistriMap m_distriMap;
|