/* */ #include "Metalinker.h" #include Metalinker::Metalinker() { } Metalinker::~Metalinker() {} class EntryQuery { private: string version; string language; string os; public: EntryQuery(const string& version, const string& language, const string& os): version(version), language(language), os(os) {} bool operator()(const MetalinkEntryHandle& entry) { if(!version.empty()) { if(version != entry->version) { return false; } } if(!language.empty()) { if(language != entry->language) { return false; } } if(!os.empty()) { if(os != entry->os) { return false; } } return true; } }; MetalinkEntries Metalinker::queryEntry(const string& version, const string& language, const string& os) const { MetalinkEntries resultEntries(entries.begin(), entries.end()); MetalinkEntries::iterator split = partition(resultEntries.begin(), resultEntries.end(), EntryQuery(version, language, os)); resultEntries.erase(split, resultEntries.end()); return resultEntries; }