libzypp 17.31.32
Selectable.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
12#ifndef ZYPP_UI_SELECTABLE_H
13#define ZYPP_UI_SELECTABLE_H
14
15#include <iosfwd>
16
17#include <zypp/base/ReferenceCounted.h>
18#include <zypp/base/NonCopyable.h>
19#include <zypp/base/PtrTypes.h>
20#include <zypp/base/Iterator.h>
21
23#include <zypp/ui/Status.h>
24
26namespace zypp
27{
28
30 namespace ui
31 {
32
34
36 //
37 // CLASS NAME : Selectable
38 //
52 {
53 friend std::ostream & operator<<( std::ostream & str, const Selectable & obj );
54 friend std::ostream & dumpOn( std::ostream & str, const Selectable & obj );
55
56 public:
59
63
66
69
70 public:
81 static Ptr get( const pool::ByIdent & ident_r );
84 static Ptr get( IdString ident_r )
85 { return get( pool::ByIdent( ident_r ) ); }
88 static Ptr get( ResKind kind_r, const std::string & name_r )
89 { return get( pool::ByIdent( kind_r, name_r ) ); }
92 static Ptr get( const std::string & name_r )
93 { return get( pool::ByIdent( ResKind::package, name_r ) ); }
96 static Ptr get( const sat::Solvable & solv_r )
97 { return get( pool::ByIdent( solv_r ) ); }
100 static Ptr get( const ResObject::constPtr & resolvable_r )
101 { return resolvable_r ? get( resolvable_r->satSolvable() ) : Ptr(); }
104 static Ptr get( const PoolItem & pi_r )
105 { return get( pi_r.satSolvable() ); }
107
108 public:
114 IdString ident() const;
115
117 ResKind kind() const;
118
120 const std::string & name() const;
121
123 PoolItem installedObj() const;
124
131 PoolItem candidateObj() const;
132
140
150
158
160 bool identIsAutoInstalled() const;
161
166 bool identicalAvailable( const PoolItem & rhs ) const;
167
172 bool identicalInstalled( const PoolItem & rhs ) const;
173
177 bool identicalInstalledCandidate() const
178 { return identicalInstalled( candidateObj() ); }
179
185
190 PoolItem identicalAvailableObj( const PoolItem & rhs ) const;
191
196 PoolItem identicalInstalledObj( const PoolItem & rhs ) const;
197
204 template<class TRes>
206 { return asKind<TRes>( candidateObj() ); }
207
214 template<class TRes>
216 { return asKind<TRes>( candidateObj() ); }
217
226 PoolItem setCandidate( const PoolItem & newCandidate_r, ResStatus::TransactByValue causer_r = ResStatus::USER );
228 PoolItem setCandidate( ResObject::constPtr newCandidate_r, ResStatus::TransactByValue causer_r = ResStatus::USER );
229
236 bool setOnSystem( const PoolItem & newCandidate_r, ResStatus::TransactByValue causer_r = ResStatus::USER );
237
243 PoolItem theObj() const;
244
246
251 bool availableEmpty() const;
256 { return makeIterable( availableBegin(), availableEnd() ); }
258
260
265 bool installedEmpty() const;
270 { return makeIterable( installedBegin(), installedEnd() ); }
272
274
280 bool picklistEmpty() const;
285 { return makeIterable( picklistBegin(), picklistEnd() ); }
288 static constexpr const picklist_size_type picklistNoPos = picklist_size_type(-1);
289
295
299
301
302 public:
307 bool hasObject() const
308 { return (! installedEmpty()) || candidateObj(); }
311 bool hasInstalledObj() const
312 { return ! installedEmpty(); }
315 bool hasCandidateObj() const
316 { return bool(candidateObj()); }
319 bool hasBothObjects() const
320 { return (! installedEmpty()) && candidateObj(); }
323 bool hasInstalledObjOnly() const
324 { return (! installedEmpty()) && ! candidateObj(); }
327 bool hasCandidateObjOnly() const
328 { return ( installedEmpty() ) && candidateObj(); }
329
330
332 bool hasBlacklisted() const;
333
335 bool hasBlacklistedInstalled() const;
336
338 bool hasRetracted() const;
339
341 bool hasRetractedInstalled() const;
342
344 bool hasPtf() const;
345
347 bool hasPtfInstalled() const;
349
354 bool isUnmaintained() const;
355
367 bool multiversionInstall() const;
368
372
376 { return pickInstall( pi_r, causer_r, false ); }
377
381
385 { return pickDelete( pi_r, causer_r, false ); }
386
410 Status pickStatus( const PoolItem & pi_r ) const;
411
413 bool setPickStatus( const PoolItem & pi_r, Status state_r, ResStatus::TransactByValue causer_r = ResStatus::USER );
415
425 bool isUndetermined() const;
426
430 bool isRelevant() const;
431
433 bool isSatisfied() const;
434
436 bool isBroken() const;
437
443 bool isNeeded() const;
444
446 bool isUnwanted() const;
448
449 public:
453 enum Fate {
454 TO_DELETE = -1,
456 TO_INSTALL = 1
457 };
459 Fate fate() const;
462 bool unmodified() const
463 { return fate() == UNMODIFIED; }
464
471 bool locked() const
472 { Status st( status() ); return( st == S_Protected || st == S_Taboo ); }
473
479 bool hasLocks() const;
482 bool toModify() const
483 { return fate() != UNMODIFIED; }
486 bool toDelete() const
487 { return fate() == TO_DELETE; }
490 bool toInstall() const
491 { return fate() == TO_INSTALL; }
494 bool onSystem() const
495 { return( ( hasInstalledObj() && !toDelete() )
496 ||( hasCandidateObj() && toInstall() ) ); }
499 bool offSystem() const
500 { return ! onSystem(); }
501
507 { return setFate( TO_INSTALL, causer_r ); }
508
511
517 { return setFate( TO_DELETE, causer_r ); }
518
524 { return setFate( UNMODIFIED, causer_r ); }
526
527 public:
536 Status status() const;
537
543
546
548 bool hasLicenceConfirmed() const;
549
551 void setLicenceConfirmed( bool val_r = true );
553
554 public:
556 struct Impl;
560 private:
562 ~Selectable();
563 private:
566 };
568
570 std::ostream & operator<<( std::ostream & str, const Selectable & obj );
571
573 std::ostream & dumpOn( std::ostream & str, const Selectable & obj );
574
580 {
582
584
586 { return operator()( pi_r.satSolvable() ); }
587 };
588
590 } // namespace ui
593} // namespace zypp
595#endif // ZYPP_UI_SELECTABLE_H
RepoManager implementation.
Reference counted access to a Tp object calling a custom Dispose function when the last AutoDispose h...
Definition AutoDispose.h:94
Access to the sat-pools string space.
Definition IdString.h:43
Combining sat::Solvable and ResStatus.
Definition PoolItem.h:51
Resolvable kinds.
Definition ResKind.h:33
static const ResKind package
Definition ResKind.h:40
TraitsType::constPtrType constPtr
Definition ResObject.h:43
Base class for reference counted objects.
Main filter selecting PoolItems by name and kind.
Definition ByIdent.h:27
A Solvable object within the sat Pool.
Definition Solvable.h:54
Collects PoolItems of same kind and name.
Definition Selectable.h:52
bool hasRetractedInstalled() const
True if this Selectable contains an installed retracted item.
bool setStatus(Status state_r, ResStatus::TransactByValue causer_r=ResStatus::USER)
Try to set a new Status.
Definition Selectable.cc:67
available_iterator availableEnd() const
bool hasPtfInstalled() const
True if this Selectable contains an installed ptf item.
bool onSystem() const
True if would be on system after commit.
Definition Selectable.h:492
bool pickNoInstall(const PoolItem &pi_r, ResStatus::TransactByValue causer_r=ResStatus::USER)
Deselect a specific available item from installation.
Definition Selectable.h:373
SelectableTraits::available_size_type available_size_type
Definition Selectable.h:62
ResTraits< TRes >::constPtrType installedAsKind() const
Return the installedObj resolvable casted to a specific kind.
Definition Selectable.h:203
bool offSystem() const
True if would be off system after commit.
Definition Selectable.h:497
installed_size_type installedSize() const
SelectableTraits::picklist_iterator picklist_iterator
Definition Selectable.h:67
bool toModify() const
True if either to delete or to install.
Definition Selectable.h:480
picklist_iterator picklistBegin() const
bool hasCandidateObj() const
True if candidate object is present.
Definition Selectable.h:313
bool multiversionInstall() const
Whether at least one of the available packages has multiversionInstall set.
Iterable< picklist_iterator > picklist() const
Definition Selectable.h:282
ResTraits< TRes >::constPtrType candidateAsKind() const
Return the candidateObj resolvable casted to a specific kind.
Definition Selectable.h:213
Status pickStatus(const PoolItem &pi_r) const
Compute the ui::Status for an individual PoolItem.
bool toDelete() const
True if to delete.
Definition Selectable.h:484
bool isUnmaintained() const
True if this package has no replacement from the available repositories.
picklist_size_type picklistSize() const
bool setDeleted(ResStatus::TransactByValue causer_r=ResStatus::USER)
Take care the item gets deleted if it is installed.
bool isSatisfied() const
Whether a relevant patchs requirements are met.
bool hasCandidateObjOnly() const
True if candidate object is present but no installed.
Definition Selectable.h:325
static Ptr get(const pool::ByIdent &ident_r)
Get the Selctable.
Definition Selectable.cc:28
installed_iterator installedBegin() const
bool locked() const
True if locked (subclass of unmodified).
Definition Selectable.h:469
friend std::ostream & operator<<(std::ostream &str, const Selectable &obj)
available_size_type availableSize() const
intrusive_ptr< Selectable > Ptr
Definition Selectable.h:57
static constexpr const picklist_size_type picklistNoPos
Returned by picklistPos if the Item does not belong to the picklist.
Definition Selectable.h:286
void setLicenceConfirmed(bool val_r=true)
Set LicenceConfirmed bit.
bool setToDelete(ResStatus::TransactByValue causer_r=ResStatus::USER)
Set the item to be deleted (must be installed).
Definition Selectable.h:514
friend std::ostream & dumpOn(std::ostream &str, const Selectable &obj)
ResStatus::TransactByValue modifiedBy() const
Return who caused the modification.
SelectableTraits::installed_size_type installed_size_type
Definition Selectable.h:65
PoolItem installedObj() const
The last Installed object.
Definition Selectable.cc:70
PoolItem highestAvailableVersionObj() const
Simply the highest available version, ignoring priorities and policies.
Definition Selectable.cc:82
bool pickNoDelete(const PoolItem &pi_r, ResStatus::TransactByValue causer_r=ResStatus::USER)
Deselect a specific installed item from deletion.
Definition Selectable.h:382
bool hasLocks() const
True if it includes locked items (don't mix this with the locked status).
bool hasBothObjects() const
True if installed and candidate object is present.
Definition Selectable.h:317
bool hasRetracted() const
True if this Selectable contains available retracted items.
bool hasBlacklistedInstalled() const
True if this Selectable contains an installed blacklisted item (retracted,ptf,...).
picklist_iterator picklistEnd() const
bool setInstalled(ResStatus::TransactByValue causer_r=ResStatus::USER)
Take care the item gets installed if it is not.
bool hasBlacklisted() const
True if this Selectable contains available blacklisted items (retracted,ptf,...).
Iterable< available_iterator > available() const
Definition Selectable.h:253
Selectable(Impl_Ptr pimpl_r)
Default ctor.
Definition Selectable.cc:36
RW_pointer< Impl > _pimpl
Pointer to implementation.
Definition Selectable.h:563
intrusive_ptr< const Selectable > constPtr
Definition Selectable.h:58
IdString ident() const
The identifier.
Definition Selectable.cc:55
installed_iterator installedEnd() const
bool unset(ResStatus::TransactByValue causer_r=ResStatus::USER)
Set the item to stay unmodified.
Definition Selectable.h:521
PoolItem updateCandidateObj() const
The best candidate for update, if there is one.
Definition Selectable.cc:79
PoolItem candidateObjFrom(Repository repo_r) const
The best candidate provided by a specific Repository, if there is one.
Definition Selectable.cc:76
bool identicalInstalledUpdateCandidate() const
True if the updateCandidateObj is installed (same content).
Definition Selectable.h:181
bool setUpToDate(ResStatus::TransactByValue causer_r=ResStatus::USER)
Take care the item gets installed if it is not, or is older.
bool unmodified() const
True if neither to delete or to install.
Definition Selectable.h:460
const std::string & name() const
The ResObjects name.
Definition Selectable.cc:61
SelectableTraits::installed_iterator installed_iterator
Definition Selectable.h:64
bool hasPtf() const
True if this Selectable contains available ptf items.
SelectableTraits::available_iterator available_iterator
Iterates over ResObject::constPtr.
Definition Selectable.h:61
Iterable< installed_iterator > installed() const
Definition Selectable.h:267
PoolItem theObj() const
An object you could use as pars pro toto.
bool availableEmpty() const
shared_ptr< Impl > Impl_Ptr
Definition Selectable.h:555
bool identIsAutoInstalled() const
Whether this ident is flagged as AutoInstalled.
Definition Selectable.cc:85
available_iterator availableBegin() const
bool identicalInstalledCandidate() const
True if the candidateObj is installed (same content).
Definition Selectable.h:175
bool pickInstall(const PoolItem &pi_r, ResStatus::TransactByValue causer_r=ResStatus::USER, bool yesno_r=true)
Select a specific available item for installation.
bool setOnSystem(const PoolItem &newCandidate_r, ResStatus::TransactByValue causer_r=ResStatus::USER)
Arrange the specified candidate (out of available objects) to be on system after commit.
PoolItem setCandidate(const PoolItem &newCandidate_r, ResStatus::TransactByValue causer_r=ResStatus::USER)
Set a candidate (out of available objects).
bool hasObject() const
True if either installed or candidate object is present.
Definition Selectable.h:305
bool isRelevant() const
Returns true if the patch is relevant which means that at least one package of the patch is installed...
bool isUnwanted() const
Broken (needed) but locked patches.
PoolItem candidateObj() const
The 'best' or 'most interesting' among all available objects.
Definition Selectable.cc:73
bool toInstall() const
True if to install.
Definition Selectable.h:488
bool identicalAvailable(const PoolItem &rhs) const
True if rhs is installed and one with the same content is available.
Definition Selectable.cc:88
bool isBroken() const
Whether a relevant patchs requirements are broken.
bool hasInstalledObj() const
True if installed object is present.
Definition Selectable.h:309
bool setPickStatus(const PoolItem &pi_r, Status state_r, ResStatus::TransactByValue causer_r=ResStatus::USER)
Assign a new status to a specific item.
Status status() const
Return the current Status.
Definition Selectable.cc:64
bool hasLicenceConfirmed() const
Return value of LicenceConfirmed bit.
bool identicalInstalled(const PoolItem &rhs) const
True if rhs has the same content as an installed one.
Definition Selectable.cc:91
PoolItem identicalAvailableObj(const PoolItem &rhs) const
Return an available Object with the same content as rhs.
Definition Selectable.cc:94
bool hasInstalledObjOnly() const
True if installed object is present but no candidate.
Definition Selectable.h:321
bool isUndetermined() const
Returns true for packages, because packages are not classified by the solver.
ResKind kind() const
The ResObjects kind.
Definition Selectable.cc:58
bool setToInstall(ResStatus::TransactByValue causer_r=ResStatus::USER)
Set the item to be installed (new- or re-install).
Definition Selectable.h:504
bool setFate(Fate fate_r, ResStatus::TransactByValue causer_r=ResStatus::USER)
bool pickDelete(const PoolItem &pi_r, ResStatus::TransactByValue causer_r=ResStatus::USER, bool yesno_r=true)
Select a specific installed item for deletion.
bool isNeeded() const
This includes unlocked broken patches, as well as those already selected to be installed.
bool picklistEmpty() const
SelectableTraits::picklist_size_type picklist_size_type
Definition Selectable.h:68
PoolItem identicalInstalledObj(const PoolItem &rhs) const
\Return an installed Object with the same content as rhs.
Definition Selectable.cc:97
bool installedEmpty() const
picklist_size_type picklistPos(const PoolItem &pi_r) const
Return the position of pi_r in the piclist or picklistNoPos.
String related utilities and Regular expression matching.
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
Definition NonCopyable.h:26
Status
UI status Status values calculated by Selectable.
Definition Status.h:35
@ S_Taboo
Definition Status.h:37
@ S_Protected
Definition Status.h:36
std::ostream & operator<<(std::ostream &str, const Selectable &obj)
std::ostream & dumpOn(std::ostream &str, const Selectable &obj)
Easy-to use interface to the ZYPP dependency resolver.
intrusive_ptr< const TRes > constPtrType
Definition ResTraits.h:83
AvailableItemSet::size_type available_size_type
AvailableItemSet::iterator installed_iterator
PickList::size_type picklist_size_type
AvailableItemSet::size_type installed_size_type
PickList::const_iterator picklist_iterator
AvailableItemSet::iterator available_iterator
Solvable to Selectable transform functor.
Definition Selectable.h:580
Selectable_Ptr operator()(const sat::Solvable &solv_r) const
Selectable_Ptr operator()(const PoolItem &pi_r) const
Definition Selectable.h:585
Selectable_Ptr result_type
Definition Selectable.h:581
#define DEFINE_PTR_TYPE(NAME)
Forward declaration of Ptr types.
Definition PtrTypes.h:623