//----------------------------------------------------------------------------- // // File: clfile.h // Copyright (C) 1994-1997 Microsoft Corporation // All rights reserved. // // Wrapper class for CFile. It allows us to use CPascalString for // file names, and does some 'text mode' read/write operations. // This class contains a pointer to a CFile but contains most of // the CFile methods thus it can be used as a CFile. CLFile will either // use an existing CFile provided at construction time or it will create its // own CFile as needed. In either case, the enbeded CFile is destroyed when // the CLFile is destroyed. // //----------------------------------------------------------------------------- #ifndef CLFILE_H #define CLFILE_H #pragma warning(disable : 4275) class LTAPIENTRY CLFile : public CObject { public: CLFile(); CLFile(CFile *); ~CLFile(); void AssertValid(void) const; //----------------------------------------------------------------------------- // The following are the CFile methods that are reimplemented //----------------------------------------------------------------------------- DWORD GetPosition() const; DWORD SeekToEnd(); void SeekToBegin(); LONG Seek(LONG lOff, UINT nFrom); void SetLength(DWORD dwNewLen); DWORD GetLength() const; UINT Read(void* lpBuf, UINT nCount); void Write(const void* lpBuf, UINT nCount); void LockRange(DWORD dwPos, DWORD dwCount); void UnlockRange(DWORD dwPos, DWORD dwCount); void Abort(); void Flush(); void Close(); CLString GetFileName(void) const; //----------------------------------------------------------------------------- // The following are all the CLFile methods //----------------------------------------------------------------------------- BOOL Open(const CPascalString &pstrFileName, UINT nOpenFlags, CFileException *pError = NULL); static void Rename(const CPascalString &pstrFileName, const CPascalString &pstrNewName); static void Remove(const CPascalString &pstrFileName); static void CopyFile( const CPascalString &pasSource, const CPascalString &pasTarget, BOOL fFailIfExist = TRUE, CProgressiveObject *pProgress = NULL); static BOOL GetStatus(const CPascalString &pstrFileName, CFileStatus &rStatus); static void SetStatus(const CPascalString &pstrFileName, const CFileStatus &status); UINT ReadLine(CPascalString &pstrLine, CodePage cp); UINT ReadLine(CPascalString &pstrLine); UINT ReadString(CPascalString &pstrLine, CodePage cp); UINT ReadString(CPascalString &pstrLine); UINT ReadByte(BYTE &); UINT ReadWord(WORD &, BOOL BigEnded = FALSE); UINT ReadDWord(DWORD &, BOOL BigEnded = FALSE); UINT ReadPascalB(CPascalString &); UINT ReadPascalW(CPascalString &); UINT ReadPascalD(CPascalString &); UINT ReadPascalB(CPascalString &, CodePage); UINT ReadPascalW(CPascalString &, CodePage); UINT ReadPascalD(CPascalString &, CodePage); UINT Read(CPascalString &pstr, UINT nCount, CodePage cp); UINT Read(CPascalString &pstr, UINT nCount); UINT WriteLine(const CPascalString &pstrLine, CodePage cp); UINT WriteLine(const CPascalString &pstrLine); UINT WriteString(const CPascalString &pstrString, CodePage cp); UINT WriteString(const CPascalString &pstrString); UINT WriteByte(const BYTE &); UINT WriteWord(const WORD &, BOOL BigEnded = FALSE); UINT WriteDWord(const DWORD &, BOOL BigEnded = FALSE); UINT WritePascalB(const CPascalString &); UINT WritePascalW(const CPascalString &); UINT WritePascalD(const CPascalString &); UINT WritePascalB(const CPascalString &, CodePage); UINT WritePascalW(const CPascalString &, CodePage); UINT WritePascalD(const CPascalString &, CodePage); UINT Write(const CPascalString &pstrString); UINT Write(const CPascalString &pstrString, CodePage cp); UINT SkipToBoundary(UINT nBoundary); UINT PadToBoundary(UINT nBoundary, BYTE ucPad = 0); void Pad(UINT nCount, BYTE ucPad = 0); UINT CopyRange(CLFile &Target, UINT uiNumBytes, CProgressiveObject *pProgress = NULL); protected: CFile *m_pFile; BOOL m_bDeleteFile; //Should we delete m_pFile in our destructor? }; enum FileStat { fsNoStatus = 0x00, fsNotFound = 0x01, fsUpToDate = 0x02, fsFileNewer = 0x04, fsFileOlder = 0x08, fsNotReadable = 0x10, fsNotWritable = 0x20 }; WORD LTAPIENTRY LocateFile( const CLString &strFileName, const COleDateTime &tGmtFileTime); #pragma warning(default : 4275) #if !defined(_DEBUG) || defined(IMPLEMENT) #include "clfile.inl" #endif #endif // CLFILE_H