Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals

Buffer Class Reference

#include <Buffer.h>

Inheritance diagram for Buffer:

Inheritance graph
[legend]
Collaboration diagram for Buffer:

Collaboration graph
[legend]

Public Member Functions

 Buffer (BufferBase &buf)
 Buffer (const Buffer &rhs)
 Buffer (int sizemax=BUFFER_DEFAULT_SIZEMAX)
const char * c_str ()
void erase ()
char get (int i)
void get (int i, char &c)
char get ()
void get (char &c)
string isa () const
Bufferoperator= (Buffer &rhs)
void put (int i, char c)
void put (char c)
void resizemax (int sizemax=BUFFER_DEFAULT_SIZEMAX)
 ~Buffer ()

Protected Attributes

char * _data
int _sizemax

Constructor & Destructor Documentation

Buffer::Buffer int  sizemax = BUFFER_DEFAULT_SIZEMAX  ) 
 

Definition at line 60 of file Buffer.h.

00061   : _sizemax(sizemax)
00062 {
00063    _data = new char[sizemax];
00064 }

Buffer::Buffer const Buffer rhs  ) 
 

Definition at line 67 of file Buffer.h.

References _data, BufferBase._size, and _sizemax.

00068   : BufferBase(rhs),
00069     _sizemax(rhs._sizemax)
00070 {
00071    _data = new char[rhs._sizemax];
00072    for( int i = 0; i < rhs._size; ++i ) _data[i] = rhs._data[i];
00073 }

Buffer::Buffer BufferBase buf  ) 
 

Definition at line 76 of file Buffer.h.

References BUFFER_DEFAULT_SIZEMAX, BufferBase.get(), BufferBase.seekg(), and BufferBase.size().

00077   : BufferBase(buf),
00078     _sizemax(BUFFER_DEFAULT_SIZEMAX) 
00079 {
00080    _data = new char[BUFFER_DEFAULT_SIZEMAX];
00081    buf.seekg(0);
00082    for( int i = 0; i < buf.size(); ++i ) buf.get( _data[i] );
00083 }

Buffer::~Buffer  ) 
 

Definition at line 86 of file Buffer.h.

00087 {
00088    if ( _data != 0 ) { delete [] _data; _data = 0; }
00089 }


Member Function Documentation

const char * Buffer::c_str  ) 
 

Definition at line 146 of file Buffer.h.

00147 { 
00148    _data[_size]=0; 
00149    return _data; 
00150 }

void Buffer::erase  )  [virtual]
 

Reimplemented from BufferBase.

Definition at line 139 of file Buffer.h.

References BufferBase.erase(), and resizemax().

00140 { 
00141    BufferBase::erase();
00142    resizemax(); 
00143 }

char Buffer::get int  i  )  [virtual]
 

Reimplemented from BufferBase.

Definition at line 125 of file Buffer.h.

References BufferBase.get().

00125 { return BufferBase::get(i); }

void Buffer::get int  i,
char &  c
[virtual]
 

Reimplemented from BufferBase.

Definition at line 124 of file Buffer.h.

References BufferBase.get().

00124 { BufferBase::get(i,c); }

char Buffer::get  )  [virtual]
 

Reimplemented from BufferBase.

Definition at line 121 of file Buffer.h.

References BufferBase.get().

00121 { return BufferBase::get(); }

void Buffer::get char &  c  )  [virtual]
 

Reimplemented from BufferBase.

Definition at line 111 of file Buffer.h.

References BufferBase.eob(), BufferBase.get(), and BufferBase.setstate().

00112 {
00113    if ( !eob() ) {
00114       c = _data[ _getpos ];
00115 //      cout << "Buffer:got " << _getpos << ' ' << int((unsigned char)c) << endl;
00116       BufferBase::get(c);
00117    }
00118    else setstate( BufferBase::failbit );
00119 }

string Buffer.isa  )  const [virtual]
 

Reimplemented from BufferBase.

Definition at line 27 of file Buffer.h.

00027 { return "Buffer"; }

Buffer & Buffer::operator= Buffer rhs  ) 
 

Definition at line 92 of file Buffer.h.

References _data, BufferBase._size, _sizemax, BufferBase.operator=(), and resizemax().

00093 {
00094    if ( this != &rhs ) {
00095       BufferBase::operator=(rhs);
00096       resizemax( rhs._sizemax );
00097       for( int i = 0; i < rhs._size; ++i ) _data[i] = rhs._data[i];
00098    }
00099    return *this;
00100 }

void Buffer::put int  i,
char  c
[virtual]
 

Reimplemented from BufferBase.

Definition at line 123 of file Buffer.h.

References BufferBase.put().

00123 { BufferBase::put(i,c); }

void Buffer::put char  c  )  [virtual]
 

Reimplemented from BufferBase.

Definition at line 103 of file Buffer.h.

References BufferBase.put(), and resizemax().

00104 {
00105    if ( _size == _sizemax ) resizemax( _sizemax * 2 );
00106    _data[_putpos] = c;
00107    BufferBase::put(c); 
00108 }

void Buffer::resizemax int  sizemax = BUFFER_DEFAULT_SIZEMAX  ) 
 

Definition at line 128 of file Buffer.h.

References BufferBase.size().

Referenced by erase(), operator=(), and put().

00129 {
00130    char* tmp = new char[sizemax];
00131    _sizemax = sizemax;
00132    for( int i = 0; i < size(); ++i ) tmp[i] = _data[i];
00133    char* tmp2 = _data;
00134    _data = tmp;
00135    if ( tmp2 != 0 ) { delete [] tmp2; }
00136 }


Field Documentation

char* Buffer._data [protected]
 

Definition at line 55 of file Buffer.h.

Referenced by Buffer(), and operator=().

int Buffer._sizemax [protected]
 

Definition at line 54 of file Buffer.h.

Referenced by Buffer(), and operator=().


The documentation for this class was generated from the following file:
Generated on Mon May 31 21:40:41 2004 for SR2k4 Assembler by doxygen 1.3.6