/* * Copyright 2013, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. */ #ifndef _PACKAGE__SOLVER_H_ #define _PACKAGE__SOLVER_H_ #include #include 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& _packages) = 0; virtual status_t FindPackages( const BSolverPackageSpecifierList& packages, uint32 flags, BObjectList& _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_