#ifndef _KILIB_FIND_H_
#define _KILIB_FIND_H_
#include "types.h"
#include "memory.h"
#include "path.h"
#ifndef __ccdoc__
namespace ki {
#endif



//=========================================================================
//@{ @pkg ki.WinUtil //@}
//@{
//	ファイル検索
//
//	Win32 APIのFindFirstFile等を用いて、ディレクトリ内の
//	ファイルリストアップを行います。
//@}
//=========================================================================

class FindFile : public Object
{
public:

	//@{ コンストラクタ //@}
	FindFile();

	//@{ デストラクタ //@}
	~FindFile();

	//@{ 検索終了処理 //@}
	void Close();

public: //-- 外向きインターフェイス --------------------------

	bool Begin( const TCHAR* wild );
	bool Next( WIN32_FIND_DATA* pfd );

public:

	//@{ static版。マッチする最初のファイルを取得 //@}
	static bool FindFirst( const TCHAR* wild, WIN32_FIND_DATA* pfd );

private:

	HANDLE         han_;
	bool         first_;
	WIN32_FIND_DATA fd_;

private:

	NOCOPY(FindFile);
};



//-------------------------------------------------------------------------

inline FindFile::FindFile()
	: han_( INVALID_HANDLE_VALUE ) {}

inline FindFile::~FindFile()
	{ Close(); }



//=========================================================================

}      // namespace ki
#endif // _KILIB_FIND_H_
