annotate 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
rev   line source
xue@1 1 #ifndef TSTREAM_H
xue@1 2 #define TSTREAM_H
xue@1 3
Chris@5 4 /**
Chris@5 5 \file tstream.h - a stream I/O interface without implementation.
xue@1 6
xue@1 7 This file is included to allow compiling relevent functions that uses Borland VCL's TStream class for
xue@1 8 abstract I/O purposes.
xue@1 9 */
xue@1 10
xue@7 11 #include <stdio.h>
xue@7 12
xue@1 13 enum TSeekOrigin {soFromBeginning, soFromCurrent, soFromEnd};
xue@1 14 class TStream
xue@1 15 {
xue@1 16 public:
xue@7 17 TStream(){};
xue@7 18 ~TStream(){};
xue@7 19 virtual int Read(void*, int){return 0;}
xue@7 20 virtual int Write(void*, int){return 0;}
xue@7 21 virtual int Seek(int, TSeekOrigin){return Position;}
xue@1 22 int Position;
xue@1 23 };
xue@1 24
xue@7 25 enum FileMode {fmRead, fmWrite, fmReadWrite};
xue@7 26 class TFileStream : public TStream
xue@7 27 {
xue@7 28 public:
xue@7 29 FILE* fp;
xue@7 30 TFileStream(char* filename, FileMode mode) : TStream()
xue@7 31 {
xue@7 32 if (mode==fmWrite) fp=fopen(filename, "wb");
xue@7 33 else if (mode==fmReadWrite) fp=fopen(filename, "rb+");
xue@7 34 else fp=fopen(filename, "rb");
xue@7 35 }
xue@7 36 ~TFileStream()
xue@7 37 {
xue@7 38 fclose(fp);
xue@7 39 }
xue@7 40 virtual int Read(void* buffer, int size)
xue@7 41 {
xue@7 42 int result=fread(buffer, 1, size, fp);
xue@7 43 Position=ftell(fp);
xue@7 44 return result;
xue@7 45 }
xue@7 46 virtual int Write(void* buffer, int size)
xue@7 47 {
xue@7 48 int result=fwrite(buffer, 1, size, fp);
xue@7 49 Position=ftell(fp);
xue@7 50 return result;
xue@7 51 }
xue@7 52 virtual int Seek(int Offset, TSeekOrigin Origin)
xue@7 53 {
xue@7 54 fseek(fp, Offset, Origin);
xue@7 55 Position=ftell(fp);
xue@7 56 return Position;
xue@7 57 }
xue@7 58 };
xue@7 59
xue@1 60 #endif // TSTREAM_H