libzypp  15.28.6
zypp::ResPool Class Reference

Global ResObject pool. More...

#include <ResPool.h>

Public Types

typedef PoolItem value_type
 PoolItem More...
 
typedef pool::PoolTraits::size_type size_type
 
typedef
pool::PoolTraits::const_iterator 
const_iterator
 
typedef
pool::PoolTraits::repository_iterator 
repository_iterator
 

Public Member Functions

ResPoolProxy proxy () const
 preliminary More...
 
Resolverresolver () const
 The Resolver. More...
 
const SerialNumberserial () const
 The pools serial number. More...
 
bool empty () const
 
size_type size () const
 
PoolItem find (const sat::Solvable &slv_r) const
 Return the corresponding PoolItem. More...
 
PoolItem find (const ResObject::constPtr &resolvable_r) const
 
Iterate over all PoolItems (all kinds).
const_iterator begin () const
 
const_iterator end () const
 
Iterate over all PoolItems matching a \c TFilter.
template<class TFilter >
filter_iterator< TFilter,
const_iterator
filterBegin (const TFilter &filter_r) const
 
template<class TFilter >
filter_iterator< TFilter,
const_iterator
filterEnd (const TFilter &filter_r) const
 
template<class TFilter >
Iterable< filter_iterator
< TFilter, const_iterator > > 
filter (const TFilter &filter_r) const
 
Iterate over all PoolItems by status.

Simply pass the ResStatus predicate you want to use as filter:

// iterate over all orphaned items:
for_( it, pool.byStatusBegin(&ResStatus::isOrphaned), pool.byStatusEnd(&ResStatus::isOrphaned) )
{...}

Or use filter::ByStatus in more complex queries:

// iterate over all (orphaned and recommended) items:
functor::Chain<filter::ByStatus,filter::ByStatus> myfilter( filter::ByStatus(&ResStatus::isOrphaned),
filter::ByStatus(&ResStatus::isRecommended) );
for_( it, pool.filterBegin(myfilter), pool.filterEnd(myfilter) )
{ ... }
filter_iterator
< filter::ByStatus,
const_iterator
byStatusBegin (const filter::ByStatus &filter_r) const
 
filter_iterator
< filter::ByStatus,
const_iterator
byStatusEnd (const filter::ByStatus &filter_r) const
 
Iterable< filter_iterator
< filter::ByStatus,
const_iterator > > 
byStatus (const filter::ByStatus &filter_r) const
 
Iterate over all Repositories that contribute ResObjects.
size_type knownRepositoriesSize () const
 
repository_iterator knownRepositoriesBegin () const
 
repository_iterator knownRepositoriesEnd () const
 
Repository reposFind (const std::string &alias_r) const
 Find a Repository named alias_r. More...
 
Iterable< repository_iteratorknownRepositories () const
 
Handle locale support.

A filter::ByLocaleSupport is provided to iterate over all items supporting a specific locale.

See Also
sat::LocaleSupport for a more convenient interface.
filter::ByLocaleSupport f( Locale("de") );
for_( it, pool.filterBegin(f), pool.filterEnd(f) )
{
MIL << *it << endl; // supporting "de"
}
f = filter::ByLocaleSupport( pool.getRequestedLocales() );
for_( it, pool.filterBegin(f), pool.filterEnd(f) )
{
MIL << *it << endl; // supporting any requested locale
}
void setRequestedLocales (const LocaleSet &locales_r)
 Set the requested locales. More...
 
bool addRequestedLocale (const Locale &locale_r)
 Add one Locale to the set of requested locales. More...
 
bool eraseRequestedLocale (const Locale &locale_r)
 Erase one Locale from the set of requested locales. More...
 
const LocaleSetgetRequestedLocales () const
 Return the requested locales. More...
 
bool isRequestedLocale (const Locale &locale_r) const
 Whether this Locale is in the set of requested locales. More...
 
