criptic v1
Cosmic Ray Interstellar Propagation Tool using Itô Calculus
Loading...
Searching...
No Matches
ParmParser.H
Go to the documentation of this file.
1
11#ifndef _PARMPARSER_H_
12#define _PARMPARSER_H_
13
14#include <iterator>
15#include <map>
16#include <string>
17#ifdef USE_BOOST
18# include <boost/variant.hpp>
19#else
20# include <variant>
21#endif
22#include <vector>
23#include "../Utils/Types.H"
24#include "../Utils/Vec3.H"
25
26namespace criptic {
27
37 class ParmParser {
38
39 public:
40
41 // Define a type to hold keywords for parameter parsing; use c++17
42 // std::variant by default, or boost::variant as an alterantive
43#ifdef USE_BOOST
44 using keyword = boost::variant<int,
45 Real,
46 std::string,
47 std::vector<int>,
48 std::vector<Real>,
49 std::vector<std::string> >;
50#else
54 using keyword = std::variant<int,
55 Real,
56 std::string,
57 std::vector<int>,
58 std::vector<Real>,
59 std::vector<std::string> >;
60#endif
61
67 ParmParser(int argc, char **argv);
68
70 // Functions to return information from the command line
72
77 bool isRestart() const { return restart; }
78
83 const std::string& restartFile() const { return restartFileName; }
84
86 // Functions to return keyword values
88
98 void get(const std::string& name, int& val) const;
99
109 void get(const std::string& name, Real& val) const;
110
119 void get(const std::string& name, std::string& val) const;
120
131 void get(const std::string& name, std::vector<int>& val) const;
132
143 void get(const std::string& name, std::vector<Real>& val) const;
144
155 void get(const std::string& name, std::vector<std::string>& val) const;
156
167 template<class T>
168 void get(const std::string& name, Vec3<T>& val) const;
169
182 template <class T> bool query(const std::string &name, T& val) const;
183
185 // Other utility functions
187
192 void dumpParams(std::ostream &outFile);
193
197 void warnUnusedKeywords() const;
198
199 private:
200
202 // Internal functions
204
209 void parseFile(std::ifstream &paramFile);
210
219 void parseError(const std::string& line) const;
220
230 void typeError(const std::string& key) const;
231
240 void missingKeyError(const std::string& key) const;
241
249 void printUsage();
250
252 // Private data
254
255 std::map<const std::string,
257 mutable std::map<const std::string,
258 bool> accessed;
261 std::string restartFileName;
262 bool restart;
264 };
265
266}
267
268#endif
269// _PARMPARSER_H_
Class to parse the criptic input deck.
Definition ParmParser.H:37
void warnUnusedKeywords() const
Issue warning if any keywords have not been accessed.
Definition ParmParser.cpp:342
void missingKeyError(const std::string &key) const
Error function invoked if a required keyword is missing.
Definition ParmParser.cpp:521
void get(const std::string &name, int &val) const
Return an integer-valued keyword.
Definition ParmParser.cpp:129
bool restart
Definition ParmParser.H:262
bool query(const std::string &name, T &val) const
Return a keyword, or return false if not available.
Definition ParmParser.cpp:299
std::map< const std::string, keyword > keywords
Definition ParmParser.H:256
void parseError(const std::string &line) const
Error function invoked if input deck fails to parse.
Definition ParmParser.cpp:508
std::variant< int, Real, std::string, std::vector< int >, std::vector< Real >, std::vector< std::string > > keyword
Type corresponding to input deck keywords.
Definition ParmParser.H:59
const std::string & restartFile() const
Name of restart file.
Definition ParmParser.H:83
void dumpParams(std::ostream &outFile)
Write out full list of input parameters.
Definition ParmParser.cpp:322
std::map< const std::string, bool > accessed
Definition ParmParser.H:258
void printUsage()
Print out usage information.
Definition ParmParser.cpp:360
void typeError(const std::string &key) const
Error function invoked if a keyword has an invalid type.
Definition ParmParser.cpp:513
bool isRestart() const
Returns whether this run is a restart.
Definition ParmParser.H:77
void parseFile(std::ifstream &paramFile)
The file parsing function.
Definition ParmParser.cpp:376
std::string restartFileName
Definition ParmParser.H:261
Class that represents a mathematical vector.
Definition Vec3.H:32
The primary namespace for criptic objects.
Definition AdvancePacket.H:25
double Real
Definition Types.H:38