From bae023c07584264ef414b0fe71c9fea7950f9050 Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Mon, 14 May 2007 11:11:30 +0200 Subject: [PATCH] add a few features to IntegerDefaultValue --- src/core/default-value.h | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/core/default-value.h b/src/core/default-value.h index eea46dc39..fbf34940d 100644 --- a/src/core/default-value.h +++ b/src/core/default-value.h @@ -144,6 +144,20 @@ public: IntegerDefaultValue (std::string name, std::string help, T defaultValue); + /** + * \param name the name of the variable + * \param help help text which explains the purpose + * and the semantics of this variable + * \param defaultValue the default value assigned to this + * variable + * \param minValue the minimum value which can be set + * in this variable + */ + IntegerDefaultValue (std::string name, + std::string help, + T defaultValue, + T minValue); + /** * \param name the name of the variable * \param help help text which explains the purpose @@ -161,6 +175,7 @@ public: T minValue, T maxValue); + void SetValue (T v); T GetValue (void) const; private: @@ -310,6 +325,23 @@ IntegerDefaultValue::IntegerDefaultValue (std::string name, m_value (defaultValue) { DefaultValueList::Add (this); + NS_ASSERT (m_minValue < m_maxValue); +} +template +IntegerDefaultValue::IntegerDefaultValue (std::string name, + std::string help, + T defaultValue, + T minValue) + : DefaultValueBase (name, help), + m_defaultValue (defaultValue), + m_minValue (minValue), + m_maxValue (std::numeric_limits::max ()), + m_value (defaultValue) +{ + DefaultValueList::Add (this); + NS_ASSERT (m_minValue < m_maxValue); + NS_ASSERT (m_defaultValue <= m_maxValue && + m_defaultValue >= m_minValue); } template IntegerDefaultValue::IntegerDefaultValue (std::string name, @@ -324,10 +356,20 @@ IntegerDefaultValue::IntegerDefaultValue (std::string name, m_value (defaultValue) { DefaultValueList::Add (this); + NS_ASSERT (m_minValue < m_maxValue); NS_ASSERT (m_defaultValue <= m_maxValue && m_defaultValue >= m_minValue); } +template +void +IntegerDefaultValue::SetValue (T v) +{ + NS_ASSERT (v <= m_maxValue && + v >= m_minValue); + m_value = v; +} + template T IntegerDefaultValue::GetValue (void) const