const LocaleSetgetAvailableLocales () const
 Get the set of available locales. More...
 
bool isAvailableLocale (const Locale &locale_r) const
 Whether this Locale is in the set of available locales. More...
 

Static Public Member Functions

static ResPool instance ()
 Singleton ctor. More...
 

Private Member Functions

const
pool::PoolTraits::ItemContainerT
store () const
 
const pool::PoolTraits::Id2ItemTid2item () const
 
 ResPool (pool::PoolTraits::Impl_Ptr impl_r)
 Ctor. More...
 

Private Attributes

RW_pointer
< pool::PoolTraits::Impl
_pimpl
 Access to implementation. More...
 

Friends

std::ostream & operator<< (std::ostream &str, const ResPool &obj)
 

Related Functions

(Note that these are not member functions.)

std::ostream & operator<< (std::ostream &str, const ResPool &obj)
 

Iterate over all PoolItems of a certain name and kind.

typedef pool::ByIdent ByIdent
 
typedef
pool::PoolTraits::byIdent_iterator 
byIdent_iterator
 
byIdent_iterator byIdentBegin (const ByIdent &ident_r) const
 
byIdent_iterator byIdentBegin (ResKind kind_r, IdString name_r) const
 
byIdent_iterator byIdentBegin (ResKind kind_r, const C_Str &name_r) const
 
template<class TRes >
byIdent_iterator byIdentBegin (IdString name_r) const
 
template<class TRes >
byIdent_iterator byIdentBegin (const C_Str &name_r) const
 
byIdent_iterator byIdentBegin (const PoolItem &pi_r) const
 Derive name and kind from PoolItem. More...
 
byIdent_iterator byIdentBegin (sat::Solvable slv_r) const
 Derive name and kind from sat::Solvable. More...
 
byIdent_iterator byIdentBegin (IdString ident_r) const
 Takes a sat::Solvable::ident string. More...
 
byIdent_iterator byIdentEnd (const ByIdent &ident_r) const
 
byIdent_iterator byIdentEnd (ResKind kind_r, IdString name_r) const
 
byIdent_iterator byIdentEnd (ResKind kind_r, const C_Str &name_r) const
 
template<class TRes >
byIdent_iterator byIdentEnd (IdString name_r) const
 
template<class TRes >
byIdent_iterator byIdentEnd (const C_Str &name_r) const
 
byIdent_iterator byIdentEnd (const PoolItem &pi_r) const
 Derive name and kind from PoolItem. More...
 
byIdent_iterator byIdentEnd (sat::Solvable slv_r) const
 Derive name and kind from sat::Solvable. More...
 
byIdent_iterator byIdentEnd (IdString ident_r) const
 Takes a sat::Solvable::ident string. More...
 
Iterable< byIdent_iteratorbyIdent (const ByIdent &ident_r) const
 
Iterable< byIdent_iteratorbyIdent (ResKind kind_r, IdString name_r) const
 
Iterable< byIdent_iteratorbyIdent (ResKind kind_r, const C_Str &name_r) const
 
template<class TRes >
Iterable< byIdent_iteratorbyIdent (IdString name_r) const
 
template<class TRes >
Iterable< byIdent_iteratorbyIdent (const C_Str &name_r) const
 
Iterable< byIdent_iteratorbyIdent (const PoolItem &pi_r) const
 
Iterable< byIdent_iteratorbyIdent (sat::Solvable slv_r) const
 
Iterable< byIdent_iteratorbyIdent (IdString ident_r) const
 

Iterate over all ResObjects of a certain kind.

typedef filter::ByKind ByKind
 
typedef filter_iterator
< ByKind, const_iterator
byKind_iterator
 
byKind_iterator byKindBegin (const ResKind &kind_r) const
 
template<class TRes >
byKind_iterator byKindBegin () const
 
byKind_iterator byKindEnd (const ResKind &kind_r) const
 
template<class TRes >
byKind_iterator byKindEnd () const
 
