--- a/src/core/attribute-helper.h Mon Feb 25 22:07:19 2008 +0100
+++ b/src/core/attribute-helper.h Mon Feb 25 22:08:56 2008 +0100
@@ -38,6 +38,7 @@
operator Attribute () const;
#define ATTRIBUTE_CHECKER_DEFINE(type) \
+ class type##Checker : public AttributeChecker {}; \
Ptr<const AttributeChecker> Make##type##Checker (void); \
#define ATTRIBUTE_VALUE_IMPLEMENT(type) \
@@ -83,7 +84,7 @@
#define ATTRIBUTE_CHECKER_IMPLEMENT(type) \
Ptr<const AttributeChecker> Make##type##Checker (void) \
{ \
- return MakeSimpleAttributeChecker<type##Value> (); \
+ return MakeSimpleAttributeChecker<type##Value,type##Checker> (); \
} \
#define ATTRIBUTE_CONVERTER_IMPLEMENT(type) \
--- a/src/core/attribute.h Mon Feb 25 22:07:19 2008 +0100
+++ b/src/core/attribute.h Mon Feb 25 22:08:56 2008 +0100
@@ -92,7 +92,7 @@
mutable uint32_t m_count;
};
-template <typename T>
+template <typename T, typename BASE>
Ptr<AttributeChecker>
MakeSimpleAttributeChecker (void);
@@ -108,6 +108,13 @@
MakePtrAccessor (Ptr<U> (T::*getter) (void) const);
+class PtrChecker : public AttributeChecker {};
+
+template <typename T>
+Ptr<AttributeChecker> MakePtrChecker (void);
+
+
+
} // namespace ns3
namespace ns3 {
@@ -342,7 +349,7 @@
Ptr<AttributeChecker>
MakePtrChecker (void)
{
- struct PtrChecker : public AttributeChecker
+ struct APtrChecker : public PtrChecker
{
virtual bool Check (Attribute val) const {
const PtrValueBase *value = val.DynCast<const PtrValueBase *> ();
@@ -361,15 +368,15 @@
}
return true;
}
- } *checker = new PtrChecker ();
+ } *checker = new APtrChecker ();
return Ptr<AttributeChecker> (checker, false);
}
-template <typename T>
+template <typename T, typename BASE>
Ptr<AttributeChecker>
MakeSimpleAttributeChecker (void)
{
- struct SimpleAttributeChecker : public AttributeChecker
+ struct SimpleAttributeChecker : public BASE
{
virtual bool Check (Attribute value) const {
return value.DynCast<const T *> () != 0;
--- a/src/core/object-vector.cc Mon Feb 25 22:07:19 2008 +0100
+++ b/src/core/object-vector.cc Mon Feb 25 22:08:56 2008 +0100
@@ -104,7 +104,7 @@
Ptr<const AttributeChecker>
MakeObjectVectorChecker (void)
{
- return MakeSimpleAttributeChecker<ObjectVectorValue> ();
+ return MakeSimpleAttributeChecker<ObjectVectorValue,ObjectVectorChecker> ();
}
} // name
--- a/src/core/object-vector.h Mon Feb 25 22:07:19 2008 +0100
+++ b/src/core/object-vector.h Mon Feb 25 22:08:56 2008 +0100
@@ -42,6 +42,7 @@
Ptr<U> (T::*get) (INDEX) const);
+class ObjectVectorChecker : public AttributeChecker {};
Ptr<const AttributeChecker> MakeObjectVectorChecker (void);
} // namespace ns3