project64/Source/Common/File Class.h

91 lines
2.0 KiB
C++

#ifndef __FILE_CLASS__H__
#define __FILE_CLASS__H__
class CFileBase
{
public:
enum OpenFlags {
modeRead = 0x0000,
modeWrite = 0x0001,
modeReadWrite = 0x0002,
shareCompat = 0x0000,
shareExclusive = 0x0010,
shareDenyWrite = 0x0020,
shareDenyRead = 0x0030,
shareDenyNone = 0x0040,
modeNoInherit = 0x0080,
modeCreate = 0x1000,
modeNoTruncate = 0x2000,
};
enum Attribute {
normal = 0x00,
readOnly = 0x01,
hidden = 0x02,
system = 0x04,
volume = 0x08,
directory = 0x10,
archive = 0x20
};
enum SeekPosition { begin = 0x0, current = 0x1, end = 0x2 };
virtual bool Open(LPCTSTR lpszFileName, ULONG nOpenFlags ) = 0;
virtual ULONG GetPosition() const = 0;
virtual long Seek(long lOff, SeekPosition nFrom) = 0;
virtual bool SetLength(ULONG dwNewLen) = 0;
virtual ULONG GetLength() const = 0;
virtual ULONG Read(void* lpBuf, ULONG nCount) = 0;
virtual bool Write(const void* lpBuf, ULONG nCount) = 0;
virtual bool Flush() = 0;
virtual bool Close() = 0;
virtual bool IsOpen() const = 0;
virtual bool SetEndOfFile() = 0;
};
class CFile : public CFileBase
{
// Attributes
HANDLE m_hFile;
bool m_bCloseOnDelete;
public:
// Flag values
// Constructors
CFile();
CFile(HANDLE hFile);
CFile(LPCTSTR lpszFileName, ULONG nOpenFlags);
// Deconstructors
virtual ~CFile();
// Operations
virtual bool Open(LPCTSTR lpszFileName, ULONG nOpenFlags );
ULONG SeekToEnd ( void );
void SeekToBegin ( void );
// Overridables
virtual ULONG GetPosition() const;
virtual long Seek(long lOff, SeekPosition nFrom);
virtual bool SetLength(ULONG dwNewLen);
virtual ULONG GetLength() const;
virtual ULONG Read(void* lpBuf, ULONG nCount);
virtual bool Write(const void* lpBuf, ULONG nCount);
virtual bool Flush();
virtual bool Close();
virtual bool IsOpen() const;
virtual bool SetEndOfFile();
};
#endif