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;
|
||||
};
|
||||
|
||||
/// 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
|
||||
template <>
|
||||
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.second == "") // it is there, but no value is given, default to "1"
|
||||
value.second = "1"; // for bool
|
||||
|
||||
param.setValue(value.second);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue