00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_MEMFILE_H__
00020 #define __CS_MEMFILE_H__
00021
00022 #include "iutil/vfs.h"
00023
00028 class csMemFile : public iFile
00029 {
00030 public:
00032 enum Disposition
00033 {
00035 DISPOSITION_DELETE,
00037 DISPOSITION_FREE,
00039 DISPOSITION_IGNORE
00040 };
00041
00042 public:
00044 csMemFile();
00046 csMemFile(const char*, size_t);
00048 csMemFile(char*, size_t, Disposition = DISPOSITION_DELETE);
00050 virtual ~csMemFile();
00051
00053 virtual const char* GetName();
00055 virtual size_t GetSize();
00057 virtual int GetStatus();
00058
00060 virtual size_t Read(char* Data, size_t DataSize);
00062 virtual size_t Write(const char* Data, size_t DataSize);
00064 virtual bool AtEOF();
00066 virtual size_t GetPos();
00068 virtual void SetPos(size_t);
00069
00074 virtual iDataBuffer* GetAllData();
00079 virtual const char* GetData() const;
00080
00081 SCF_DECLARE_IBASE;
00082
00083 protected:
00084 Disposition disposition;
00085 char* buffer;
00086 size_t capacity;
00087 size_t size;
00088 size_t cursor;
00089 virtual void FreeBuffer();
00090 };
00091
00092 #endif // __CS_MEMFILE_H__