param-spec-helper.h -> attribute-accessor-helper.h
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 21 Feb 2008 18:44:27 +0100
changeset 2449 30127bc12056
parent 2448 ba80c489f8cf
child 2450 3ad8ebe70756
param-spec-helper.h -> attribute-accessor-helper.h
src/core/attribute-accessor-helper.h
src/core/enum-value.h
src/core/param-spec-helper.h
src/core/value-helper.h
src/core/wscript
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/core/attribute-accessor-helper.h	Thu Feb 21 18:44:27 2008 +0100
@@ -0,0 +1,192 @@
+#ifndef ATTRIBUTE_ACCESSOR_HELPER_H
+#define ATTRIBUTE_ACCESSOR_HELPER_H
+
+namespace ns3 {
+
+template <typename BASE, typename V, typename T1>
+Ptr<const AttributeAccessor>
+MakeAccessorHelper (T1 a1);
+
+template <typename BASE, typename V, typename T1, typename T2>
+Ptr<const AttributeAccessor>
+MakeAccessorHelper (T1 a1, T2 a2);
+
+} // namespace ns3
+
+/***************************************************************
+ *        The implementation of the above functions.
+ ***************************************************************/
+
+#include "type-traits.h"
+
+namespace ns3 {
+
+template <typename BASE, typename T, typename U>
+class AccessorHelper : public BASE
+{
+public:
+  AccessorHelper () {}
+
+  virtual bool Set (ObjectBase * object, Attribute val) const {
+    const U *value = val.DynCast<const U*> ();
+    if (value == 0)
+      {
+	return false;
+      }
+    T *obj = dynamic_cast<T *> (object);
+    if (obj == 0)
+      {
+	return false;
+      }
+    return DoSet (obj, value);
+  }
+
+  virtual bool Get (const ObjectBase * object, Attribute val) const {
+    U *value = val.DynCast<U*> ();
+    if (value == 0)
+      {
+	return false;
+      }
+    const T *obj = dynamic_cast<const T *> (object);
+    if (obj == 0)
+      {
+	return false;
+      }
+    return DoGet (obj, value);
+  }
+
+
+private:
+  virtual bool DoSet (T *object, const U *v) const = 0;
+  virtual bool DoGet (const T *object, U *v) const = 0;
+};
+
+template <typename BASE, typename V, typename T, typename U>
+Ptr<const AttributeAccessor>
+DoMakeAccessorHelperOne (U T::*memberVariable)
+{
+  class MemberVariable : public AccessorHelper<BASE,T,V>
+    {
+    public:
+      MemberVariable (U T::*memberVariable)
+	: AccessorHelper<BASE,T,V> (),
+	m_memberVariable (memberVariable)
+	{}
+    private:
+      virtual bool DoSet (T *object, const V *v) const {
+	(object->*m_memberVariable) = U (v->Get ());
+	return true;
+      }
+      virtual bool DoGet (const T *object, V *v) const {
+	v->Set (object->*m_memberVariable);
+	return true;
+      }
+      
+      U T::*m_memberVariable;
+    };
+  return Ptr<const AttributeAccessor> (new MemberVariable (memberVariable), false);
+}
+
+template <typename BASE, typename V, typename T, typename U>
+Ptr<const AttributeAccessor>
+DoMakeAccessorHelperOne (U (T::*getter) (void) const)
+{
+  class MemberMethod : public AccessorHelper<BASE,T,V>
+    {
+    public:
+      MemberMethod (U (T::*getter) (void) const)
+	: AccessorHelper<BASE,T,V> (),
+	m_getter (getter)
+	{}
+    private:
+      virtual bool DoSet (T *object, const V *v) const {
+	return false;
+      }
+      virtual bool DoGet (const T *object, V *v) const {
+	v->Set ((object->*m_getter) ());
+	return true;
+      }
+      U (T::*m_getter) (void) const;
+    };
+  return Ptr<const AttributeAccessor> (new MemberMethod (getter), false);
+}
+
+
+template <typename BASE, typename V, typename T, typename U>
+Ptr<const AttributeAccessor>
+DoMakeAccessorHelperOne (void (T::*setter) (U))
+{
+  class MemberMethod : public AccessorHelper<BASE,T,V>
+    {
+    public:
+      MemberMethod (void (T::*setter) (U))
+	: AccessorHelper<BASE,T,V> (),
+	m_setter (setter)
+	{}
+    private:
+      virtual bool DoSet (T *object, const V *v) const {
+	(object->*m_setter) (v->Get ());
+	return true;
+      }
+      virtual void DoGet (const T *object, V *v) const {
+	return false;
+      }
+      void (T::*m_setter) (U);
+    };
+  return Ptr<const AttributeAccessor> (new MemberMethod (setter), false);
+}
+
+template <typename BASE, typename W, typename T, typename U, typename V>
+Ptr<const AttributeAccessor>
+DoMakeAccessorHelperTwo (void (T::*setter) (U), 
+			  V (T::*getter) (void) const)
+{
+  class MemberMethod : public AccessorHelper<BASE,T,W>
+    {
+    public:
+      MemberMethod (void (T::*setter) (U), 
+		    V (T::*getter) (void) const)
+	: AccessorHelper<BASE,T,W> (),
+	m_setter (setter),
+	m_getter (getter)
+	{}
+    private:
+      virtual bool DoSet (T *object, const W *v) const {
+	(object->*m_setter) (v->Get ());
+	return true;
+      }
+      virtual bool DoGet (const T *object, W *v) const {
+	v->Set ((object->*m_getter) ());
+	return true;
+      }
+      void (T::*m_setter) (U);
+      V (T::*m_getter) (void) const;
+    };
+  return Ptr<const AttributeAccessor> (new MemberMethod (setter, getter), false);
+}
+
+template <typename BASE, typename W, typename T, typename U, typename V>
+Ptr<const AttributeAccessor>
+DoMakeAccessorHelperTwo (V (T::*getter) (void) const, 
+			  void (T::*setter) (U))
+{
+  return DoMakeAccessorHelperTwo<BASE,W> (setter, getter);
+}
+
+template <typename BASE, typename V, typename T1>
+Ptr<const AttributeAccessor>
+MakeAccessorHelper (T1 a1)
+{
+  return DoMakeAccessorHelperOne<BASE,V> (a1);
+}
+
+template <typename BASE, typename V, typename T1, typename T2>
+Ptr<const AttributeAccessor>
+MakeAccessorHelper (T1 a1, T2 a2)
+{
+  return DoMakeAccessorHelperTwo<BASE,V> (a1, a2);
+}
+
+} // namespace ns3
+
+#endif /* ATTRIBUTE_ACCESSOR_HELPER_H */
--- a/src/core/enum-value.h	Thu Feb 21 18:35:55 2008 +0100
+++ b/src/core/enum-value.h	Thu Feb 21 18:44:27 2008 +0100
@@ -2,7 +2,7 @@
 #define ENUM_VALUE_H
 
 #include "attribute.h"
