43 lines
1017 B
C
43 lines
1017 B
C
|
#if !defined(__xmemfile_h)
|
||
|
#define __xmemfile_h
|
||
|
|
||
|
#include "xfile.h"
|
||
|
|
||
|
//////////////////////////////////////////////////////////
|
||
|
class DLL_EXP CxMemFile : public CxFile
|
||
|
{
|
||
|
public:
|
||
|
CxMemFile(uint8_t* pBuffer = NULL, uint32_t size = 0);
|
||
|
~CxMemFile();
|
||
|
|
||
|
bool Open();
|
||
|
uint8_t* GetBuffer(bool bDetachBuffer = true);
|
||
|
|
||
|
virtual bool Close();
|
||
|
virtual size_t Read(void *buffer, size_t size, size_t count);
|
||
|
virtual size_t Write(const void *buffer, size_t size, size_t count);
|
||
|
virtual bool Seek(int32_t offset, int32_t origin);
|
||
|
virtual int32_t Tell();
|
||
|
virtual int32_t Size();
|
||
|
virtual bool Flush();
|
||
|
virtual bool Eof();
|
||
|
virtual int32_t Error();
|
||
|
virtual bool PutC(uint8_t c);
|
||
|
virtual int32_t GetC();
|
||
|
virtual char * GetS(char *string, int32_t n);
|
||
|
virtual int32_t Scanf(const char *format, void* output);
|
||
|
|
||
|
protected:
|
||
|
bool Alloc(uint32_t nBytes);
|
||
|
void Free();
|
||
|
|
||
|
uint8_t* m_pBuffer;
|
||
|
uint32_t m_Size;
|
||
|
bool m_bFreeOnClose;
|
||
|
int32_t m_Position; //current position
|
||
|
int32_t m_Edge; //buffer size
|
||
|
bool m_bEOF;
|
||
|
};
|
||
|
|
||
|
#endif
|