Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

sequence_buffer Class Template Reference

#include <stl_rope.h>

Inheritance diagram for sequence_buffer:

Inheritance graph
[legend]
Collaboration diagram for sequence_buffer:

Collaboration graph
[legend]
List of all members.

Public Types

typedef sequence::value_type value_type

Public Methods

void flush ()
 ~sequence_buffer ()
 sequence_buffer ()
 sequence_buffer (const sequence_buffer &x)
 sequence_buffer (sequence_buffer &x)
 sequence_buffer (sequence &s)
sequence_buffer & operator= (sequence_buffer &x)
sequence_buffer & operator= (const sequence_buffer &x)
void push_back (value_type x)
void append (value_type *s, size_t len)
sequence_buffer & write (value_type *s, size_t len)
sequence_buffer & put (value_type x)
sequence_buffer & operator= (const value_type &rhs)
sequence_buffer & operator * ()
sequence_buffer & operator++ ()
sequence_buffer & operator++ (int)

Protected Attributes

sequence * prefix
value_type buffer [buf_sz]
size_t buf_count

template<class sequence, size_t buf_sz = 100>
class sequence_buffer< sequence, buf_sz >


Member Typedef Documentation

template<class sequence, size_t buf_sz = 100>
typedef sequence::value_type sequence_buffer::value_type
 

Reimplemented from output_iterator.

Definition at line 105 of file stl_rope.h.

Referenced by append, operator=, push_back, put, and write.


Constructor & Destructor Documentation

template<class sequence, size_t buf_sz = 100>
sequence_buffer< sequence, buf_sz >::~sequence_buffer   [inline]
 

Definition at line 118 of file stl_rope.h.

References flush.

00118 { flush(); }

template<class sequence, size_t buf_sz = 100>
sequence_buffer< sequence, buf_sz >::sequence_buffer   [inline]
 

Definition at line 119 of file stl_rope.h.

References buf_count, and prefix.

00119 : prefix(0), buf_count(0) {}

template<class sequence, size_t buf_sz = 100>
sequence_buffer< sequence, buf_sz >::sequence_buffer const sequence_buffer< sequence, buf_sz > &    x [inline]
 

Definition at line 120 of file stl_rope.h.

References buf_count, buffer, copy, and prefix.

00120                                                    {
00121             prefix = x.prefix;
00122             buf_count = x.buf_count;
00123             copy(x.buffer, x.buffer + x.buf_count, buffer);
00124         }

template<class sequence, size_t buf_sz = 100>
sequence_buffer< sequence, buf_sz >::sequence_buffer sequence_buffer< sequence, buf_sz > &    x [inline]
 

Definition at line 125 of file stl_rope.h.

References buf_count, flush, and prefix.

00125                                              {
00126             x.flush();
00127             prefix = x.prefix;
00128             buf_count = 0;
00129         }

template<class sequence, size_t buf_sz = 100>
sequence_buffer< sequence, buf_sz >::sequence_buffer sequence &    s [inline]
 

Definition at line 130 of file stl_rope.h.

References buf_count, and prefix.

00130 : prefix(&s), buf_count(0) {}


Member Function Documentation

template<class sequence, size_t buf_sz = 100>
void sequence_buffer< sequence, buf_sz >::append value_type   s,
size_t    len
[inline]
 

Definition at line 154 of file stl_rope.h.

References buf_count, buffer, flush, prefix, and value_type.

Referenced by write.

00155         {
00156             if (len + buf_count <= buf_sz) {
00157                 size_t i, j;
00158                 for (i = buf_count, j = 0; j < len; i++, j++) {
00159                     buffer[i] = s[j];
00160                 }
00161                 buf_count += len;
00162             } else if (0 == buf_count) {
00163                 prefix->append(s, s + len);
00164             } else {
00165                 flush();
00166                 append(s, len);
00167             }
00168         }

template<class sequence, size_t buf_sz = 100>
void sequence_buffer< sequence, buf_sz >::flush   [inline]
 

Definition at line 114 of file stl_rope.h.

References buf_count, buffer, and prefix.

