diff --git a/headers/os/package/solver/SolverRepository.h b/headers/os/package/solver/SolverRepository.h index e15c401e93..de3d63c4f2 100644 --- a/headers/os/package/solver/SolverRepository.h +++ b/headers/os/package/solver/SolverRepository.h @@ -65,6 +65,8 @@ public: BSolverPackage** _package = NULL); status_t AddPackages( BPackageInstallationLocation location); + bool RemovePackage(BSolverPackage* package); + bool DeletePackage(BSolverPackage* package); uint64 ChangeCount() const; diff --git a/src/kits/package/solver/SolverRepository.cpp b/src/kits/package/solver/SolverRepository.cpp index e813d59273..60415c4e5d 100644 --- a/src/kits/package/solver/SolverRepository.cpp +++ b/src/kits/package/solver/SolverRepository.cpp @@ -309,6 +309,28 @@ BSolverRepository::AddPackages(BPackageInstallationLocation location) } +bool +BSolverRepository::RemovePackage(BSolverPackage* package) +{ + if (!fPackages.RemoveItem(package, false)) + return false; + + fChangeCount++; + return true; +} + + +bool +BSolverRepository::DeletePackage(BSolverPackage* package) +{ + if (!RemovePackage(package)) + return false; + + delete package; + return true; +} + + uint64 BSolverRepository::ChangeCount() const {