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

Bufferfstream Class Reference

#include <Bufferfstream.h>

Inheritance diagram for Bufferfstream:

Inheritance graph
[legend]
Collaboration diagram for Bufferfstream:

Collaboration graph
[legend]

Public Member Functions

 Bufferfstream (BufferBase &buf)
 Bufferfstream (const Bufferfstream &rhs)
 Bufferfstream ()
void erase ()
char get (int i)
void get (int i, char &c)
char get ()
void get (char &c)
string isa () const
Bufferfstreamoperator= (Bufferfstream &rhs)
void put (int i, char c)
void put (char c)
void seekg (int pos, const BufferBase::SeekDir dir=beg)
void seekp (int pos, const BufferBase::SeekDir dir=beg)
 ~Bufferfstream ()

Protected Attributes

string _filename
fstream * _fs
int _handle

Constructor & Destructor Documentation

Bufferfstream::Bufferfstream  ) 
 

Definition at line 62 of file Bufferfstream.h.

References _filename, _fs, _handle, BufferfstreamManager.get_handle(), BufferfstreamManager.Instance(), and inttohex().

00063   : BufferBase(), _fs( new fstream )
00064 {
00065    _handle = BufferfstreamManager::Instance()->get_handle();
00066    char ctmp[2*2+1];
00067    inttohex( _handle, ctmp, 2 );
00068    _filename = "~bfs";
00069    _filename += ctmp;
00070    _fs->open( _filename.c_str(), ios::out );
00071    _fs->close();
00072 //   _fs->open( _filename.c_str(), ios::in | ios::app );
00073    _fs->open( _filename.c_str(), ios::in | ios::out );
00074 }

Bufferfstream::Bufferfstream const Bufferfstream rhs  ) 
 

Definition at line 77 of file Bufferfstream.h.

References _filename, _fs, _handle, BufferBase._size, BufferfstreamManager.get_handle(), BufferfstreamManager.Instance(), and inttohex().

00078   : BufferBase(rhs),  _fs( new fstream )
00079 {
00080    _handle = BufferfstreamManager::Instance()->get_handle();
00081    char ctmp[2*2+1];
00082    inttohex( _handle, ctmp, 2 );
00083    _filename = "~bfs";
00084    _filename += ctmp;
00085    _fs->open( _filename.c_str(), ios::out );
00086    _fs->close();
00087 //   _fs->open( _filename.c_str(), ios::in | ios::app );
00088    _fs->open( _filename.c_str(), ios::in | ios::out );
00089    rhs._fs->seekg(0);
00090    for( int i = 0; i < rhs._size; ++i ) _fs->put( rhs._fs->get() );
00091 }

Bufferfstream::Bufferfstream BufferBase buf  ) 
 

Definition at line 94 of file Bufferfstream.h.

References _filename, _fs, _handle, erase(), BufferfstreamManager.get_handle(), BufferfstreamManager.Instance(), and inttohex().

00095   : BufferBase(buf), _fs( new fstream )
00096 {
00097    _handle = BufferfstreamManager::Instance()->get_handle();
00098    char ctmp[2*2+1];
00099    inttohex( _handle, ctmp, 2 );
00100    _filename = "~bfs";
00101    _filename += ctmp;
00102    _fs->open( _filename.c_str(), ios::out );
00103    _fs->close();
00104 //   _fs->open( _filename.c_str(), ios::in | ios::app );
00105    _fs->open( _filename.c_str(), ios::in | ios::out );
00106    erase();
00107    (*this) << buf;
00108 }

Bufferfstream::~Bufferfstream  ) 
 

Definition at line 111 of file Bufferfstream.h.

References _fs, _handle, and BufferfstreamManager.free_handle().

00112 {
00113    _fs->close();
00114    if ( _fs != 0 ) { delete _fs; _fs = 0; }
00115    BufferfstreamManager::free_handle(_handle);
00116 }


Member Function Documentation

void Bufferfstream::erase  )  [virtual]
 

Reimplemented from BufferBase.

Definition at line 176 of file Bufferfstream.h.

References _filename, _fs, and BufferBase.erase().

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