Iterable< byKind_iteratorbyKind (const ResKind &kind_r) const
 
template<class TRes >
Iterable< byKind_iteratorbyKind () const
 

Iterate over all ResObjects with a certain name (all kinds).

typedef zypp::resfilter::ByName ByName
 
typedef filter_iterator
< ByName, const_iterator
byName_iterator
 
byName_iterator byNameBegin (const std::string &name_r) const
 
byName_iterator byNameEnd (const std::string &name_r) const
 
Iterable< byName_iteratorbyName (const std::string &name_r) const
 

Handle hard locks (e.g set from /etc/zypp/locks).

As this kind of lock is query based, it's quite expensive.

These queries are re-evaluated when adding new repos to the pool.

typedef
pool::PoolTraits::HardLockQueries 
HardLockQueries
 
typedef
pool::PoolTraits::hardLockQueries_iterator 
hardLockQueries_iterator
 
bool hardLockQueriesEmpty () const
 
size_type hardLockQueriesSize () const
 
hardLockQueries_iterator hardLockQueriesBegin () const
 
hardLockQueries_iterator hardLockQueriesEnd () const
 
Iterable
< hardLockQueries_iterator
hardLockQueries () const
 
void setHardLockQueries (const HardLockQueries &newLocks_r)
 Set a new set of queries. More...
 
void getHardLockQueries (HardLockQueries &activeLocks_r)
 Suggest a new set of queries based on the current selection. More...
 

Detailed Description

Global ResObject pool.

Explicitly shared singleton.

Note
Filter iterators provided by ResPool are intended to operate on internal index tables for faster access. If the the index is not yet implemented, they are realized as an ordinary filter iterator. Do not provide filter iterators here, if there is no index table for it.

For most (*Begin,*End) iterator-pairs there's also an Iterable provided, so you can use then in range-based for loops:

// classic:
for_( it, pool.filterBegin(myfilter), pool.filterEnd(myfilter) )
{ ... }
// range based:
for ( const PoolItem & pi : pool.filter(myfilter) )
{ ... }
I tagged the byName iterator as deprecated, so the compiler tells you
where it is used. Please review the code and check whether byIdent is
an appropriate replacement.
--
The 'old' zypp pool internally maintained a byName index, so it was a
fast way to iterate the pool by name and filter by kind to visit e.g.
all packages named foo:
invokeOnEach( pool.byNameBegin( name ), pool.byNameEnd( name ),
resfilter::ByKind( kind ),
action() );
for_( it, pool.byNameBegin( name ), pool.byNameEnd( name ) )
{
if ( (*it)->kind() == kind )
{
...
}
}
This is no longer true.
In contrary, byName now is a 'quite expensive' iteration. It's faster to
rewrite these loops using byIdent (and no filter):
invokeOnEach( pool.byIdentBegin( kind, name ),
pool.byIdentEnd( kind, name ),
action() );
for_( it, pool.byIdentBegin( kind, name ), pool.byNameEnd( kind, name ) )
{
...
}
How to construct the byIdent iterator:
ResPool::byIdentBegin( poolItem ) // using this poolItems kind and name
ResPool::byIdentBegin( kind, name ) // explicit kind and name
ResPool::byIdentBegin<Package>( name ) // or templated kind
--
If you prefer using iterator in a for' loop, but dislike to figure out
the exact type of the iterator, you may find the 'for_' macro convenient:
#include "zypp/base/Easy.h"
for_( it, pool.byIdentBegin( kind, name ),
pool.byIdentEnd( kind, name ) )
{
PoolItem copy = *it;
}
instead of:
for ( ResPool::byIdent_iterator it = pool.byIdentBegin( kind, name ),
end = pool.byIdentEnd( kind, name );
it != end, ++it )
{
PoolItem copy = *it;
}

Definition at line 60 of file ResPool.h.

Member Typedef Documentation

PoolItem

Definition at line 66 of file ResPool.h.

