/* * FolderScanner.h * --------------- * Purpose: Class for finding files in folders. * Notes : (currently none) * Authors: OpenMPT Devs * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ #pragma once #include "openmpt/all/BuildSettings.hpp" #include "../common/mptPathString.h" OPENMPT_NAMESPACE_BEGIN class FolderScanner { public: enum ScanType { kOnlyFiles = 0x01, kOnlyDirectories = 0x02, kFilesAndDirectories = kOnlyFiles | kOnlyDirectories, kFindInSubDirectories = 0x04, }; protected: std::vector m_paths; mpt::PathString m_currentPath; mpt::PathString m_filter; HANDLE m_hFind; WIN32_FIND_DATA m_wfd; FlagSet m_type; public: FolderScanner(const mpt::PathString &path, FlagSet type, mpt::PathString filter = MPT_PATHSTRING("*.*")); ~FolderScanner(); // Return one file or directory at a time in parameter file. Returns true if a file was found (file parameter is valid), false if no more files can be found (file parameter is not touched). bool Next(mpt::PathString &file); }; MPT_DECLARE_ENUM(FolderScanner::ScanType) OPENMPT_NAMESPACE_END