--- a/src/core/trace-context.cc Thu Aug 30 13:58:15 2007 +0200
+++ b/src/core/trace-context.cc Thu Aug 30 14:25:09 2007 +0200
@@ -24,72 +24,52 @@
namespace ns3 {
-TraceContext::Iterator &
-TraceContext::Iterator::operator ++ (void)
-{
- ReadOne ();
- return *this;
-}
-TraceContext::Iterator
-TraceContext::Iterator::operator ++ (int)
-{
- Iterator old (*this);
- ReadOne ();
- return old;
-}
-const std::string &
-TraceContext::Iterator::operator * (void) const
-{
- return m_name;
-}
-const std::string *
-TraceContext::Iterator::operator -> (void) const
-{
- return &m_name;
-}
-TraceContext::Iterator::Iterator (uint8_t *buffer)
+TraceContext::Iterator::Iterator ()
+ : m_buffer (0),
+ m_size (0),
+ m_current (0)
+{}
+TraceContext::Iterator::Iterator (uint8_t *buffer, uint16_t size)
: m_buffer (buffer),
+ m_size (size),
m_current (0)
{
- ReadOne ();
+ m_uid = m_buffer[m_current];
}
-TraceContext::Iterator::Iterator (uint8_t *buffer, uint16_t index)
- : m_buffer (buffer),
- m_current (index)
-{}
+bool
+TraceContext::Iterator::IsLast (void) const
+{
+ if (m_buffer == 0 || m_uid == 0 || m_current >= m_size)
+ {
+ return true;
+ }
+ return false;
+}
void
-TraceContext::Iterator::ReadOne (void)
+TraceContext::Iterator::Next (void)
{
if (m_buffer == 0)
{
return;
}
- uint8_t uid = m_buffer[m_current];
- uint8_t size = ElementRegistry::GetSize (uid);
- m_name = ElementRegistry::GetName (uid);
- m_current += 1 + size;
+ if (m_uid == 0)
+ {
+ return;
+ }
+ else
+ {
+ uint8_t size = ElementRegistry::GetSize (m_uid);
+ m_current += 1 + size;
+ }
+ m_uid = m_buffer[m_current];
}
-bool
-TraceContext::Iterator::operator != (const Iterator &o)
-{
- return ! (*this == o);
-}
-bool
-TraceContext::Iterator::operator == (const Iterator &o)
+std::string
+TraceContext::Iterator::Get (void) const
{
- if (m_buffer == 0 && o.m_buffer == 0)
- {
- return true;
- }
- if (m_buffer != 0 && o.m_buffer == 0 ||
- m_buffer == 0 && o.m_buffer != 0)
- {
- return false;
- }
- return m_current == o.m_current;
+ std::string name = ElementRegistry::GetName (m_uid);
+ return name;
}
-
TraceContext::TraceContext ()
: m_data (0)
{}
@@ -297,29 +277,13 @@
} while (true);
}
TraceContext::Iterator
-TraceContext::AvailableBegin (void) const
+TraceContext::Begin (void) const
{
if (m_data == 0)
{
- return Iterator (0);
+ return Iterator ();
}
- return Iterator (m_data->data);
-}
-TraceContext::Iterator
-TraceContext::AvailableEnd (void) const
-{
- if (m_data == 0)
- {
- return Iterator (0);
- }
- uint8_t currentUid;
- uint16_t i = 0;
- do {
- currentUid = m_data->data[i];
- uint8_t size = ElementRegistry::GetSize (currentUid);
- i += 1 + size;
- } while (i < m_data->size && currentUid != 0);
- return Iterator (m_data->data, i);
+ return Iterator (m_data->data, m_data->size);
}
void
--- a/src/core/trace-context.h Thu Aug 30 13:58:15 2007 +0200
+++ b/src/core/trace-context.h Thu Aug 30 14:25:09 2007 +0200
@@ -100,23 +100,19 @@
class Iterator
{
public:
- Iterator &operator ++ (void);
- Iterator operator ++ (int);
- const std::string &operator * (void) const;
- const std::string *operator -> (void) const;
- bool operator == (const Iterator &o);
- bool operator != (const Iterator &o);
+ void Next (void);
+ bool IsLast (void) const;
+ std::string Get (void) const;
private:
friend class TraceContext;
- Iterator (uint8_t *buffer);
+ Iterator ();
Iterator (uint8_t *buffer, uint16_t index);
- void ReadOne (void);
uint8_t *m_buffer;
+ uint16_t m_size;
uint16_t m_current;
- std::string m_name;
+ uint8_t m_uid;
};
- Iterator AvailableBegin (void) const;
- Iterator AvailableEnd (void) const;
+ Iterator Begin (void) const;
/**
* \param o another trace context
* \returns true if the input trace context contains exactly the same set of
--- a/utils/print-trace-sources.cc Thu Aug 30 13:58:15 2007 +0200
+++ b/utils/print-trace-sources.cc Thu Aug 30 14:25:09 2007 +0200
@@ -55,7 +55,7 @@
os << "///" << std::endl;
os << "/// The path to this trace source is: " << i->path << "." << std::endl;
os << "///" << std::endl;
- if (i->context.AvailableBegin () == i->context.AvailableEnd ())
+ if (i->context.Begin ().IsLast ())
{
os << "/// No data can be extracted from \\p arg1 with ns3::TraceContext::GetElement." << std::endl;
}
@@ -63,9 +63,9 @@
{
os << "/// The following classes can be extracted from \\p arg1 with " << std::endl;
os << "/// ns3::TraceContext::GetElement:" << std::endl;
- for (TraceContext::Iterator m = i->context.AvailableBegin (); m != i->context.AvailableEnd (); m++)
+ for (TraceContext::Iterator m = i->context.Begin (); !m.IsLast (); m.Next ())
{
- os << "/// - " << (*m) << std::endl;
+ os << "/// - " << m.Get () << std::endl;
}
}
os << "void TraceSinkCallback" << z << " (const TraceContext & arg1" ;