haiku/headers/os/package/solver/SolverProblem.h
Ingo Weinhold 1a4d020daf Flesh out the package kit solver API quite a bit more
* Reorganize things a bit:
  - BSolver is now an abstract base class.
  - A libsolv based implementation, LibsolvSolver, lives in a new
    add-on, which is loaded lazily.
  - Get rid of libpackage_solver. Save for LibsolvSolver everything
    is moved to libpackage.
  - This is a nicer solution for the cyclic dependency caused by
    libsolv (libsolvext to be precise) using the package kit for
    reading repositories and package files.
* Add a solver result data structure and and an accessor the solver.
* Add problem reporting support to the solver. There aren't data
  structures for the problem solutions yet and support for selecting
  solutions and re-solving is missing as well.
2013-04-03 02:15:57 +00:00

70 lines
1.6 KiB
C++

/*
* Copyright 2013, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _PACKAGE__SOLVER_PROBLEM_H_
#define _PACKAGE__SOLVER_PROBLEM_H_
#include <package/PackageResolvableExpression.h>
namespace BPackageKit {
class BSolverPackage;
class BSolverProblem {
public:
enum BType {
B_UNSPECIFIED,
B_NOT_IN_DISTUPGRADE_REPOSITORY,
B_INFERIOR_ARCHITECTURE,
B_INSTALLED_PACKAGE_PROBLEM,
B_CONFLICTING_REQUESTS,
B_REQUESTED_RESOLVABLE_NOT_PROVIDED,
B_REQUESTED_RESOLVABLE_PROVIDED_BY_SYSTEM,
B_DEPENDENCY_PROBLEM,
B_PACKAGE_NOT_INSTALLABLE,
B_DEPENDENCY_NOT_PROVIDED,
B_PACKAGE_NAME_CLASH,
B_PACKAGE_CONFLICT,
B_PACKAGE_OBSOLETES_RESOLVABLE,
B_INSTALLED_PACKAGE_OBSOLETES_RESOLVABLE,
B_PACKAGE_IMPLICITLY_OBSOLETES_RESOLVABLE,
B_DEPENDENCY_NOT_INSTALLABLE,
B_SELF_CONFLICT
};
public:
BSolverProblem(BType type,
BSolverPackage* sourcePackage,
BSolverPackage* targetPackage = NULL);
BSolverProblem(BType type,
BSolverPackage* sourcePackage,
BSolverPackage* targetPackage,
const BPackageResolvableExpression&
dependency);
~BSolverProblem();
BType Type() const;
BSolverPackage* SourcePackage() const;
BSolverPackage* TargetPackage() const;
const BPackageResolvableExpression& Dependency() const;
BString ToString() const;
private:
BType fType;
BSolverPackage* fSourcePackage;
BSolverPackage* fTargetPackage;
BPackageResolvableExpression fDependency;
};
} // namespace BPackageKit
#endif // _PACKAGE__SOLVER_PROBLEM_H_