ASL
0.1.7
Advanced Simulation Library
Toggle main menu visibility
Loading...
Searching...
No Matches
src
utilities
aslParametersManager.h
Go to the documentation of this file.
1
/*
2
* Advanced Simulation Library <http://asl.org.il>
3
*
4
* Copyright 2015 Avtech Scientific <http://avtechscientific.com>
5
*
6
*
7
* This file is part of Advanced Simulation Library (ASL).
8
*
9
* ASL is free software: you can redistribute it and/or modify it
10
* under the terms of the GNU Affero General Public License as
11
* published by the Free Software Foundation, version 3 of the License.
12
*
13
* ASL is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU Affero General Public License for more details.
17
*
18
* You should have received a copy of the GNU Affero General Public License
19
* along with ASL. If not, see <http://www.gnu.org/licenses/>.
20
*
21
*/
22
23
24
#ifndef ASLPARAMETERSMANAGER_H
25
#define ASLPARAMETERSMANAGER_H
26
27
#include "
aslUValue.h
"
28
#include <boost/program_options.hpp>
29
#include <map>
30
#include <typeinfo>
31
32
namespace
asl
33
{
34
35
class
PrefixStore;
36
44
template
<
typename
T>
class
Parameter
45
{
46
public
:
61
Parameter
(
const
char
* key_,
62
const
char
* description_,
63
const
char
* units_ =
""
);
77
Parameter
(T defaultValue,
78
const
char
* key_,
79
const
char
* description_,
80
const
char
* units_ =
""
);
81
inline
const
T &
v
()
const
;
82
inline
T &
v
();
83
inline
std::shared_ptr<T>
p
();
84
85
private
:
86
UValue<T>
parameter;
87
const
std::string key;
88
const
std::string description;
89
const
std::string units;
90
};
91
92
97
class
ParametersManager
98
{
99
public
:
100
ParametersManager
();
101
~ParametersManager
();
103
void
enable
();
105
template
<
typename
T>
void
add
(
UValue<T>
parameter,
106
const
char
* key,
107
const
char
* description,
108
const
char
* units);
110
template
<
typename
T>
void
add
(
UValue
<std::map<std::string, T>> parameter,
111
const
char
* key,
112
const
char
* description,
113
const
char
* units);
115
template
<
typename
T>
void
add
(
UValue<T>
parameter,
116
T defaultValue,
117
const
char
* key,
118
const
char
* description,
119
const
char
* units);
122
template
<
typename
T>
123
void
addPrefix
(
const
std::string prefix,
124
std::shared_ptr<std::map<std::string, T>> destinationMap);
127
void
load
(std::string paramFile);
132
std::string
getDir
();
133
134
static
ParametersManager
*
current
;
135
136
protected
:
137
boost::program_options::options_description
parametersOptions
;
138
std::string
parametersFileDirectory
;
141
std::vector<std::shared_ptr<PrefixStore>>
prefixes
;
142
143
void
populateMaps
(boost::program_options::variables_map & vm);
146
void
writeParametersFile
(
const
std::string fileName);
148
std::string
parametersFileStr
;
149
};
150
151
158
class
ApplicationParametersManager
:
public
ParametersManager
159
{
160
public
:
161
ApplicationParametersManager
(
const
char
* applicationName_,
162
const
char
* applicationVersion_);
163
166
void
load
(
int
argc,
char
* argv[]);
167
168
private
:
169
UValue<std::string>
platform;
170
UValue<std::string>
device;
171
std::string applicationName;
172
std::string applicationVersion;
173
};
174
175
176
//-------------------------- Implementation --------------------------
177
178
179
template
<
typename
T>
const
T &
Parameter<T>::v
()
const
180
{
181
return
parameter.
v
();
182
}
183
184
185
template
<
typename
T> T &
Parameter<T>::v
()
186
{
187
return
parameter.v();
188
}
189
190
template
<
typename
T> std::shared_ptr<T>
Parameter<T>::p
()
191
{
192
return
parameter.p;
193
}
194
195
}
//namespace asl
196
#endif
// ASLPARAMETERSMANAGER_H
aslUValue.h
asl::ApplicationParametersManager::ApplicationParametersManager
ApplicationParametersManager(const char *applicationName_, const char *applicationVersion_)
asl::ApplicationParametersManager::load
void load(int argc, char *argv[])
asl::Parameter::v
const T & v() const
Definition
aslParametersManager.h:179
asl::Parameter::p
std::shared_ptr< T > p()
Definition
aslParametersManager.h:190
asl::Parameter::Parameter
Parameter(const char *key_, const char *description_, const char *units_="")
asl::Parameter::Parameter
Parameter(T defaultValue, const char *key_, const char *description_, const char *units_="")
asl::ParametersManager::populateMaps
void populateMaps(boost::program_options::variables_map &vm)
asl::ParametersManager::load
void load(std::string paramFile)
asl::ParametersManager::getDir
std::string getDir()
asl::ParametersManager::~ParametersManager
~ParametersManager()
asl::ParametersManager::ParametersManager
ParametersManager()
asl::ParametersManager::add
void add(UValue< T > parameter, T defaultValue, const char *key, const char *description, const char *units)
Adds a Parameter with a default value to ParametersManager.
asl::ParametersManager::parametersFileStr
std::string parametersFileStr
Content of the parameters file.
Definition
aslParametersManager.h:148
asl::ParametersManager::parametersOptions
boost::program_options::options_description parametersOptions
Definition
aslParametersManager.h:137
asl::ParametersManager::add
void add(UValue< std::map< std::string, T > > parameter, const char *key, const char *description, const char *units)
Adds a group of parameters with common prefix to ParametersManager.
asl::ParametersManager::add
void add(UValue< T > parameter, const char *key, const char *description, const char *units)
Adds a Parameter to ParametersManager.
asl::ParametersManager::current
static ParametersManager * current
Definition
aslParametersManager.h:134
asl::ParametersManager::addPrefix
void addPrefix(const std::string prefix, std::shared_ptr< std::map< std::string, T > > destinationMap)
asl::ParametersManager::prefixes
std::vector< std::shared_ptr< PrefixStore > > prefixes
Definition
aslParametersManager.h:141
asl::ParametersManager::parametersFileDirectory
std::string parametersFileDirectory
Definition
aslParametersManager.h:138
asl::ParametersManager::writeParametersFile
void writeParametersFile(const std::string fileName)
asl::ParametersManager::enable
void enable()
Enables parameter loader.
asl::UValue
Updatable value. This class stores value and its TimeStamp.
Definition
aslUValue.h:35
asl::UValue::v
const T & v() const
Definition
aslUValue.h:43
asl
Advanced Simulation Library.
Definition
aslDataInc.h:31
Generated by
1.17.0