IT++ 4.3.1
parser.h
Go to the documentation of this file.
1
30
31#ifndef PARSER_H
32#define PARSER_H
33
34// #define MAX_STR_LEN 4096
35
36#include <itpp/base/vec.h>
37#include <itpp/base/mat.h>
38#include <itpp/base/array.h>
39#include <iostream>
40#include <itpp/itexports.h>
41
42namespace itpp
43{
45
46#if (defined(_MSC_VER) && defined(ITPP_SHARED_LIB))
47//MSVC explicitely instantiate required template while building the shared library
48template class ITPP_EXPORT Array<std::string>;
49#endif
50
52
99
110
111class ITPP_EXPORT Parser
112{
113public:
114
116 Parser();
117
119 Parser(const std::string &filename);
120
122 Parser(int argc, char *argv[]);
123
125 Parser(const std::string &filename, int argc, char *argv[]);
126
128 Parser(const Array<std::string> &setup);
129
131 void init(const std::string &filename);
132
134 void init(int argc, char *argv[]);
135
137 void init(const std::string &filename, int argc, char *argv[]);
138
140 void init(const Array<std::string> &setup);
141
143 void set_silentmode(bool v = true);
144
146 bool exist(const std::string &name);
147
149 template<class T>
150 bool get(T &var, const std::string &name, int num = -1);
151
153 bool get_bool(const std::string &name, int num = -1);
154
156 int get_int(const std::string &name, int num = -1);
157
159 double get_double(const std::string &name, int num = -1);
160
162 std::string get_string(const std::string &name, int num = -1);
163
165 vec get_vec(const std::string &name, int num = -1);
166
168 ivec get_ivec(const std::string &name, int num = -1);
169
171 svec get_svec(const std::string &name, int num = -1);
172
174 bvec get_bvec(const std::string &name, int num = -1);
175
177 mat get_mat(const std::string &name, int num = -1);
178
180 imat get_imat(const std::string &name, int num = -1);
181
183 smat get_smat(const std::string &name, int num = -1);
184
186 bmat get_bmat(const std::string &name, int num = -1);
187
188protected:
189
190private:
191
193 std::string findname(const std::string &name,
194 bool &error_flag,
195 bool &print_flag,
196 int num = 0,
197 bool keep_brackets = false);
198
199 void pre_parsing(void);
200
201 Array<std::string> SetupStrings;
202
203 bool VERBOSE;
204};
205
206// ----------------------- Implementation starts here -----------------------
207
208template<class T>
209bool Parser::get(T &var, const std::string &name, int num)
210{
211 bool error_flag, print_flag;
212 std::string str = findname(name, error_flag, print_flag, num, true);
213 std::istringstream buffer(str);
214 if (error_flag) {
215 if (VERBOSE) {
216 std::cout << name << " = " << var << ";" << std::endl;
217 }
218 }
219 else {
220 buffer >> var;
221 if (print_flag) {
222 std::cout << name << " = " << var << std::endl;
223 }
224 else if (VERBOSE) {
225 std::cout << name << " = " << var << ";" << std::endl;
226 }
227 }
228 return !error_flag;
229}
230
232template<>
233ITPP_EXPORT bool Parser::get(std::string &var, const std::string &name, int num);
235template<>
236ITPP_EXPORT bool Parser::get(int &var, const std::string &name, int num);
238template<>
239ITPP_EXPORT bool Parser::get(bool &var, const std::string &name, int num);
240
241} // namespace itpp
242
243#endif // #ifndef PARSER_H
Definition of Array class (container)
General array class.
Definition array.h:105
double get_double(const std::string &name, int num=-1)
Interpret variable name as a double.
Definition parser.cpp:459
void set_silentmode(bool v=true)
Sets silent mode if true, or verbose mode if false.
Definition parser.cpp:330
svec get_svec(const std::string &name, int num=-1)
Interpret variable name as a svec.
Definition parser.cpp:500
mat get_mat(const std::string &name, int num=-1)
Interpret variable name as a mat.
Definition parser.cpp:520
int get_int(const std::string &name, int num=-1)
Interpret variable name as an integer.
Definition parser.cpp:445
ivec get_ivec(const std::string &name, int num=-1)
Interpret variable name as a ivec.
Definition parser.cpp:490
bvec get_bvec(const std::string &name, int num=-1)
Interpret variable name as a bvec.
Definition parser.cpp:510
imat get_imat(const std::string &name, int num=-1)
Interpret variable name as a imat.
Definition parser.cpp:530
bool get_bool(const std::string &name, int num=-1)
Interpret variable name as a bool.
Definition parser.cpp:425
void init(const std::string &filename)
Initialization function. Sets input file name.
Definition parser.cpp:272
Parser()
Default Constructor.
Definition parser.cpp:42
smat get_smat(const std::string &name, int num=-1)
Interpret variable name as a smat.
Definition parser.cpp:540
std::string get_string(const std::string &name, int num=-1)
Interpret variable name as a string.
Definition parser.cpp:470
bool get(T &var, const std::string &name, int num=-1)
Get variable value if name can be found (and return true), otherwise keep old value (and return false...
Definition parser.h:209
bool exist(const std::string &name)
Check is name exists in the file. Returns true if the name is found and false otherwise.
Definition parser.cpp:335
vec get_vec(const std::string &name, int num=-1)
Interpret variable name as a vec.
Definition parser.cpp:480
bmat get_bmat(const std::string &name, int num=-1)
Interpret variable name as a bmat.
Definition parser.cpp:550
Matrix Class Definitions.
Mat< bin > bmat
bin matrix
Definition mat.h:508
itpp namespace
Definition itmex.h:37
Templated Vector Class Definitions.