12#ifndef TT_INCLUDE_BUFFEREDFILECLASS_H
13#define TT_INCLUDE_BUFFEREDFILECLASS_H
15#include "RawFileClass.h"
16class BufferedFileClass :
public RawFileClass {
18 unsigned char* Buffer;
19 unsigned int BufferSize;
23 BufferedFileClass() : Buffer(0), BufferSize(0), BufferAvailable(0), BufferOffset(0)
30 int Read(
void* buffer,
int size)
35 if (BufferAvailable > 0)
37 int buf = BufferAvailable;
42 memcpy(buffer, Buffer + BufferOffset, buf);
43 BufferAvailable -= buf;
46 tmp = (
char *)tmp + buf;
58 return result + RawFileClass::Read(tmp,sz);
63 Buffer =
new unsigned char[16384];
73 BufferAvailable = RawFileClass::Read(Buffer,BufferSize);
76 if (BufferAvailable > 0)
78 int buf2 = BufferAvailable;
87 memcpy(tmp,Buffer+BufferOffset,buf2);
88 BufferAvailable -= buf2;
95 int Seek(
int pos,
int dir)
97 if (dir != 1 || pos < 0)
103 int buf = BufferAvailable;
108 BufferAvailable -= buf;
110 return RawFileClass::Seek(pos - buf,dir) - BufferAvailable;
114 return RawFileClass::Seek(pos,dir);
117 int Write(
void* buffer,
int size)
119 return RawFileClass::Write(buffer,size);
123 RawFileClass::Close();