///////////////////////////////////////////////////////////////////////////////
//  CFindFile.h

#ifndef CFINDFILE_H_
#define CFINDFILE_H_

#include <memory>
#include <vector>
#include <string>

namespace filesystem {

class CFindFile {
#ifdef WIN32
	class CImpl;
	std::auto_ptr<CImpl>	m_Impl;
#endif

private:
	static bool	IsHidden(const std::string& FileName);
	static bool	IsSystem(const std::string& FileName);
	
	bool	GetFirst(const std::string& szSearch, std::string& szFound);
	bool	GetNext(std::string& szFound);

	bool	Close(void);

public:
	CFindFile(void);
	virtual ~CFindFile();

	static void		GetFileList(const std::string& FolderName, std::vector<std::string>& vecszList);

	static void		GetFileListWithinSubFolder(const std::string& FolderName, std::vector<std::string>& vecszList);

	static void		GetFolderList(const std::string& FolderName, std::vector<std::string>& vecszList);

	//
	static bool		IsExistFile(const std::string& szFileName);
	static bool		IsExistDir(const std::string& szFileName);
};

} // end of namespace filesystem

#endif // CFINDFILE_H_

