#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