Removed this ugly defaulting to 1 behaviour and solved it using template specialization
This commit is contained in:
parent
207698fcc8
commit
6893a8565d
2 changed files with 15 additions and 3 deletions
|
|
@ -169,6 +169,21 @@ private :
|
||||||
ValueType repValue;
|
ValueType repValue;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// Specialized setValue for bool
|
||||||
|
template <>
|
||||||
|
void eoValueParam<bool>::setValue(std::string _value)
|
||||||
|
{
|
||||||
|
if (_value.empty())
|
||||||
|
{
|
||||||
|
repValue = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::istrstream is(_value.c_str());
|
||||||
|
is >> repValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Because MSVC does not support partial specialization, the pair is a double, not a T
|
/// Because MSVC does not support partial specialization, the pair is a double, not a T
|
||||||
template <>
|
template <>
|
||||||
std::string eoValueParam<std::pair<double, double> >::getValue(void) const
|
std::string eoValueParam<std::pair<double, double> >::getValue(void) const
|
||||||
|
|
|
||||||
|
|
@ -79,9 +79,6 @@ void eoParser::doRegisterParam(eoParam& param) const
|
||||||
|
|
||||||
if (value.first)
|
if (value.first)
|
||||||
{
|
{
|
||||||
if (value.second == "") // it is there, but no value is given, default to "1"
|
|
||||||
value.second = "1"; // for bool
|
|
||||||
|
|
||||||
param.setValue(value.second);
|
param.setValue(value.second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue