24 #ifndef ASLPARAMETERSMANAGER_H 25 #define ASLPARAMETERSMANAGER_H 28 #include <boost/program_options.hpp> 44 template <
typename T>
class Parameter
62 const char* description_,
63 const char* units_ =
"");
79 const char* description_,
80 const char* units_ =
"");
81 inline const T &
v()
const;
87 const std::string key;
88 const std::string description;
89 const std::string units;
97 class ParametersManager
101 ~ParametersManager();
105 template <
typename T>
void add(UValue<T> parameter,
107 const char* description,
110 template <
typename T>
void add(UValue<std::map<std::string, T>> parameter,
112 const char* description,
115 template <
typename T>
void add(UValue<T> parameter,
118 const char* description,
122 template <
typename T>
123 void addPrefix(
const std::string prefix,
127 void load(std::string paramFile);
132 std::string getDir();
134 static ParametersManager * current;
137 boost::program_options::options_description parametersOptions;
138 std::string parametersFileDirectory;
141 std::vector<std::shared_ptr<PrefixStore>> prefixes;
143 void populateMaps(boost::program_options::variables_map & vm);
146 void writeParametersFile(
const std::string fileName);
148 std::string parametersFileStr;
158 class ApplicationParametersManager:
public ParametersManager
161 ApplicationParametersManager(
const char* applicationName_,
162 const char* applicationVersion_);
166 void load(
int argc,
char* argv[]);
169 UValue<std::string> platform;
170 UValue<std::string> device;
171 std::string applicationName;
172 std::string applicationVersion;
181 return parameter.v();
187 return parameter.v();
196 #endif // ASLPARAMETERSMANAGER_H Advanced Simulation Library.
Parameter(const char *key_, const char *description_, const char *units_="")