15 : _intParams{std::move(params._intParams)}, _doubleParams{std::move(params._doubleParams)},
16 _stringParams{std::move(params._stringParams)}, _boolParams{std::move(params._boolParams)},
17 _vectIntParams{std::move(params._vectIntParams)}, _vectDoubleParams{std::move(params._vectDoubleParams)},
18 _vectStringParams{std::move(params._vectStringParams)}, _vectBoolParams{std::move(params._vectBoolParams)} {}
20 template <>
void GGSParameters::SetParam<int>(
const std::string &name,
int value) {
21 if (!(_intParams.insert(std::make_pair(name, value)).second)) {
22 throw std::runtime_error(std::string(
"Can't set integer parameter \"") + name + (
"\""));
26 template <>
void GGSParameters::SetParam<double>(
const std::string &name,
double value) {
27 if (!(_doubleParams.insert(std::make_pair(name, value)).second)) {
28 throw std::runtime_error(std::string(
"Can't set double parameter \"") + name + (
"\""));
32 template <>
void GGSParameters::SetParam<bool>(
const std::string &name,
bool value) {
33 if (!(_boolParams.insert(std::make_pair(name, value)).second)) {
34 throw std::runtime_error(std::string(
"Can't set boolean parameter \"") + name + (
"\""));
38 template <>
void GGSParameters::SetParam<std::string>(
const std::string &name, std::string value) {
39 if (!(_stringParams.insert(std::make_pair(name, std::move(value))).second)) {
40 throw std::runtime_error(std::string(
"Can't set string parameter \"") + name + (
"\""));
44 template <>
void GGSParameters::SetParam<std::vector<int>>(
const std::string &name, std::vector<int> value) {
45 if (!(_vectIntParams.insert(std::make_pair(name, std::move(value))).second)) {
46 throw std::runtime_error(std::string(
"Can't set vector-of-integers parameter \"") + name + (
"\""));
50 template <>
void GGSParameters::SetParam<std::vector<double>>(
const std::string &name, std::vector<double> value) {
51 if (!(_vectDoubleParams.insert(std::make_pair(name, std::move(value))).second)) {
52 throw std::runtime_error(std::string(
"Can't set vector-of-doubles parameter \"") + name + (
"\""));
56 template <>
void GGSParameters::SetParam<std::vector<bool>>(
const std::string &name, std::vector<bool> value) {
57 if (!(_vectBoolParams.insert(std::make_pair(name, std::move(value))).second)) {
58 throw std::runtime_error(std::string(
"Can't set vector-of-booleans parameter \"") + name + (
"\""));
63 void GGSParameters::SetParam<std::vector<std::string>>(
const std::string &name, std::vector<std::string> value) {
64 if (!(_vectStringParams.insert(std::make_pair(name, std::move(value))).second)) {
65 throw std::runtime_error(std::string(
"Can't set vector-of-strings parameter \"") + name + (
"\""));
69 template <>
int GGSParameters::GetParam<int>(
const std::string &name)
const {
70 auto valueIter = _intParams.find(name);
71 if (valueIter == _intParams.end()) {
72 throw(std::runtime_error(std::string(
"Can't find integer parameter \"").append(name).append(
"\"")));
74 return valueIter->second;
77 template <>
double GGSParameters::GetParam<double>(
const std::string &name)
const {
78 auto valueIter = _doubleParams.find(name);
79 if (valueIter == _doubleParams.end()) {
80 throw(std::runtime_error(std::string(
"Can't find real parameter \"").append(name).append(
"\"")));
82 return valueIter->second;
85 template <>
bool GGSParameters::GetParam<bool>(
const std::string &name)
const {
86 auto valueIter = _boolParams.find(name);
87 if (valueIter == _boolParams.end()) {
88 throw(std::runtime_error(std::string(
"Can't find boolean parameter \"").append(name).append(
"\"")));
90 return valueIter->second;
93 template <> std::string GGSParameters::GetParam<std::string>(
const std::string &name)
const {
94 auto valueIter = _stringParams.find(name);
95 if (valueIter == _stringParams.end()) {
96 throw(std::runtime_error(std::string(
"Can't find string parameter \"").append(name).append(
"\"")));
98 return valueIter->second;
101 template <> std::vector<int> GGSParameters::GetParam<std::vector<int>>(
const std::string &name)
const {
102 auto valueIter = _vectIntParams.find(name);
103 if (valueIter == _vectIntParams.end()) {
104 throw(std::runtime_error(std::string(
"Can't find vector-of-integers parameter \"").append(name).append(
"\"")));
106 return valueIter->second;
109 template <> std::vector<double> GGSParameters::GetParam<std::vector<double>>(
const std::string &name)
const {
110 auto valueIter = _vectDoubleParams.find(name);
111 if (valueIter == _vectDoubleParams.end()) {
112 throw(std::runtime_error(std::string(
"Can't find vector-of-reals parameter \"").append(name).append(
"\"")));
114 return valueIter->second;
117 template <> std::vector<bool> GGSParameters::GetParam<std::vector<bool>>(
const std::string &name)
const {
118 auto valueIter = _vectBoolParams.find(name);
119 if (valueIter == _vectBoolParams.end()) {
120 throw(std::runtime_error(std::string(
"Can't find vector-of-booleans parameter \"").append(name).append(
"\"")));
122 return valueIter->second;
125 template <> std::vector<std::string> GGSParameters::GetParam<std::vector<std::string>>(
const std::string &name)
const {
126 auto valueIter = _vectStringParams.find(name);
127 if (valueIter == _vectStringParams.end()) {
128 throw(std::runtime_error(std::string(
"Can't find vector-of-strings parameter \"").append(name).append(
"\"")));
130 return valueIter->second;
136 return ((_intParams == params._intParams) && (_doubleParams == params._doubleParams) &&
137 (_stringParams == params._stringParams) && (_boolParams == params._boolParams) &&
138 (_vectIntParams == params._vectIntParams) && (_vectDoubleParams == params._vectDoubleParams) &&
139 (_vectStringParams == params._vectStringParams) && (_vectBoolParams == params._vectBoolParams));
143 _intParams = rhs._intParams;
144 _doubleParams = rhs._doubleParams;
145 _stringParams = rhs._stringParams;
146 _boolParams = rhs._boolParams;
147 _vectIntParams = rhs._vectIntParams;
148 _vectDoubleParams = rhs._vectDoubleParams;
149 _vectStringParams = rhs._vectStringParams;
150 _vectBoolParams = rhs._vectBoolParams;
bool AreSameParamsAs(const GGSParameters ¶ms) const
Compares two parameter objects.
Class for storing parameters.
GGSParameters & operator=(const GGSParameters &rhs)
Assignment operator.
GGSParameters()
Default constructor.