1/*
2 * Copyright 2013, Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _PACKAGE__SOLVER_PROBLEM_SOLUTION_H_
6#define _PACKAGE__SOLVER_PROBLEM_SOLUTION_H_
7
8
9#include <ObjectList.h>
10#include <String.h>
11
12
13namespace BPackageKit {
14
15
16class BSolverPackage;
17
18
19class BSolverProblemSolutionElement {
20public:
21			enum BType {
22				B_UNSPECIFIED,
23				B_DONT_KEEP,
24				B_DONT_INSTALL,
25				B_DONT_INSTALL_MOST_RECENT,
26				B_DONT_FORBID_INSTALLATION,
27				B_DONT_DEINSTALL,
28				B_DONT_DEINSTALL_ALL,
29				B_DONT_LOCK,
30				B_KEEP_INFERIOR_ARCHITECTURE,
31				B_KEEP_EXCLUDED,
32				B_KEEP_OLD,
33				B_INSTALL_INFERIOR_ARCHITECTURE,
34				B_INSTALL_EXCLUDED,
35				B_INSTALL_OLD,
36				B_ALLOW_DOWNGRADE,
37				B_ALLOW_NAME_CHANGE,
38				B_ALLOW_ARCHITECTURE_CHANGE,
39				B_ALLOW_VENDOR_CHANGE,
40				B_ALLOW_REPLACEMENT,
41				B_ALLOW_DEINSTALLATION
42			};
43
44public:
45								BSolverProblemSolutionElement(BType type,
46									BSolverPackage* sourcePackage,
47									BSolverPackage* targetPackage,
48									const BString& selection);
49								~BSolverProblemSolutionElement();
50
51			BType				Type() const;
52			BSolverPackage*		SourcePackage() const;
53			BSolverPackage*		TargetPackage() const;
54			const BString&		Selection() const;
55
56			BString				ToString() const;
57
58private:
59			BType				fType;
60			BSolverPackage*		fSourcePackage;
61			BSolverPackage*		fTargetPackage;
62			BString				fSelection;
63};
64
65
66class BSolverProblemSolution {
67public:
68			typedef BSolverProblemSolutionElement Element;
69
70public:
71								BSolverProblemSolution();
72								~BSolverProblemSolution();
73
74			int32				CountElements() const;
75			const Element*		ElementAt(int32 index) const;
76
77			bool				AppendElement(const Element& element);
78
79private:
80			typedef BObjectList<Element> ElementList;
81
82private:
83			ElementList			fElements;
84};
85
86
87}	// namespace BPackageKit
88
89
90#endif // _PACKAGE__SOLVER_PROBLEM_SOLUTION_H_
91