add a m_dataStart member in Buffer::Iterator
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Fri, 07 Sep 2007 18:45:00 +0200
changeset 1463 0df6c4ff3c9e
parent 1462 076d6853f9b1
child 1464 0d52ddfda61b
add a m_dataStart member in Buffer::Iterator
src/common/buffer.cc
src/common/buffer.h
--- 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;