// $Id: FilePool.hh 6012 2007-01-26 19:34:48Z m9710797 $ #ifndef FILEPOOL_HH #define FILEPOOL_HH #include "noncopyable.hh" #include #include #include #include #include namespace openmsx { class SettingsConfig; class File; class FilePool : private noncopyable { public: explicit FilePool(SettingsConfig& settingsConfig); ~FilePool(); std::auto_ptr getFile(const std::string& sha1sum); private: typedef std::multimap > Pool; typedef std::vector Directories; void readSha1sums(); void writeSha1sums(); std::auto_ptr getFromPool(const std::string& sha1sum); std::auto_ptr scanDirectory(const std::string& sha1sum, const std::string& directory); std::auto_ptr scanFile(const std::string& sha1sum, const std::string& filename); Pool::iterator findInDatabase(const std::string& filename); Pool pool; Directories directories; }; } // namespace openmsx #endif