// NCachedFile.h: CNCachedFile クラスのインターフェイス
//
//////////////////////////////////////////////////////////////////////

#if !defined(_NCACHEDFILE_H_)
#define _NCACHEDFILE_H_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "NFile.h"

#define DEFBUFFSIZE		0x00400000	// 4MB


class CNCachedFile : public CNFile  
{
public:
	CNCachedFile();
	virtual ~CNCachedFile();

	const BOOL Open(LPCTSTR lpszName, BYTE bFlags, const DWORD dwBuffSize = DEFBUFFSIZE);
	void Close(void);

	const BOOL Read(BYTE *pBuff, const DWORD dwLen);
	const BOOL Read(BYTE *pBuff, const DWORD dwLen, const LONGLONG llPos);

	const BOOL Write(const BYTE *pBuff, const DWORD dwLen);
	const BOOL Write(const BYTE *pBuff, const DWORD dwLen, const LONGLONG llPos);

	const BOOL Seek(const LONGLONG llPos);

	const BOOL Flush(void);

private:
	BOOL m_bIsWritable;

	BYTE *m_pBuff;
	LONGLONG m_llDataPos;
	LONGLONG m_llDataSize;
	DWORD m_dwBuffSize;

	LONGLONG m_llCurPos;
};

#endif // !defined(_NCACHEDFILE_H_)
