PackageVersion *AbstractRepository::findBestMatchToInstall( const Dependency &dep, const QList<PackageVersion *> &avoid, QString *err) { PackageVersion* res = 0; QList<PackageVersion*> pvs = getPackageVersions_(dep.package, err); if (err->isEmpty()) { for (int i = 0; i < pvs.count(); i++) { PackageVersion* pv = pvs.at(i); if (dep.test(pv->version) && pv->download.isValid() && PackageVersion::indexOf(avoid, pv) < 0) { if (res == 0 || pv->version.compare(res->version) > 0) res = pv; } } } if (res) { res = res->clone(); } qDeleteAll(pvs); return res; }
QList<PackageVersion *> AbstractRepository::findAllMatchesToInstall( const Dependency &dep, const QList<PackageVersion *> &avoid, QString *err) { QList<PackageVersion*> res; QList<PackageVersion*> pvs = getPackageVersions_(dep.package, err); if (err->isEmpty()) { for (int i = 0; i < pvs.count(); i++) { PackageVersion* pv = pvs.at(i); if (dep.test(pv->version) && pv->download.isValid() && PackageVersion::indexOf(avoid, pv) < 0) { res.append(pv->clone()); } } } qDeleteAll(pvs); return res; }
PackageVersion* AbstractRepository::findNewestInstallablePackageVersion_( const QString &package, QString* err) const { PackageVersion* r = 0; QList<PackageVersion*> pvs = this->getPackageVersions_(package, err); if (err->isEmpty()) { for (int i = 0; i < pvs.count(); i++) { PackageVersion* p = pvs.at(i); if (r == 0 || p->version.compare(r->version) > 0) { if (p->download.isValid()) r = p; } } } if (r) r = r->clone(); qDeleteAll(pvs); return r; }