// // FileScanner.hpp // libprojectM // // Cross-platform directory traversal with filtering by extension #ifndef FileScanner_hpp #define FileScanner_hpp #include #include #include #include #include "Common.hpp" #include #ifdef HAVE_FTS_H #include extern "C" { #include #include } #else #include "dirent.h" #endif typedef std::function ScanCallback; class FileScanner { public: FileScanner(); FileScanner(std::vector &rootDirs, std::vector &extensions); void scan(ScanCallback cb); std::string extensionMatches(std::string &filename); private: std::vector _rootDirs; std::vector _extensions; void scanGeneric(ScanCallback cb, const char *dir); void scanPosix(ScanCallback cb); void handleDirectoryError(std::string dir); }; #endif /* FileScanner_hpp */