--- a/src/core/double.cc Mon Apr 14 16:19:17 2008 -0700
+++ b/src/core/double.cc Thu Apr 17 13:42:25 2008 -0700
@@ -23,40 +23,7 @@
namespace ns3 {
-Double::Double ()
-{}
-Double::Double (double value)
- : m_value (value)
-{}
-void
-Double::Set (double value)
-{
- m_value = value;
-}
-double
-Double::Get (void) const
-{
- return m_value;
-}
-Double::operator double () const
-{
- return m_value;
-}
-std::ostream & operator << (std::ostream &os, const Double &value)
-{
- os << value.Get ();
- return os;
-}
-std::istream & operator >> (std::istream &is, Double &value)
-{
- double v;
- is >> v;
- value.Set (v);
- return is;
-}
-
-ATTRIBUTE_VALUE_IMPLEMENT (Double);
-ATTRIBUTE_CONVERTER_IMPLEMENT (Double);
+ATTRIBUTE_VALUE_IMPLEMENT_WITH_NAME (double, Double);
namespace internal {
@@ -68,8 +35,8 @@
: m_minValue (minValue),
m_maxValue (maxValue),
m_name (name) {}
- virtual bool Check (Attribute value) const {
- const DoubleValue *v = value.DynCast<const DoubleValue *> ();
+ virtual bool Check (const AttributeValue &value) const {
+ const DoubleValue *v = dynamic_cast<const DoubleValue *> (&value);
if (v == 0)
{
return false;
@@ -87,8 +54,18 @@
oss << m_minValue << ":" << m_maxValue;
return oss.str ();
}
- virtual Attribute Create (void) const {
- return Attribute (ns3::Create<DoubleValue> ());
+ virtual Ptr<AttributeValue> Create (void) const {
+ return ns3::Create<DoubleValue> ();
+ }
+ virtual bool Copy (const AttributeValue &source, AttributeValue &destination) const {
+ const DoubleValue *src = dynamic_cast<const DoubleValue *> (&source);
+ DoubleValue *dst = dynamic_cast<DoubleValue *> (&destination);
+ if (src == 0 || dst == 0)
+ {
+ return false;
+ }
+ *dst = *src;
+ return true;
}
double m_minValue;
double m_maxValue;