Definition at line 163 of file ResPool.h.

Definition at line 258 of file ResPool.h.

Definition at line 286 of file ResPool.h.

Constructor & Destructor Documentation

zypp::ResPool::ResPool ( pool::PoolTraits::Impl_Ptr  impl_r)
private

Ctor.

Definition at line 44 of file ResPool.cc.

Member Function Documentation

ResPool zypp::ResPool::instance ( )
static

Singleton ctor.

Definition at line 33 of file ResPool.cc.

ResPoolProxy zypp::ResPool::proxy ( ) const

preliminary

Definition at line 54 of file ResPool.cc.

Resolver & zypp::ResPool::resolver ( ) const

The Resolver.

Definition at line 57 of file ResPool.cc.

const SerialNumber & zypp::ResPool::serial ( ) const

The pools serial number.

Changing whenever the whenever the content changes. (Resolvables or Dependencies).

Definition at line 60 of file ResPool.cc.

bool zypp::ResPool::empty ( ) const

Definition at line 63 of file ResPool.cc.

ResPool::size_type zypp::ResPool::size ( ) const

Definition at line 66 of file ResPool.cc.

const_iterator zypp::ResPool::begin ( ) const
inline

Definition at line 97 of file ResPool.h.

const_iterator zypp::ResPool::end ( ) const
inline

Definition at line 100 of file ResPool.h.

PoolItem zypp::ResPool::find ( const sat::Solvable slv_r) const

Return the corresponding PoolItem.

Pool and sat pool should be in sync. Returns an empty PoolItem if there is no corresponding PoolItem.

See Also
PoolItem::satSolvable.

Definition at line 70 of file ResPool.cc.

PoolItem zypp::ResPool::find ( const ResObject::constPtr resolvable_r) const
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 112 of file ResPool.h.

template<class TFilter >
filter_iterator<TFilter,const_iterator> zypp::ResPool::filterBegin ( const TFilter &  filter_r) const
inline

Definition at line 119 of file ResPool.h.

template<class TFilter >
filter_iterator<TFilter,const_iterator> zypp::ResPool::filterEnd ( const TFilter &  filter_r) const
inline

Definition at line 123 of file ResPool.h.

template<class TFilter >
Iterable<filter_iterator<TFilter,const_iterator> > zypp::ResPool::filter ( const TFilter &  filter_r) const
inline

Definition at line 127 of file ResPool.h.

filter_iterator<filter::ByStatus,const_iterator> zypp::ResPool::byStatusBegin ( const filter::ByStatus filter_r) const
inline

Definition at line 150 of file ResPool.h.

filter_iterator<filter::ByStatus,const_iterator> zypp::ResPool::byStatusEnd ( const filter::ByStatus filter_r) const
inline

Definition at line 153 of file ResPool.h.

Iterable<filter_iterator<filter::ByStatus,const_iterator> > zypp::ResPool::byStatus ( const filter::ByStatus filter_r) const
inline

Definition at line 156 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentBegin ( const ByIdent ident_r) const
inline

Definition at line 166 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentBegin ( ResKind  kind_r,
IdString  name_r 
) const
inline

Definition at line 172 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentBegin ( ResKind  kind_r,
const C_Str name_r 
) const
inline

Definition at line 175 of file ResPool.h.

template<class TRes >
byIdent_iterator zypp::ResPool::byIdentBegin ( IdString  name_r) const
inline

Definition at line 179 of file ResPool.h.

template<class TRes >
byIdent_iterator zypp::ResPool::byIdentBegin ( const C_Str name_r) const
inline

Definition at line 183 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentBegin ( const PoolItem pi_r) const
inline

Derive name and kind from PoolItem.

Definition at line 187 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentBegin ( sat::Solvable  slv_r) const
inline

Derive name and kind from sat::Solvable.

Definition at line 190 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentBegin ( IdString  ident_r) const
inline

Takes a sat::Solvable::ident string.

