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! 50 typedef std::list<PoolItem> PoolItemList;
51 typedef std::set<PoolItem> PoolItemSet;
65 typedef std::multimap<PoolItem,ItemCapKind> ItemCapKindMap;
68 SATResolver *_satResolver;
69 SerialNumberWatcher _poolchanged;
73 std::set<Repository> _upgradeRepos;
76 PoolItemList _addWeak;
86 bool _solveSrcPackages;
87 bool _cleandepsOnRemove;
89 bool _ignoreAlreadyRecommended;
98 ItemCapKindMap _isInstalledBy;
99 ItemCapKindMap _installs;
100 ItemCapKindMap _satifiedByInstalled;
101 ItemCapKindMap _installedSatisfied;
104 void collectResolverInfo();
109 bool checkUnmaintainedItems ();
115 Resolver(
const ResPool & pool );
120 std::ostream &
dumpOn( std::ostream &
str )
const;
122 friend std::ostream&
operator<<( std::ostream&
str,
const Resolver & obj )
123 {
return obj.dumpOn (
str); }
127 ResPool pool()
const;
128 void setPool(
const ResPool & pool ) { _pool = pool; }
130 void addUpgradeRepo( Repository repo_r ) {
if ( repo_r && ! repo_r.isSystemRepo() ) _upgradeRepos.insert( repo_r ); }
131 bool upgradingRepo( Repository repo_r )
const {
return( _upgradeRepos.find( repo_r ) != _upgradeRepos.end() ); }
132 void removeUpgradeRepo( Repository repo_r ) { _upgradeRepos.erase( repo_r ); }
133 void removeUpgradeRepos() { _upgradeRepos.clear(); }
134 const std::set<Repository> & upgradeRepos()
const {
return _upgradeRepos; }
136 void addExtraRequire(
const Capability & capability );
137 void removeExtraRequire(
const Capability & capability );
138 void addExtraConflict(
const Capability & capability );
139 void removeExtraConflict(
const Capability & capability );
141 void removeQueueItem( SolverQueueItem_Ptr item );
142 void addQueueItem( SolverQueueItem_Ptr item );
144 CapabilitySet extraRequires()
const {
return _extra_requires; }
145 CapabilitySet extraConflicts()
const {
return _extra_conflicts; }
147 void addWeak(
const PoolItem & item );
155 PoolItemList problematicUpdateItems()
const;
159 bool ignoreAlreadyRecommended()
const {
return _ignoreAlreadyRecommended; }
160 void setIgnoreAlreadyRecommended(
bool yesno_r ) { _ignoreAlreadyRecommended = yesno_r; }
162 bool onlyRequires ()
const {
return _onlyRequires; }
163 void setOnlyRequires(
TriBool state_r );
165 bool isUpgradeMode()
const {
return _upgradeMode; }
166 void setUpgradeMode(
bool yesno_r ) { _upgradeMode = yesno_r; }
168 bool isUpdateMode()
const {
return _updateMode; }
169 void setUpdateMode(
bool yesno_r ) { _updateMode = yesno_r; }
171 bool isVerifyingMode()
const {
return _verifying; }
172 void setVerifyingMode(
TriBool state_r ) { _verifying = indeterminate(state_r) ? false :
bool(state_r); }
174 bool solveSrcPackages()
const {
return _solveSrcPackages; }
175 void setSolveSrcPackages(
TriBool state_r ) { _solveSrcPackages = indeterminate(state_r) ? false :
bool(state_r); }
177 bool cleandepsOnRemove()
const {
return _cleandepsOnRemove; }
178 void setCleandepsOnRemove(
TriBool state_r );
184 #define ZOLV_FLAG_TRIBOOL( ZSETTER, ZGETTER ) \ 185 void ZSETTER( TriBool state_r ); \ 186 bool ZGETTER() const; \ 200 #undef ZOLV_FLAG_TRIBOOL 205 bool applySolution(
const ProblemSolution & solution );
208 sat::Transaction getTransaction();
213 void reset(
bool keepExtras =
false );
237 #endif // ZYPP_USE_RESOLVER_INTERNALS 238 #endif // ZYPP_SOLVER_DETAIL_RESOLVER_H std::list< ProblemSolution_Ptr > ProblemSolutionList
Common types used in the Resolver public API and need to be passed down to the details tree...
ResolverFocus
The resolvers general attitude.
String related utilities and Regular expression matching.
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
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
std::unordered_set< Capability > CapabilitySet
::s_Solver CSolver
Wrapped libsolv C data type exposed as backdoor.
std::list< ItemCapKind > ItemCapKindList
ZOLV_FLAG_TRIBOOL(setAllowNameChange, allowNameChange, _allownamechange, true) ZOLV_FLAG_TRIBOOL(setAllowVendorChange
std::ostream & operator<<(std::ostream &os, const SolutionActionList &actionlist)
Easy-to use interface to the ZYPP dependency resolver.