haiku/headers/os/package/solver/SolverResult.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

68 lines
1.2 KiB
C++

/*
* Copyright 2013, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _PACKAGE__SOLVER_RESULT_H_
#define _PACKAGE__SOLVER_RESULT_H_
#include <ObjectList.h>
namespace BPackageKit {
class BSolverPackage;
class BSolverResultElement {
public:
enum BType {
B_TYPE_INSTALL,
B_TYPE_UNINSTALL
};
public:
BSolverResultElement(BType type,
BSolverPackage* package);
BSolverResultElement(
const BSolverResultElement& other);
~BSolverResultElement();
BType Type() const;
BSolverPackage* Package() const;
BSolverResultElement& operator=(const BSolverResultElement& other);
private:
BType fType;
BSolverPackage* fPackage;
};
class BSolverResult {
public:
BSolverResult();
~BSolverResult();
bool IsEmpty() const;
int32 CountElements() const;
const BSolverResultElement* ElementAt(int32 index) const;
void MakeEmpty();
bool AppendElement(
const BSolverResultElement& element);
private:
typedef BObjectList<BSolverResultElement> ElementList;
private:
ElementList fElements;
};
} // namespace BPackageKit
#endif // _PACKAGE__SOLVER_RESULT_H_