capsimg/Core/MemoryFile.h

47 lines
919 B
C
Raw Permalink Normal View History

2014-12-13 19:42:07 +01:00
#ifndef MEMORYFILE_H
#define MEMORYFILE_H
#define DEF_MEMORYFILEALLOC 512
// memory based file access/buffer
class CMemoryFile : public CBaseFile
{
public:
CMemoryFile();
virtual ~CMemoryFile();
int Open(void *buf, size_t size, unsigned int mode);
int Close();
void Free();
size_t Read(void *buf, size_t size);
size_t Write(void *buf, size_t size);
long Seek(long pos, int mode);
long GetSize();
long GetPosition();
uint8_t *GetBuffer();
protected:
// memory type
enum {
mtAlloc,
mtUser,
mtLast
};
void Clear(int clbuf=1);
void AllocBuffer(size_t maxsize);
void FreeBuffer();
protected:
int filemt; // file memory type
uint8_t *filebuf[mtLast]; // file buffer
size_t filesize[mtLast]; // buffer size
size_t filecount; // valid data count in buffer
size_t filepos; // file position in buffer
};
typedef CMemoryFile *PCMEMORYFILE;
#endif