00177 { 
00178    BufferBase::erase();
00179    _fs->close();
00180    _fs->open( _filename.c_str(), ios::out );
00181    _fs->close();
00182 //   _fs->open( _filename.c_str(), ios::in | ios::app );
00183    _fs->open( _filename.c_str(), ios::in | ios::out );
00184 }

char Bufferfstream::get int  i  )  [virtual]
 

Reimplemented from BufferBase.

Definition at line 173 of file Bufferfstream.h.

References BufferBase.get().

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

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

Reimplemented from BufferBase.

Definition at line 172 of file Bufferfstream.h.

References BufferBase.get().

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

char Bufferfstream::get  )  [virtual]
 

Reimplemented from BufferBase.

Definition at line 169 of file Bufferfstream.h.

References BufferBase.get().

00169 { return BufferBase::get(); }

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

Reimplemented from BufferBase.

Definition at line 158 of file Bufferfstream.h.

References _fs, BufferBase.fail(), BufferBase.get(), seekg(), and BufferBase.setstate().

00159 { 
00160    seekg(_getpos);
00161    if ( !fail() ) {
00162       _fs->get(c);
00163       BufferBase::get(c);
00164 //      cout << "Bufferfstream::got " << _fs->tellg()-1 << ' ' << int((unsigned char)c) << endl;
00165    }
00166    else setstate( BufferBase::failbit );
00167 }

string Bufferfstream.isa  )  const [virtual]
 

Reimplemented from BufferBase.

Definition at line 29 of file Bufferfstream.h.

00029 { return "Bufferfstream"; }

Bufferfstream & Bufferfstream::operator= Bufferfstream rhs  ) 
 

Definition at line 119 of file Bufferfstream.h.

References _fs, erase(), and BufferBase.operator=().

00120 {
00121    if ( this != &rhs ) {
00122       BufferBase::operator=(rhs);
00123       erase();
00124       _fs->seekp(0);
00125       _fs->seekg(0);
00126       (*this) << rhs; 
00127    }
00128    return *this;
00129 }

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

Reimplemented from BufferBase.

Definition at line 171 of file Bufferfstream.h.

References BufferBase.put().

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

void Bufferfstream::put char  c  )  [virtual]
 

Reimplemented from BufferBase.

Definition at line 146 of file Bufferfstream.h.

References _fs, BufferBase.fail(), BufferBase.put(), seekp(), and BufferBase.setstate().

00147 {
00148 //   cout << "Bufferfstream::puting " << _putpos << ' ' << int((unsigned char)c) << endl;
00149    seekp(_putpos);
00150    if ( !fail() ) { 
00151       _fs->put(c);
00152       BufferBase::put(c);
00153    }
00154    else setstate( BufferBase::failbit );
00155 }

void Bufferfstream::seekg int  pos,
const BufferBase::SeekDir  dir = beg
[virtual]
 

Reimplemented from BufferBase.

Definition at line 139 of file Bufferfstream.h.

References _fs, BufferBase.fail(), and BufferBase.seekg().

Referenced by get().

00140 { 
00141    BufferBase::seekg( pos, dir );
00142    if ( !fail() ) _fs->seekg(_getpos);
00143 }

void Bufferfstream::seekp int  pos,
const BufferBase::SeekDir  dir = beg
[virtual]
 

Reimplemented from BufferBase.

Definition at line 132 of file Bufferfstream.h.

References _fs, BufferBase.fail(), and BufferBase.seekp().

Referenced by put().

00133 {
00134    BufferBase::seekp( pos, dir );
00135    if ( !fail() ) _fs->seekp(_putpos);
00136 }


Field Documentation

string Bufferfstream._filename [protected]
 

Definition at line 56 of file Bufferfstream.h.

Referenced by Bufferfstream(), and erase().

fstream* Bufferfstream._fs [protected]
 

Definition at line 57 of file Bufferfstream.h.

Referenced by Bufferfstream(), erase(), get(), operator=(), put(), seekg(), seekp(), and ~Bufferfstream().

int Bufferfstream._handle [protected]
 

Definition at line 55 of file Bufferfstream.h.

Referenced by Bufferfstream(), and ~Bufferfstream().


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