Definition at line 193 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentEnd ( const ByIdent ident_r) const
inline

Definition at line 197 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentEnd ( ResKind  kind_r,
IdString  name_r 
) const
inline

Definition at line 203 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentEnd ( ResKind  kind_r,
const C_Str name_r 
) const
inline

Definition at line 206 of file ResPool.h.

template<class TRes >
byIdent_iterator zypp::ResPool::byIdentEnd ( IdString  name_r) const
inline

Definition at line 210 of file ResPool.h.

template<class TRes >
byIdent_iterator zypp::ResPool::byIdentEnd ( const C_Str name_r) const
inline

Definition at line 214 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentEnd ( const PoolItem pi_r) const
inline

Derive name and kind from PoolItem.

Definition at line 218 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentEnd ( sat::Solvable  slv_r) const
inline

Derive name and kind from sat::Solvable.

Definition at line 221 of file ResPool.h.

byIdent_iterator zypp::ResPool::byIdentEnd ( IdString  ident_r) const
inline

Takes a sat::Solvable::ident string.

Definition at line 224 of file ResPool.h.

Iterable<byIdent_iterator> zypp::ResPool::byIdent ( const ByIdent ident_r) const
inline

Definition at line 228 of file ResPool.h.

Iterable<byIdent_iterator> zypp::ResPool::byIdent ( ResKind  kind_r,
IdString  name_r 
) const
inline

Definition at line 231 of file ResPool.h.

Iterable<byIdent_iterator> zypp::ResPool::byIdent ( ResKind  kind_r,
const C_Str name_r 
) const
inline

Definition at line 234 of file ResPool.h.

template<class TRes >
Iterable<byIdent_iterator> zypp::ResPool::byIdent ( IdString  name_r) const
inline

Definition at line 238 of file ResPool.h.

template<class TRes >
Iterable<byIdent_iterator> zypp::ResPool::byIdent ( const C_Str name_r) const
inline

Definition at line 242 of file ResPool.h.

Iterable<byIdent_iterator> zypp::ResPool::byIdent ( const PoolItem pi_r) const
inline

Definition at line 245 of file ResPool.h.

Iterable<byIdent_iterator> zypp::ResPool::byIdent ( sat::Solvable  slv_r) const
inline

Definition at line 248 of file ResPool.h.

Iterable<byIdent_iterator> zypp::ResPool::byIdent ( IdString  ident_r) const
inline

Definition at line 251 of file ResPool.h.

byKind_iterator zypp::ResPool::byKindBegin ( const ResKind kind_r) const
inline

Definition at line 261 of file ResPool.h.

template<class TRes >
byKind_iterator zypp::ResPool::byKindBegin ( ) const
inline

Definition at line 265 of file ResPool.h.

byKind_iterator zypp::ResPool::byKindEnd ( const ResKind kind_r) const
inline

Definition at line 268 of file ResPool.h.

template<class TRes >
byKind_iterator zypp::ResPool::byKindEnd ( ) const
inline

Definition at line 272 of file ResPool.h.

Iterable<byKind_iterator> zypp::ResPool::byKind ( const ResKind kind_r) const
inline

Definition at line 275 of file ResPool.h.

template<class TRes >
Iterable<byKind_iterator> zypp::ResPool::byKind ( ) const
inline

Definition at line 279 of file ResPool.h.

byName_iterator zypp::ResPool::byNameBegin ( const std::string &  name_r) const
inline

Definition at line 289 of file ResPool.h.

byName_iterator zypp::ResPool::byNameEnd ( const std::string &  name_r) const
inline

Definition at line 292 of file ResPool.h.

Iterable<byName_iterator> zypp::ResPool::byName ( const std::string &  name_r) const
inline

Definition at line 295 of file ResPool.h.

ResPool::size_type zypp::ResPool::knownRepositoriesSize ( ) const

Definition at line 74 of file ResPool.cc.

