src/core/double.cc
changeset 2965 4b28e9740e3b
parent 2947 b0fec3381418
child 2969 9d05d2a95dfa
--- 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;