#ifndef __BGSTREAM_H__
#define __BGSTREAM_H__
/* $Id: bgstream.h,v 1.1 2000/02/18 09:04:17 dpfeifle Exp $ */
#include "bgobject.h"
#include "bglog.h"
#include <stdio.h>
class BGString;
// ------------------------------------------------------------------
// Class: BGInputStream
// ------------------------------------------------------------------
class BGInputStream
{
public:
virtual int
read ( ) = 0;
virtual long
read ( unsigned char *buffer,
long offset,
long len );
};
// ------------------------------------------------------------------
// Class: BGOutputStream
// ------------------------------------------------------------------
class BGOutputStream
{
public:
virtual void
write ( unsigned char data ) = 0;
virtual long
write ( unsigned char *buffer,
long offset,
long len );
virtual void
flush ( );
virtual void
close ( );
};
// ------------------------------------------------------------------
// Class: BGFileInputStream
// ------------------------------------------------------------------
class BGFileInputStream
: public BGInputStream
{
public:
BGFileInputStream ( FILE *fp, long buflen=1024 );
// BGFileInputStream ( const char *filename, const char *mode="rb" );
virtual
~BGFileInputStream ( );
virtual int
read ( );
virtual long
read ( unsigned char *buffer,
long offset,
long len );
private:
FILE
*fp;
unsigned char
*buf;
long
buf_len;
long
buf_ptr;
long
read_ptr;
};
// ------------------------------------------------------------------
// Class: BGFileOutputStream
// ------------------------------------------------------------------
class BGFileOutputStream
: public BGOutputStream
{
public:
BGFileOutputStream ( FILE *fp, long buflen=1024 );
virtual
~BGFileOutputStream ( );
virtual void
write ( unsigned char data );
virtual void
flush ( );
virtual void
close ( );
private:
FILE
*fp;
unsigned char
*buf;
long
buf_len;
long
write_ptr;
};
// ------------------------------------------------------------------
// Class: BGReader
// ------------------------------------------------------------------
class BGReader
{
public:
BGReader ( BGInputStream &in );
virtual
~BGReader ( );
virtual long
readln ( BGString &s );
private:
BGInputStream&
instream;
};
// ------------------------------------------------------------------
// Class: BGWriter
// ------------------------------------------------------------------
class BGWriter
{
public:
BGWriter ( BGOutputStream &out );
virtual
~BGWriter ( );
virtual long
writeln ( BGString &s );
private:
BGOutputStream&
outstream;
};
#endif