ResPool::repository_iterator zypp::ResPool::knownRepositoriesBegin ( ) const

Definition at line 77 of file ResPool.cc.

ResPool::repository_iterator zypp::ResPool::knownRepositoriesEnd ( ) const

Definition at line 80 of file ResPool.cc.

Repository zypp::ResPool::reposFind ( const std::string &  alias_r) const

Find a Repository named alias_r.

Returns Repository::norepository if there is no such Repository.

Definition at line 83 of file ResPool.cc.

Iterable<repository_iterator> zypp::ResPool::knownRepositories ( ) const
inline

Definition at line 319 of file ResPool.h.

void zypp::ResPool::setRequestedLocales ( const LocaleSet locales_r)

Set the requested locales.

Languages to be supported by the system, e.g. language specific packages to be installed.

Definition at line 116 of file ResPool.cc.

bool zypp::ResPool::addRequestedLocale ( const Locale locale_r)

Add one Locale to the set of requested locales.

Return true if locale_r was newly added to the set.

Definition at line 119 of file ResPool.cc.

bool zypp::ResPool::eraseRequestedLocale ( const Locale locale_r)

Erase one Locale from the set of requested locales.

Return false if locale_r was not found in the set.

Definition at line 122 of file ResPool.cc.

const LocaleSet & zypp::ResPool::getRequestedLocales ( ) const

Return the requested locales.

See Also
setRequestedLocales

Definition at line 125 of file ResPool.cc.

bool zypp::ResPool::isRequestedLocale ( const Locale locale_r) const

Whether this Locale is in the set of requested locales.

Definition at line 128 of file ResPool.cc.

const LocaleSet & zypp::ResPool::getAvailableLocales ( ) const

Get the set of available locales.

This is computed from the package data so it actually represents all locales packages claim to support.

Definition at line 131 of file ResPool.cc.

bool zypp::ResPool::isAvailableLocale ( const Locale locale_r) const

Whether this Locale is in the set of available locales.

Definition at line 134 of file ResPool.cc.

bool zypp::ResPool::hardLockQueriesEmpty ( ) const

Definition at line 86 of file ResPool.cc.

ResPool::size_type zypp::ResPool::hardLockQueriesSize ( ) const

Definition at line 89 of file ResPool.cc.

ResPool::hardLockQueries_iterator zypp::ResPool::hardLockQueriesBegin ( ) const

Definition at line 92 of file ResPool.cc.

ResPool::hardLockQueries_iterator zypp::ResPool::hardLockQueriesEnd ( ) const

Definition at line 95 of file ResPool.cc.

Iterable<hardLockQueries_iterator> zypp::ResPool::hardLockQueries ( ) const
inline

Definition at line 398 of file ResPool.h.

void zypp::ResPool::setHardLockQueries ( const HardLockQueries newLocks_r)

Set a new set of queries.

The hard-locks of existing PoolItems are adjusted according to the queries. (usually called on target load)

Definition at line 98 of file ResPool.cc.

void zypp::ResPool::getHardLockQueries ( HardLockQueries activeLocks_r)

Suggest a new set of queries based on the current selection.

(usually remembered on commit).

Definition at line 101 of file ResPool.cc.

const pool::PoolTraits::ItemContainerT & zypp::ResPool::store ( ) const
private

Definition at line 105 of file ResPool.cc.

const pool::PoolTraits::Id2ItemT & zypp::ResPool::id2item ( ) const
private

Definition at line 108 of file ResPool.cc.

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  str,
const ResPool obj 
)
friend

Definition at line 142 of file ResPool.cc.

std::ostream & operator<< ( std::ostream &  str,
const ResPool obj 
)
related

Stream output

Definition at line 142 of file ResPool.cc.

Member Data Documentation

RW_pointer<pool::PoolTraits::Impl> zypp::ResPool::_pimpl
private

Access to implementation.

Definition at line 421 of file ResPool.h.


The documentation for this class was generated from the following files: