Mercurial > hg > x
diff tstream.h @ 7:9b1c0825cc77
TFileStream; redefining some function arguments
author | Wen X <xue.wen@elec.qmul.ac.uk> |
---|---|
date | Mon, 11 Oct 2010 17:54:32 +0100 |
parents | 5f3c32dc6e17 |
children | 977f541d6683 |
line wrap: on
line diff
--- a/tstream.h Wed Oct 06 15:36:50 2010 +0100 +++ b/tstream.h Mon Oct 11 17:54:32 2010 +0100 @@ -8,16 +8,53 @@ abstract I/O purposes. */ +#include <stdio.h> + enum TSeekOrigin {soFromBeginning, soFromCurrent, soFromEnd}; class TStream { public: - TStream(); - ~TStream(); - int Read(void*, int){return 0;} - int Write(void*, int){return 0;} - int Seek(int, TSeekOrigin){return Position;} + TStream(){}; + ~TStream(){}; + virtual int Read(void*, int){return 0;} + virtual int Write(void*, int){return 0;} + virtual int Seek(int, TSeekOrigin){return Position;} int Position; }; +enum FileMode {fmRead, fmWrite, fmReadWrite}; +class TFileStream : public TStream +{ +public: + FILE* fp; + TFileStream(char* filename, FileMode mode) : TStream() + { + if (mode==fmWrite) fp=fopen(filename, "wb"); + else if (mode==fmReadWrite) fp=fopen(filename, "rb+"); + else fp=fopen(filename, "rb"); + } + ~TFileStream() + { + fclose(fp); + } + virtual int Read(void* buffer, int size) + { + int result=fread(buffer, 1, size, fp); + Position=ftell(fp); + return result; + } + virtual int Write(void* buffer, int size) + { + int result=fwrite(buffer, 1, size, fp); + Position=ftell(fp); + return result; + } + virtual int Seek(int Offset, TSeekOrigin Origin) + { + fseek(fp, Offset, Origin); + Position=ftell(fp); + return Position; + } +}; + #endif // TSTREAM_H