annotate tstream.h @ 13:de3961f74f30 tip

Add Linux/gcc Makefile; build fix
author Chris Cannam
date Mon, 05 Sep 2011 15:22:35 +0100
parents 977f541d6683
children
rev   line source
xue@11 1 /*
xue@11 2 Harmonic sinusoidal modelling and tools
xue@11 3
xue@11 4 C++ code package for harmonic sinusoidal modelling and relevant signal processing.
xue@11 5 Centre for Digital Music, Queen Mary, University of London.
xue@11 6 This file copyright 2011 Wen Xue.
xue@11 7
xue@11 8 This program is free software; you can redistribute it and/or
xue@11 9 modify it under the terms of the GNU General Public License as
xue@11 10 published by the Free Software Foundation; either version 2 of the
xue@11 11 License, or (at your option) any later version.
xue@11 12 */
xue@1 13 #ifndef TSTREAM_H
xue@1 14 #define TSTREAM_H
xue@1 15
Chris@5 16 /**
Chris@5 17 \file tstream.h - a stream I/O interface without implementation.
xue@1 18
xue@1 19 This file is included to allow compiling relevent functions that uses Borland VCL's TStream class for
xue@1 20 abstract I/O purposes.
xue@1 21 */
xue@1 22
xue@7 23 #include <stdio.h>
xue@7 24
xue@1 25 enum TSeekOrigin {soFromBeginning, soFromCurrent, soFromEnd};
xue@1 26 class TStream
xue@1 27 {
xue@1 28 public:
xue@7 29 TStream(){};
xue@7 30 ~TStream(){};
xue@7 31 virtual int Read(void*, int){return 0;}
xue@7 32 virtual int Write(void*, int){return 0;}
xue@7 33 virtual int Seek(int, TSeekOrigin){return Position;}
xue@1 34 int Position;
xue@1 35 };
xue@1 36
xue@7 37 enum FileMode {fmRead, fmWrite, fmReadWrite};
xue@7 38 class TFileStream : public TStream
xue@7 39 {
xue@7 40 public:
xue@7 41 FILE* fp;
xue@7 42 TFileStream(char* filename, FileMode mode) : TStream()
xue@7 43 {
xue@7 44 if (mode==fmWrite) fp=fopen(filename, "wb");
xue@7 45 else if (mode==fmReadWrite) fp=fopen(filename, "rb+");
xue@7 46 else fp=fopen(filename, "rb");
xue@7 47 }
xue@7 48 ~TFileStream()
xue@7 49 {
xue@7 50 fclose(fp);
xue@7 51 }
xue@7 52 virtual int Read(void* buffer, int size)
xue@7 53 {
xue@7 54 int result=fread(buffer, 1, size, fp);
xue@7 55 Position=ftell(fp);
xue@7 56 return result;
xue@7 57 }
xue@7 58 virtual int Write(void* buffer, int size)
xue@7 59 {
xue@7 60 int result=fwrite(buffer, 1, size, fp);
xue@7 61 Position=ftell(fp);
xue@7 62 return result;
xue@7 63 }
xue@7 64 virtual int Seek(int Offset, TSeekOrigin Origin)
xue@7 65 {
xue@7 66 fseek(fp, Offset, Origin);
xue@7 67 Position=ftell(fp);
xue@7 68 return Position;
xue@7 69 }
xue@7 70 };
xue@7 71
xue@1 72 #endif // TSTREAM_H