47 {
return backup( status_r ); }
82 if ( ! status.
setLock(
false, causer_r ) )
return false;
83 if ( ! status.
setTransact(
true, causer_r ) )
return false;
91 if ( ! status.
setTransact(
false, causer_r ) )
return false;
92 if ( ! status.
setLock(
true, causer_r ) )
return false;
100 if ( ! status.
setTransact(
false, causer_r ) )
return false;
101 if ( ! status.
setLock(
false, causer_r ) )
return false;
111 if ( ! status.
setTransact(
false, causer_r ) )
return false;
122 if ( ! status.
setTransact(
false, causer_r ) )
return false;
131 template <
class TIter>
132 bool forEach( TIter begin_r, TIter end_r,
Action action_r, Causer causer_r )
134 for_( it, begin_r, end_r )
135 if ( ! (this->*action_r)( *it, causer_r ) )
154 , inst( impl.installedObj() )
155 , cand( impl.candidateObj() )
165 {
return bool(inst); }
168 {
return bool(cand); }
171 {
return inst && !cand; }
174 {
return cand && !inst; }
177 {
return inst && cand; }
186 for_( it, _impl.installedBegin(), _impl.installedEnd() )
191 if ( ! cand->multiversionInstall() )
201 if ( ! unlockCandidates() )
return restore();
213 if ( ! resetTransactingCandidates() )
return restore();
214 for_( it, _impl.installedBegin(), _impl.installedEnd() )
229 for_( it, _impl.installedBegin(), _impl.installedEnd() )
236 if ( ! unlockCandidates() )
return restore();
246 resetTransactingCandidates();
247 for_( it, _impl.installedBegin(), _impl.installedEnd() )
249 it->status().setTransact(
false, causer );
250 it->status().setLock(
true, causer );
275 for_( it, _impl.availableBegin(), _impl.availableEnd() )
278 if ( ! status.
setTransact(
false, causer ) )
return false;
284 for_( it, _impl.availableBegin(), _impl.availableEnd() )
287 if ( ! status.
setTransact(
false, causer ) )
return false;
288 if ( ! status.
setLock(
false, causer ) )
return false;
294 for_( it, _impl.availableBegin(), _impl.availableEnd() )
297 if ( ! status.
setTransact(
false, causer ) )
return false;
298 if ( ! status.
setLock(
true, causer ) )
return false;
333 if ( installedObj() && installedObj().status().transacts() )
338 if ( installedObj() && allInstalledLocked() )
341 if ( !installedObj() && allCandidatesLocked() )
345 if ( installedObj() )
362 return self.setProtected();
364 return self.setTaboo();
373 return self.setDelete();
377 return self.hasCandidateOnly() &&
self.setInstall();
381 return self.hasBoth() &&
self.setInstall();
385 return self.hasInstalled() &&
self.unset();
389 return !
self.hasInstalled() &&
self.unset();
400 if ( newCandidate_r )
402 for_( it, availableBegin(), availableEnd() )
404 if ( *it == newCandidate_r )
414 PoolItem trans( transactingCandidate() );
415 if ( trans && trans != newCandidate )
433 return _candidate = newCandidate;
440 if ( identicalInstalled( pi_r ) )
452 if ( pi_r.
ident() != ident() )
456 std::vector<PoolItem> i;
457 std::vector<PoolItem> a;
459 for_( it, installedBegin(), installedEnd() )
462 for_( it, availableBegin(), availableEnd() )
502 if ( i.empty() && ! a.empty() )
505 if ( cand.multiversionInstall() )
510 if ( ! cand.status().setTransact(
true, causer_r ) )
return backup.
restore();
519 if ( ! setCandidate( cand, causer_r ) )
return backup.
restore();
527 if ( ! i.empty() && ! a.empty() )
530 if ( cand.multiversionInstall() )
537 if ( ! cand.status().setTransact(
true, causer_r ) )
return backup.
restore();
546 if ( ! setCandidate( cand, causer_r ) )
return backup.
restore();
578 std::vector<PoolItem> i;
579 std::vector<PoolItem> a;
583 for_( it, installedBegin(), installedEnd() )
591 for_( it, availableBegin(), availableEnd() )
612 for_( it, i.begin(), i.end() )
613 if ( it->status().isLocked() )
618 bool allALocked =
true;
619 for_( it, a.begin(), a.end() )
620 if ( ! it->status().isLocked() )
634 && ( ta ? ta : *a.begin() ).status().isSatisfied() )
648 if ( installedObj() && installedObj().status().transacts() )
649 return installedObj().status().getTransactByValue();
654 if ( installedObj() )
655 return installedObj().status().getTransactByValue();
ResStatus::TransactByValue Causer
ResStatus::TransactByValue modifiedBy() const
Return who caused the modification.
Status
UI status Status values calculated by Selectable.
bool hasCandidate() const
IdString ident() const
The identifier.
bool unsetNonMultiTransact(const PoolItem &pi_r, Causer causer_r)
highlevel remove transact from non-multiversion packages.
bool transact(const PoolItem &pi_r, Causer causer_r)
highevel set transact (force unlock).
bool setStatus(Status state_r, ResStatus::TransactByValue causer_r)
bool setLock(const PoolItem &pi_r, bool yesno_r, Causer causer_r)
lowlevel ResStatus::setLock
Status pickStatus(const PoolItem &pi_r) const
bool setTransactTrue(const PoolItem &pi_r, Causer causer_r)
lowlevel ResStatus::setTransact(true).
bool hasInstalledOnly() const
ResStatus & backup(const PoolItem &pi_r)
Simple ResStatus backup stack.
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
bool multiversionInstall() const
PoolItem setCandidate(const PoolItem &newCandidate_r, ResStatus::TransactByValue causer_r)
Set a userCandidate (out of available objects).
bool unsetMultiTransact(const PoolItem &pi_r, Causer causer_r)
highlevel remove transact from multiversion packages.
std::vector< resstatus::StatusBackup > _backup
bool hasCandidateOnly() const
ResStatus & operator()(const PoolItem &pi_r)
bool maySetTransact(bool val_r, TransactByValue causer)
bool identical(const SolvableType< Derived > &lhs, const Solvable &rhs)
ResStatus::TransactByValue causer
const Selectable::Impl & _impl
SelectableTraits::available_const_iterator available_const_iterator
ResStatus & backup(ResStatus &status_r)
Backup status.
bool(StatusBackup::* Action)(const PoolItem &, Causer)
Highlevel action.
ResStatus & status() const
Returns the current status.
bool setLock(bool toLock_r, TransactByValue causer_r)
Apply a lock (prevent transaction).
bool resetTransactingCandidates()
StatusHelper(const Selectable::Impl &impl, ResStatus::TransactByValue causer_r)
Selectable::Impl::available_const_iterator available_const_iterator
bool lock(const PoolItem &pi_r, Causer causer_r)
highlevel set locked.
bool isPseudoInstalled(ResKind kind_r)
Those are denoted to be installed, if the solver verifies them as being satisfied.
bool setTransact(bool toTansact_r, TransactByValue causer_r)
Toggle between TRANSACT and KEEP_STATE.
bool forEach(TIter begin_r, TIter end_r, Action action_r, Causer causer_r)
Highlevel action on range of items.
Selectable implementation.
Solvable satSolvable() const
Return the corresponding sat::Solvable.
bool restore()
Restore all status.
bool unlock(const PoolItem &pi_r, Causer causer_r)
highlevel unlock (also unsets transact).
Combining sat::Solvable and ResStatus.
bool setPickStatus(const PoolItem &pi_r, Status state_r, ResStatus::TransactByValue causer_r)
bool setTransact(const PoolItem &pi_r, bool yesno_r, Causer causer_r)
lowlevel ResStatus::setTransact
bool pickInstall(const PoolItem &pi_r, ResStatus::TransactByValue causer_r, bool yesno_r)
Easy-to use interface to the ZYPP dependency resolver.
bool hasInstalled() const
bool setTransactFalse(const PoolItem &pi_r, Causer causer_r)
lowlevel ResStatus::setTransact(false).
ResStatus & operator()(ResStatus &status_r)
Backup status.
bool pickDelete(const PoolItem &pi_r, ResStatus::TransactByValue causer_r, bool yesno_r)
TransactByValue getTransactByValue() const