src/core/object.cc
changeset 2937 fc048c358357
parent 2717 688bd2a63e58
child 2938 621b23d5be5b
--- a/src/core/object.cc	Wed Apr 09 17:28:19 2008 -0700
+++ b/src/core/object.cc	Wed Apr 09 17:35:18 2008 -0700
@@ -37,6 +37,43 @@
 
 NS_OBJECT_ENSURE_REGISTERED (Object);
 
+Object::AggregateIterator::AggregateIterator ()
+  : m_first (0),
+    m_current (0)
+{}
+
+bool 
+Object::AggregateIterator::HasNext (void) const
+{
+  if (m_current == 0 && m_first != 0)
+    {
+      return true;
+    }
+  if (m_current != 0 && m_current->m_next != PeekPointer (m_first))
+    {
+      return true;
+    }
+  return false;
+}
+Ptr<const Object> 
+Object::AggregateIterator::Next (void)
+{
+  if (m_current == 0)
+    {
+      m_current = m_first;
+    }
+  else
+    {
+      m_current = m_current->m_next;
+    }
+  return m_current;
+}
+Object::AggregateIterator::AggregateIterator (Ptr<const Object> first)
+  : m_first (first),
+    m_current (0)
+{}
+
+
 TypeId 
 Object::GetInstanceTypeId (void) const
 {
@@ -122,6 +159,12 @@
   NS_ASSERT (o->CheckLoose ());
 }
 
+Object::AggregateIterator 
+Object::GetAggregateIterator (void) const
+{
+  return AggregateIterator (this);
+}
+
 void 
 Object::SetTypeId (TypeId tid)
 {