/* */ #include "Metalinker.h" #include "MetalinkEntry.h" #include #include namespace aria2 { Metalinker::Metalinker() {} Metalinker::~Metalinker() {} namespace { class EntryQuery: public std::unary_function, bool> { private: std::string version; std::string language; std::string os; public: EntryQuery(const std::string& version, const std::string& language, const std::string& os): version(version), language(language), os(os) {} bool operator()(const SharedHandle& entry) const { if(!version.empty()) { if(version != entry->version) { return false; } } if(!language.empty()) { if(!entry->containsLanguage(language)) { return false; } } if(!os.empty()) { if(!entry->containsOS(os)) { return false; } } return true; } }; } // namespace void Metalinker::queryEntry (std::vector >& queryResult, const std::string& version, const std::string& language, const std::string& os) const { std::remove_copy_if(entries_.begin(), entries_.end(), std::back_inserter(queryResult), std::not1(EntryQuery(version, language, os))); } void Metalinker::addEntry(const SharedHandle& entry) { entries_.push_back(entry); } } // namespace aria2