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