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>
134 for_( it, begin_r, end_r )
135 if ( ! (this->*action_r)( *it, causer_r ) )
154 ,
inst( impl.installedObj() )
155 ,
cand( impl.candidateObj() )
249 it->status().setTransact(
false,
causer );
250 it->status().setLock(
true,
causer );
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 )
404 if ( *it == newCandidate_r )
414 PoolItem trans( transactingCandidate() );
415 if ( trans && trans != newCandidate )
433 return _candidate = newCandidate;
456 std::vector<PoolItem> i;
457 std::vector<PoolItem> a;
502 if ( i.empty() && ! a.empty() )
505 if ( cand.multiversionInstall() )
510 if ( ! cand.status().setTransact(
true, 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();
578 std::vector<PoolItem> i;
579 std::vector<PoolItem> a;
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() )
ResStatus::TransactByValue Causer
available_iterator availableEnd() const
ResStatus::TransactByValue modifiedBy() const
Return who caused the modification.
IdString ident() const
The identifier.
installed_iterator installedEnd() const
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).
PoolItem installedObj() const
The last Installed object.
PoolItem setCandidate(const PoolItem &newCandidate_r, ResStatus::TransactByValue causer_r=ResStatus::USER)
Set a candidate (out of available objects).
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 allCandidatesLocked() const
Status status() const
Return the current Status.
bool hasInstalledOnly() const
ResStatus & backup(const PoolItem &pi_r)
Simple ResStatus backup stack.
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
PoolItem candidateObj() const
Best among available objects.
bool multiversionInstall() const
PoolItem setCandidate(const PoolItem &newCandidate_r, ResStatus::TransactByValue causer_r)
Set a userCandidate (out of available objects).
bool setStatus(Status state_r, ResStatus::TransactByValue causer_r=ResStatus::USER)
Try to set a new Status.
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 identicalInstalled(const PoolItem &rhs) const
True if rhs has the same content as an installed one.
bool maySetTransact(bool val_r, TransactByValue causer)
bool identical(const SolvableType< Derived > &lhs, const Solvable &rhs)
ResStatus::TransactByValue causer
available_iterator availableBegin() const
const Selectable::Impl & _impl
SelectableTraits::available_const_iterator available_const_iterator
ResStatus & backup(ResStatus &status_r)
Backup status.
ResStatus & status() const
Returns the current status.
installed_iterator installedBegin() const
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.
PoolItem installedObj() const
Installed object (transacting ot highest version).
bool setPickStatus(const PoolItem &pi_r, Status state_r, ResStatus::TransactByValue causer_r=ResStatus::USER)
Assign a new status to a specific item.
bool allInstalledLocked() const
bool installedEmpty() const
PoolItem candidateObj() const
The 'best' or 'most interesting' among all available objects.
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.
available_iterator availableBegin() const
Selectable implementation.
available_iterator availableEnd() const
ResKind kind() const
The ResObjects kind.
Solvable satSolvable() const
Return the corresponding sat::Solvable.
bool(StatusBackup::* Action)(const PoolItem &, Causer)
Highlevel action.
bool restore()
Restore all status.
installed_iterator installedEnd() const
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)
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
installed_iterator installedBegin() const