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

FXEX::FXBufferedStream Class Reference

This class add support to FXStream's for: 1. More...

#include <FXBufferedStream.h>

Inheritance diagram for FXEX::FXBufferedStream::

FXMemoryStream FXEX::FXAsciiStream List of all members.

Public Methods

 FXBufferedStream (FXStream *s, const FXObject *cont=NULL)
FXbool open (FXStreamDirection save_or_load)
FXbool open (FXuint sp, FXStreamDirection save_or_load)
FXbool close ()
void flush ()
virtual FXStreamoperator<< (const FXuchar &v)
virtual FXStreamoperator<< (const FXchar &v)
virtual FXStreamoperator>> (FXuchar &v)
virtual FXStreamoperator>> (FXchar &v)
virtual ~FXBufferedStream ()

Detailed Description

This class add support to FXStream's for: 1.

buffering 2. stream enhancement such as compression, data munging, etc

This functionality is kinda cool, we can do something like this:

FXFileStream fstream = new FXFileStream(...); fstream.open(...); FXBufferedStream bstream = new FXBufferedStream(fstream); ... bstream << object; ... // when buffer becomes full (or closed), bstream automatically flushes into fstream

Or even better:

FXSocketStream fstream = new FXSocketStream(...); fstream.open(...); FXBzipStream bstream = new FXBzipStream(fstream,compression_level); ... bstream << object; ... // when the buffer becomes full (or closed), bstream automatically flushes bzip // compressed data over the socket!

Child should subclass this class and overload the bufferLoad() and bufferSave() method so that they can mung the data when the buffer is full/empty.

Definition at line 63 of file FXBufferedStream.h.


Constructor & Destructor Documentation

FXEX::FXBufferedStream::FXBufferedStream FXStream * s,
const FXObject * cont = NULL
 

Point this enhanced stream at the base stream.

virtual FXEX::FXBufferedStream::~FXBufferedStream [virtual]
 

Destructor.


Member Function Documentation

FXbool FXEX::FXBufferedStream::open FXStreamDirection save_or_load
 

Create an enhanced stream - the subclass should figure out how much space to allocate in the buffer (using setSpace()).

FXbool FXEX::FXBufferedStream::open FXuint sp,
FXStreamDirection save_or_load
 

Create an enhanced stream of a specific buffer size.

FXbool FXEX::FXBufferedStream::close
 

Stop using an enhanced stream.

void FXEX::FXBufferedStream::flush
 

Put the buffer into the base stream.

virtual FXStream& FXEX::FXBufferedStream::operator<< const FXuchar & v [virtual]
 

Save to stream.

virtual FXStream& FXEX::FXBufferedStream::operator<< const FXchar & v [virtual]
 

virtual FXStream& FXEX::FXBufferedStream::operator>> FXuchar & v [virtual]
 

Load from stream.

virtual FXStream& FXEX::FXBufferedStream::operator>> FXchar & v [virtual]