--- a/src/common/buffer.cc Fri Sep 07 17:39:18 2007 +0200
+++ b/src/common/buffer.cc Fri Sep 07 18:45:00 2007 +0200
@@ -216,15 +216,14 @@
Buffer::Iterator
Buffer::Begin (void) const
{
- return Buffer::Iterator (this, 0);
+ return Buffer::Iterator (this);
}
Buffer::Iterator
Buffer::End (void) const
{
- return Buffer::Iterator (this, GetSize ());
+ return Buffer::Iterator (this, false);
}
-
Buffer::Iterator::Iterator ()
: m_zeroStart (0),
m_zeroEnd (0),
@@ -232,13 +231,26 @@
m_current (0),
m_data (0)
{}
-Buffer::Iterator::Iterator (Buffer const*buffer, uint32_t current)
- : m_zeroStart (buffer->m_data->m_initialStart-buffer->m_start),
- m_zeroEnd (m_zeroStart+buffer->m_zeroAreaSize),
- m_dataEnd (buffer->GetSize ()),
- m_current (current),
- m_data (buffer->m_data->m_data+buffer->m_start)
-{}
+Buffer::Iterator::Iterator (Buffer const*buffer)
+{
+ Construct (buffer);
+ m_current = m_dataStart;
+}
+Buffer::Iterator::Iterator (Buffer const*buffer, bool dummy)
+{
+ Construct (buffer);
+ m_current = m_dataEnd;
+}
+
+void
+Buffer::Iterator::Construct (const Buffer *buffer)
+{
+ m_zeroStart = buffer->m_data->m_initialStart-buffer->m_start;
+ m_zeroEnd = m_zeroStart+buffer->m_zeroAreaSize;
+ m_dataStart = 0;
+ m_dataEnd = buffer->GetSize ();
+ m_data = buffer->m_data->m_data+buffer->m_start;
+}
void
Buffer::Iterator::Next (void)
--- a/src/common/buffer.h Fri Sep 07 17:39:18 2007 +0200
+++ b/src/common/buffer.h Fri Sep 07 18:45:00 2007 +0200
@@ -237,10 +237,13 @@
void Read (uint8_t *buffer, uint16_t size);
private:
friend class Buffer;
- Iterator (Buffer const*buffer, uint32_t m_current);
+ Iterator (Buffer const*buffer);
+ Iterator (Buffer const*buffer, bool);
+ void Construct (const Buffer *buffer);
uint32_t GetIndex (uint32_t n);
uint32_t m_zeroStart;
uint32_t m_zeroEnd;
+ uint32_t m_dataStart;
uint32_t m_dataEnd;
uint32_t m_current;
uint8_t *m_data;