Referenced by append, operator=, push_back, sequence_buffer, and ~sequence_buffer.

00114                      {
00115             prefix->append(buffer, buffer + buf_count);
00116             buf_count = 0;
00117         }

template<class sequence, size_t buf_sz = 100>
sequence_buffer& sequence_buffer< sequence, buf_sz >::operator *   [inline]
 

Definition at line 184 of file stl_rope.h.

00184 { return *this; }

template<class sequence, size_t buf_sz = 100>
sequence_buffer& sequence_buffer< sequence, buf_sz >::operator++ int    [inline]
 

Definition at line 186 of file stl_rope.h.

00186 { return *this; }

template<class sequence, size_t buf_sz = 100>
sequence_buffer& sequence_buffer< sequence, buf_sz >::operator++   [inline]
 

Definition at line 185 of file stl_rope.h.

00185 { return *this; }

template<class sequence, size_t buf_sz = 100>
sequence_buffer& sequence_buffer< sequence, buf_sz >::operator= const value_type   rhs [inline]
 

Definition at line 179 of file stl_rope.h.

References push_back, and value_type.

00180         {
00181             push_back(rhs);
00182             return *this;
00183         }

template<class sequence, size_t buf_sz = 100>
sequence_buffer& sequence_buffer< sequence, buf_sz >::operator= const sequence_buffer< sequence, buf_sz > &    x [inline]
 

Definition at line 137 of file stl_rope.h.

References buf_count, buffer, copy, and prefix.

00137                                                               {
00138             prefix = x.prefix;
00139             buf_count = x.buf_count;
00140             copy(x.buffer, x.buffer + x.buf_count, buffer);
00141             return *this;
00142         }

template<class sequence, size_t buf_sz = 100>
sequence_buffer& sequence_buffer< sequence, buf_sz >::operator= sequence_buffer< sequence, buf_sz > &    x [inline]
 

Definition at line 131 of file stl_rope.h.

References buf_count, flush, and prefix.

00131                                                         {
00132             x.flush();
00133             prefix = x.prefix;
00134             buf_count = 0;
00135             return *this;
00136         }

template<class sequence, size_t buf_sz = 100>
void sequence_buffer< sequence, buf_sz >::push_back value_type    x [inline]
 

Definition at line 143 of file stl_rope.h.

References buf_count, buffer, flush, and value_type.

Referenced by operator=, and put.

00144         {
00145             if (buf_count < buf_sz) {
00146                 buffer[buf_count] = x;
00147                 ++buf_count;
00148             } else {
00149                 flush();
00150                 buffer[0] = x;
00151                 buf_count = 1;
00152             }
00153         }

template<class sequence, size_t buf_sz = 100>
sequence_buffer& sequence_buffer< sequence, buf_sz >::put value_type    x [inline]
 

Definition at line 174 of file stl_rope.h.

References push_back, and value_type.

00175         {
00176             push_back(x);
00177             return *this;
00178         }

template<class sequence, size_t buf_sz = 100>
sequence_buffer& sequence_buffer< sequence, buf_sz >::write value_type   s,
size_t    len
[inline]
 

Definition at line 169 of file stl_rope.h.

References append, and value_type.

00170         {
00171             append(s, len);
00172             return *this;
00173         }


Member Data Documentation

template<class sequence, size_t buf_sz = 100>
size_t sequence_buffer::buf_count [protected]
 

Definition at line 112 of file stl_rope.h.

Referenced by append, flush, operator=, push_back, and sequence_buffer.

template<class sequence, size_t buf_sz = 100>
value_type sequence_buffer::buffer[buf_sz] [protected]
 

Definition at line 111 of file stl_rope.h.

Referenced by append, flush, operator=, push_back, and sequence_buffer.

template<class sequence, size_t buf_sz = 100>
sequence* sequence_buffer::prefix [protected]
 

Definition at line 110 of file stl_rope.h.

Referenced by append, flush, operator=, and sequence_buffer.


The documentation for this class was generated from the following file:
logo OpenMask

Documentation generated on Thu May 2 15:03:44 2002

Generated with doxygen 1.2.12 by Dimitri van Heesch ,   1997-2001