File Annotation

Not logged in
dcdd144598 2011-02-23        kinaba: #ifndef _KILIB_FILE_H_
dcdd144598 2011-02-23        kinaba: #define _KILIB_FILE_H_
dcdd144598 2011-02-23        kinaba: #include "types.h"
dcdd144598 2011-02-23        kinaba: #include "memory.h"
dcdd144598 2011-02-23        kinaba: #ifndef __ccdoc__
dcdd144598 2011-02-23        kinaba: namespace ki {
dcdd144598 2011-02-23        kinaba: #endif
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: //@{ @pkg ki.StdLib //@}
dcdd144598 2011-02-23        kinaba: //@{
dcdd144598 2011-02-23        kinaba: //	簡易ファイル読込
dcdd144598 2011-02-23        kinaba: //
dcdd144598 2011-02-23        kinaba: //	ファイルマッピングを用いるので、扱いが簡単でわりと高速です。
dcdd144598 2011-02-23        kinaba: //	ただし困ったことに、4GBまでしか開けません。
dcdd144598 2011-02-23        kinaba: //@}
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: class FileR : public Object
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: public:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	FileR();
dcdd144598 2011-02-23        kinaba: 	~FileR();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{
dcdd144598 2011-02-23        kinaba: 	//	開く
dcdd144598 2011-02-23        kinaba: 	//	@param fname ファイル名
dcdd144598 2011-02-23        kinaba: 	//	@return 開けたかどうか
dcdd144598 2011-02-23        kinaba: 	//@}
dcdd144598 2011-02-23        kinaba: 	bool Open( const TCHAR* fname );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{
dcdd144598 2011-02-23        kinaba: 	//	閉じる
dcdd144598 2011-02-23        kinaba: 	//@}
dcdd144598 2011-02-23        kinaba: 	void Close();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: public:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ ファイルサイズ //@}
dcdd144598 2011-02-23        kinaba: 	ulong size() const;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ ファイル内容をマップしたアドレス取得 //@}
dcdd144598 2011-02-23        kinaba: 	const uchar* base() const;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: private:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	HANDLE      handle_;
dcdd144598 2011-02-23        kinaba: 	HANDLE      fmo_;
dcdd144598 2011-02-23        kinaba: 	ulong       size_;
dcdd144598 2011-02-23        kinaba: 	const void* basePtr_;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: private:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	NOCOPY(FileR);
dcdd144598 2011-02-23        kinaba: };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //-------------------------------------------------------------------------
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: inline ulong FileR::size() const
dcdd144598 2011-02-23        kinaba: 	{ return size_; }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: inline const uchar* FileR::base() const
dcdd144598 2011-02-23        kinaba: 	{ return static_cast<const uchar*>(basePtr_); }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: //@{
dcdd144598 2011-02-23        kinaba: //	簡易ファイル書き込み
dcdd144598 2011-02-23        kinaba: //
dcdd144598 2011-02-23        kinaba: //	てきとーにバッファリングしつつ。
dcdd144598 2011-02-23        kinaba: //@}
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: class FileW : public Object
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: public:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	FileW();
dcdd144598 2011-02-23        kinaba: 	~FileW();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 開く //@}
dcdd144598 2011-02-23        kinaba: 	bool Open( const TCHAR* fname, bool creat=true );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 閉じる //@}
dcdd144598 2011-02-23        kinaba: 	void Close();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 書く //@}
dcdd144598 2011-02-23        kinaba: 	void Write( const void* buf, ulong siz );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 一文字書く //@}
dcdd144598 2011-02-23        kinaba: 	void WriteC( uchar ch );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: public:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	void Flush();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: private:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	const int    BUFSIZE;
dcdd144598 2011-02-23        kinaba: 	HANDLE       handle_;
dcdd144598 2011-02-23        kinaba: 	uchar* const buf_;
dcdd144598 2011-02-23        kinaba: 	ulong        bPos_;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: private:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	NOCOPY(FileW);
dcdd144598 2011-02-23        kinaba: };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: }      // namespace ki
dcdd144598 2011-02-23        kinaba: #endif // _KILIB_FILE_H_