-#include "param-spec-helper.h"
+#include "attribute-accessor-helper.h"
 #include <list>
 
 namespace ns3 {
--- a/src/core/param-spec-helper.h	Thu Feb 21 18:35:55 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,192 +0,0 @@
-#ifndef PARAM_SPEC_HELPER_H
-#define PARAM_SPEC_HELPER_H
-
-namespace ns3 {
-
-template <typename BASE, typename V, typename T1>
-Ptr<const AttributeAccessor>
-MakeAccessorHelper (T1 a1);
-
-template <typename BASE, typename V, typename T1, typename T2>
-Ptr<const AttributeAccessor>
-MakeAccessorHelper (T1 a1, T2 a2);
-
-} // namespace ns3
-
-/***************************************************************
- *        The implementation of the above functions.
- ***************************************************************/
-
-#include "type-traits.h"
-
-namespace ns3 {
-
-template <typename BASE, typename T, typename U>
-class AccessorHelper : public BASE
-{
-public:
-  AccessorHelper () {}
-
-  virtual bool Set (ObjectBase * object, Attribute val) const {
-    const U *value = val.DynCast<const U*> ();
-    if (value == 0)
-      {
-	return false;
-      }
-    T *obj = dynamic_cast<T *> (object);
-    if (obj == 0)
-      {
-	return false;
-      }
-    return DoSet (obj, value);
-  }
-
-  virtual bool Get (const ObjectBase * object, Attribute val) const {
-    U *value = val.DynCast<U*> ();
-    if (value == 0)
-      {
-	return false;
-      }
-    const T *obj = dynamic_cast<const T *> (object);
-    if (obj == 0)
-      {
-	return false;
-      }
-    return DoGet (obj, value);
-  }
-
-
-private:
-  virtual bool DoSet (T *object, const U *v) const = 0;
-  virtual bool DoGet (const T *object, U *v) const = 0;
-};
-
-template <typename BASE, typename V, typename T, typename U>
-Ptr<const AttributeAccessor>
-DoMakeAccessorHelperOne (U T::*memberVariable)
-{
-  class MemberVariable : public AccessorHelper<BASE,T,V>
-    {
-    public:
-      MemberVariable (U T::*memberVariable)
-	: AccessorHelper<BASE,T,V> (),
-	m_memberVariable (memberVariable)
-	{}
-    private:
-      virtual bool DoSet (T *object, const V *v) const {
-	(object->*m_memberVariable) = U (v->Get ());
-	return true;
-      }
-      virtual bool DoGet (const T *object, V *v) const {
-	v->Set (object->*m_memberVariable);
-	return true;
-      }
-      
-      U T::*m_memberVariable;
-    };
-  return Ptr<const AttributeAccessor> (new MemberVariable (memberVariable), false);
-}
-
-template <typename BASE, typename V, typename T, typename U>
-Ptr<const AttributeAccessor>
-DoMakeAccessorHelperOne (U (T::*getter) (void) const)
-{
-  class MemberMethod : public AccessorHelper<BASE,T,V>
-    {
-    public:
-      MemberMethod (U (T::*getter) (void) const)
-	: AccessorHelper<BASE,T,V> (),
-	m_getter (getter)
-	{}
-    private:
-      virtual bool DoSet (T *object, const V *v) const {
-	return false;
-      }
-      virtual bool DoGet (const T *object, V *v) const {
-	v->Set ((object->*m_getter) ());
-	return true;
-      }
-      U (T::*m_getter) (void) const;
-    };
-  return Ptr<const AttributeAccessor> (new MemberMethod (getter), false);
-}
-
-
-template <typename BASE, typename V, typename T, typename U>
-Ptr<const AttributeAccessor>
-DoMakeAccessorHelperOne (void (T::*setter) (U))
-{
-  class MemberMethod : public AccessorHelper<BASE,T,V>
-    {
-    public:
-      MemberMethod (void (T::*setter) (U))
-	: AccessorHelper<BASE,T,V> (),
-	m_setter (setter)
-	{}
-    private:
-      virtual bool DoSet (T *object, const V *v) const {
-	(object->*m_setter) (v->Get ());
-	return true;
-      }
-      virtual void DoGet (const T *object, V *v) const {
-	return false;
-      }
-      void (T::*m_setter) (U);
-    };
-  return Ptr<const AttributeAccessor> (new MemberMethod (setter), false);
-}
-
-template <typename BASE, typename W, typename T, typename U, typename V>
-Ptr<const AttributeAccessor>
-DoMakeAccessorHelperTwo (void (T::*setter) (U), 
-			  V (T::*getter) (void) const)
-{
-  class MemberMethod : public AccessorHelper<BASE,T,W>
-    {
-    public:
-      MemberMethod (void (T::*setter) (U), 
-		    V (T::*getter) (void) const)
-	: AccessorHelper<BASE,T,W> (),
-	m_setter (setter),
-	m_getter (getter)
-	{}
-    private:
-      virtual bool DoSet (T *object, const W *v) const {
-	(object->*m_setter) (v->Get ());
-	return true;
-      }
-      virtual bool DoGet (const T *object, W *v) const {
-	v->Set ((object->*m_getter) ());
-	return true;
-      }
-      void (T::*m_setter) (U);
-      V (T::*m_getter) (void) const;
-    };
-  return Ptr<const AttributeAccessor> (new MemberMethod (setter, getter), false);
-}
-
-template <typename BASE, typename W, typename T, typename U, typename V>
-Ptr<const AttributeAccessor>
-DoMakeAccessorHelperTwo (V (T::*getter) (void) const, 
-			  void (T::*setter) (U))
-{
-  return DoMakeAccessorHelperTwo<BASE,W> (setter, getter);
-}
-
-template <typename BASE, typename V, typename T1>
-Ptr<const AttributeAccessor>
-MakeAccessorHelper (T1 a1)
-{
-  return DoMakeAccessorHelperOne<BASE,V> (a1);
-}
-
-template <typename BASE, typename V, typename T1, typename T2>
-Ptr<const AttributeAccessor>
-MakeAccessorHelper (T1 a1, T2 a2)
-{
-  return DoMakeAccessorHelperTwo<BASE,V> (a1, a2);
-}
-
-} // namespace ns3
-
-#endif /* PARAM_SPEC_HELPER_H */
--- a/src/core/value-helper.h	Thu Feb 21 18:35:55 2008 +0100
+++ b/src/core/value-helper.h	Thu Feb 21 18:44:27 2008 +0100
@@ -1,7 +1,7 @@
 #ifndef VALUE_HELPER_H
 #define VALUE_HELPER_H
 
-#include "param-spec-helper.h"
+#include "attribute-accessor-helper.h"
 #include <sstream>
 #include "fatal-error.h"
 
--- a/src/core/wscript	Thu Feb 21 18:35:55 2008 +0100
+++ b/src/core/wscript	Thu Feb 21 18:44:27 2008 +0100
@@ -108,7 +108,7 @@
         'int-to-type.h',
         'type-id-default-value.h',
         'attribute.h',
-        'param-spec-helper.h',
+        'attribute-accessor-helper.h',
         'int-value.h',
         'uint-value.h',
         'fp-value.h',