22 #ifndef ZYPP_SOLVER_DETAIL_RESOLVER_H
23 #define ZYPP_SOLVER_DETAIL_RESOLVER_H
24 #ifndef ZYPP_USE_RESOLVER_INTERNALS
25 #error Do not directly include this file!
58 typedef std::list<PoolItem> PoolItemList;
59 typedef std::set<PoolItem> PoolItemSet;
73 typedef std::multimap<PoolItem,ItemCapKind> ItemCapKindMap;
76 SATResolver *_satResolver;
77 SerialNumberWatcher _poolchanged;
81 std::set<Repository> _upgradeRepos;
84 PoolItemList _addWeak;
97 bool _allowVendorChange;
98 bool _solveSrcPackages;
99 bool _cleandepsOnRemove;
101 bool _ignoreAlreadyRecommended;
110 ItemCapKindMap _isInstalledBy;
111 ItemCapKindMap _installs;
112 ItemCapKindMap _satifiedByInstalled;
113 ItemCapKindMap _installedSatisfied;
116 void collectResolverInfo();
121 bool checkUnmaintainedItems ();
127 Resolver(
const ResPool & pool );
132 std::ostream &
dumpOn( std::ostream & str )
const;
134 friend std::ostream&
operator<<( std::ostream& str,
const Resolver & obj )
135 {
return obj.dumpOn (str); }
139 ResPool pool()
const;
140 void setPool(
const ResPool & pool ) { _pool = pool; }
142 void addUpgradeRepo( Repository repo_r ) {
if ( repo_r && ! repo_r.isSystemRepo() ) _upgradeRepos.insert( repo_r ); }
143 bool upgradingRepo( Repository repo_r )
const {
return( _upgradeRepos.find( repo_r ) != _upgradeRepos.end() ); }
144 void removeUpgradeRepo( Repository repo_r ) { _upgradeRepos.erase( repo_r ); }
145 void removeUpgradeRepos() { _upgradeRepos.clear(); }
146 const std::set<Repository> & upgradeRepos()
const {
return _upgradeRepos; }
148 void addExtraRequire(
const Capability & capability );
149 void removeExtraRequire(
const Capability & capability );
150 void addExtraConflict(
const Capability & capability );
151 void removeExtraConflict(
const Capability & capability );
153 void removeQueueItem( SolverQueueItem_Ptr item );
154 void addQueueItem( SolverQueueItem_Ptr item );
156 CapabilitySet extraRequires()
const {
return _extra_requires; }
157 CapabilitySet extraConflicts()
const {
return _extra_conflicts; }
159 void addWeak(
const PoolItem & item );
167 PoolItemList problematicUpdateItems()
const;
171 bool ignoreAlreadyRecommended()
const {
return _ignoreAlreadyRecommended; }
172 void setIgnoreAlreadyRecommended(
bool yesno_r ) { _ignoreAlreadyRecommended = yesno_r; }
174 bool onlyRequires ()
const {
return _onlyRequires; }
175 void setOnlyRequires(
TriBool state_r );
177 bool forceResolve()
const {
return _forceResolve; }
178 void setForceResolve(
TriBool state_r ) { _forceResolve = indeterminate(state_r) ?
false : bool(state_r); }
180 bool isUpgradeMode()
const {
return _upgradeMode; }
181 void setUpgradeMode(
bool yesno_r ) { _upgradeMode = yesno_r; }
183 bool isUpdateMode()
const {
return _updateMode; }
185 bool isVerifyingMode()
const {
return _verifying; }
186 void setVerifyingMode(
TriBool state_r ) { _verifying = indeterminate(state_r) ?
false : bool(state_r); }
188 bool allowVendorChange()
const {
return _allowVendorChange; }
189 void setAllowVendorChange(
TriBool state_r );
191 bool solveSrcPackages()
const {
return _solveSrcPackages; }
192 void setSolveSrcPackages(
TriBool state_r ) { _solveSrcPackages = indeterminate(state_r) ?
false : bool(state_r); }
194 bool cleandepsOnRemove()
const {
return _cleandepsOnRemove; }
195 void setCleandepsOnRemove(
TriBool state_r );
198 #define ZOLV_FLAG_TRIBOOL( ZSETTER, ZGETTER ) \
199 void ZSETTER( TriBool state_r ); \
200 bool ZGETTER() const; \
207 #undef ZOLV_FLAG_TRIBOOL
212 bool applySolution(
const ProblemSolution & solution );
215 sat::Transaction getTransaction();
220 void reset(
bool keepExtras =
false );
241 #endif // ZYPP_USE_RESOLVER_INTERNALS
242 #endif // ZYPP_SOLVER_DETAIL_RESOLVER_H
std::list< ProblemSolution_Ptr > ProblemSolutionList
std::list< SolverQueueItem_Ptr > SolverQueueItemList
boost::logic::tribool TriBool
3-state boolean logic (true, false and indeterminate).
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
std::list< ResolverProblem_Ptr > ResolverProblemList
ostream & operator<<(ostream &os, const SolutionActionList &actionlist)
ZOLV_FLAG_TRIBOOL(dupSetAllowDowngrade, dupAllowDowngrade, _dup_allowdowngrade, ZConfig::instance().solver_dupAllowDowngrade()) ZOLV_FLAG_TRIBOOL(dupSetAllowNameChange
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
std::unordered_set< Capability > CapabilitySet
std::list< ItemCapKind > ItemCapKindList