haiku/headers/os/package/solver/Solver.h
Ingo Weinhold 89cb001511 BSolver::VerifyInstallation(): Add flags parameter
Only flag ATM is B_VERIFY_ALLOW_UNINSTALL. It tells to solver to suggest
uninstalling packages when necessary instead of considering such a case
a problem.
2013-08-28 12:55:47 +02:00

102 lines
2.5 KiB
C++

/*
* Copyright 2013, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _PACKAGE__SOLVER_H_
#define _PACKAGE__SOLVER_H_
#include <ObjectList.h>
#include <SupportDefs.h>
namespace BPackageKit {
class BSolverPackage;
class BSolverPackageSpecifier;
class BSolverPackageSpecifierList;
class BSolverProblem;
class BSolverProblemSolution;
class BSolverRepository;
class BSolverResult;
class BSolver {
public:
// FindPackages() flags
enum {
B_FIND_CASE_INSENSITIVE = 0x01,
B_FIND_IN_NAME = 0x02,
B_FIND_IN_SUMMARY = 0x04,
B_FIND_IN_DESCRIPTION = 0x08,
B_FIND_IN_PROVIDES = 0x10,
B_FIND_INSTALLED_ONLY = 0x20,
};
// VerifyInstallation() flags
enum {
B_VERIFY_ALLOW_UNINSTALL = 0x01,
};
public:
virtual ~BSolver();
static status_t Create(BSolver*& _solver);
virtual status_t Init() = 0;
virtual status_t AddRepository(
BSolverRepository* repository) = 0;
virtual status_t FindPackages(const char* searchString,
uint32 flags,
BObjectList<BSolverPackage>& _packages) = 0;
virtual status_t FindPackages(
const BSolverPackageSpecifierList& packages,
uint32 flags,
BObjectList<BSolverPackage>& _packages,
const BSolverPackageSpecifier** _unmatched
= NULL) = 0;
virtual status_t Install(
const BSolverPackageSpecifierList& packages,
const BSolverPackageSpecifier** _unmatched
= NULL) = 0;
virtual status_t Uninstall(
const BSolverPackageSpecifierList& packages,
const BSolverPackageSpecifier** _unmatched
= NULL) = 0;
virtual status_t Update(
const BSolverPackageSpecifierList& packages,
bool installNotYetInstalled,
const BSolverPackageSpecifier** _unmatched
= NULL) = 0;
virtual status_t VerifyInstallation(uint32 flags = 0) = 0;
bool HasProblems() const
{ return CountProblems() > 0; }
virtual int32 CountProblems() const = 0;
virtual BSolverProblem* ProblemAt(int32 index) const = 0;
virtual status_t SelectProblemSolution(
BSolverProblem* problem,
const BSolverProblemSolution* solution) = 0;
virtual status_t SolveAgain() = 0;
virtual status_t GetResult(BSolverResult& _result) = 0;
protected:
BSolver();
};
// function exported by the libsolv based add-on
extern "C" BSolver* create_solver();
} // namespace BPackageKit
#endif // _PACKAGE__SOLVER_H_