view tstream.h @ 8:f0d2c9b5d3a3

bug fix: ACPower
author Wen X <xue.wen@elec.qmul.ac.uk>
date Fri, 15 Oct 2010 14:12:33 +0100
parents 9b1c0825cc77
children 977f541d6683
line wrap: on
line source
#ifndef TSTREAM_H
#define TSTREAM_H

/**
  \file tstream.h - a stream I/O interface without implementation.

  This file is included to allow compiling relevent functions that uses Borland VCL's TStream class for
  abstract I/O purposes.
*/

#include <stdio.h>

enum TSeekOrigin {soFromBeginning, soFromCurrent, soFromEnd};
class TStream
{
public:
  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