From 1b919575f2128dc76976fd6ccc99322344eec985 Mon Sep 17 00:00:00 2001 From: Tom Henderson Date: Thu, 8 Nov 2007 22:31:54 -0800 Subject: [PATCH] fix bug 100 DefaultValue::Bind for floats --- src/core/default-value.cc | 2 +- src/core/default-value.h | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/core/default-value.cc b/src/core/default-value.cc index 2acb6e97d..cd3ed23a0 100644 --- a/src/core/default-value.cc +++ b/src/core/default-value.cc @@ -381,7 +381,7 @@ DefaultValueTest::RunTests (void) DefaultValue::Bind ("test-c", "257"); NumericDefaultValue x ("test-x", "help-x", 10.0); NumericDefaultValue y ("test-y", "help-y", 10.0); - + DefaultValue::Bind ("test-y", "-3"); EnumDefaultValue e ("test-e", "help-e", MY_ENUM_C, "C", diff --git a/src/core/default-value.h b/src/core/default-value.h index 8d252ab45..f9caac9e4 100644 --- a/src/core/default-value.h +++ b/src/core/default-value.h @@ -219,6 +219,7 @@ private: virtual bool DoParseValue (const std::string &value); virtual std::string DoGetType (void) const; virtual std::string DoGetDefaultValue (void) const; + T RealMin (void) const; T m_defaultValue; T m_minValue; T m_maxValue; @@ -377,7 +378,7 @@ NumericDefaultValue::NumericDefaultValue (std::string name, T defaultValue) : DefaultValueBase (name, help), m_defaultValue (defaultValue), - m_minValue (std::numeric_limits::min ()), + m_minValue (RealMin ()), m_maxValue (std::numeric_limits::max ()), m_value (defaultValue) { @@ -469,6 +470,21 @@ NumericDefaultValue::DoGetDefaultValue (void) const return oss.str (); } +template +T +NumericDefaultValue::RealMin (void) const +{ + if (std::numeric_limits::is_integer) + { + return std::numeric_limits::min (); + } + else + { + return -std::numeric_limits::max (); + } +} + + /************************************************************** **************************************************************/