zypp::ResPool Class Reference

Global ResObject pool. More...

#include <ResPool.h>

List of all members.

Public Types

typedef PoolItem value_type
 PoolItem
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
const SerialNumberserial () const
 The pools serial number.
bool empty () const
size_type size () const
PoolItem find (const sat::Solvable &slv_r) const
 Return the corresponding PoolItem.
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 _Filter.
template<class _Filter >
filter_iterator< _Filter,
const_iterator
filterBegin (const _Filter &filter_r) const
template<class _Filter >
filter_iterator< _Filter,
const_iterator
filterEnd (const _Filter &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
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.
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.
 ResPool pool( ResPool::instance() );

 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.
bool addRequestedLocale (const Locale &locale_r)
 Add one Locale to the set of requested locales.
bool eraseRequestedLocale (const Locale &locale_r)
 Erase one Locale from the set of requested locales.
const LocaleSetgetRequestedLocales () const
 Return the requested locales.
bool isRequestedLocale (const Locale &locale_r) const
 Wheter this Locale is in the set of requested locales.
const LocaleSetgetAvailableLocales () const
 Get the set of available locales.
bool isAvailableLocale (const Locale &locale_r) const
 Wheter this Locale is in the set of available locales.

Static Public Member Functions

static ResPool instance ()
 Singleton ctor.

Private Member Functions

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

Private Attributes

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

Friends

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 _Res >
byIdent_iterator byIdentBegin (IdString name_r) const
template<class _Res >
byIdent_iterator byIdentBegin (const C_Str &name_r) const
byIdent_iterator byIdentBegin (const PoolItem &pi_r) const
 Derive name and kind from PoolItem.
byIdent_iterator byIdentBegin (sat::Solvable slv_r) const
 Derive name and kind from sat::Solvable.
byIdent_iterator byIdentBegin (IdString ident_r) const
 Takes a sat::Solvable::ident string.
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 _Res >
byIdent_iterator byIdentEnd (IdString name_r) const
template<class _Res >
byIdent_iterator byIdentEnd (const C_Str &name_r) const
byIdent_iterator byIdentEnd (const PoolItem &pi_r) const
 Derive name and kind from PoolItem.
byIdent_iterator byIdentEnd (sat::Solvable slv_r) const
 Derive name and kind from sat::Solvable.
byIdent_iterator byIdentEnd (IdString ident_r) const
 Takes a sat::Solvable::ident string.

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 _Res >
byKind_iterator byKindBegin () const
byKind_iterator byKindEnd (const ResKind &kind_r) const
template<class _Res >
byKind_iterator byKindEnd () 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

Handle automatic soft-locks.

Solvables with and ident listed here are per default created with a setSoftLock applied.

I.e. the Resolver should not automatically select them, if they are just recommended.

This list is considered when adding new repos to the pool. It is not the list of currently softLocked items.

Mainly used to re-apply soft-locks remembered during the last commit.

typedef
pool::PoolTraits::AutoSoftLocks 
AutoSoftLocks
typedef
pool::PoolTraits::autoSoftLocks_iterator 
autoSoftLocks_iterator
bool autoSoftLocksEmpty () const
size_type autoSoftLocksSize () const
autoSoftLocks_iterator autoSoftLocksBegin () const
autoSoftLocks_iterator autoSoftLocksEnd () const
void setAutoSoftLocks (const AutoSoftLocks &newLocks_r)
 Set a new soft-lock list.
void getActiveSoftLocks (AutoSoftLocks &activeLocks_r)
 Suggest a new soft-lock list based on the current selection.

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
void setHardLockQueries (const HardLockQueries &newLocks_r)
 Set a new set of queries.
void getHardLockQueries (HardLockQueries &activeLocks_r)
 Suggest a new set of queries based on the current selection.


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.
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 47 of file ResPool.h.


Member Typedef Documentation

PoolItem

Definition at line 53 of file ResPool.h.

Definition at line 54 of file ResPool.h.

Definition at line 55 of file ResPool.h.

Definition at line 56 of file ResPool.h.

Definition at line 140 of file ResPool.h.

Definition at line 141 of file ResPool.h.

Definition at line 208 of file ResPool.h.

Definition at line 209 of file ResPool.h.

Definition at line 229 of file ResPool.h.

Definition at line 230 of file ResPool.h.

Definition at line 332 of file ResPool.h.

Definition at line 333 of file ResPool.h.

Definition at line 362 of file ResPool.h.

Definition at line 363 of file ResPool.h.


Constructor & Destructor Documentation

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

Ctor.

Definition at line 43 of file ResPool.cc.


Member Function Documentation

ResPool zypp::ResPool::instance (  )  [static]

ResPoolProxy zypp::ResPool::proxy (  )  const

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

The pools serial number.

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

Definition at line 56 of file ResPool.cc.

References _pimpl.

bool zypp::ResPool::empty (  )  const

Definition at line 59 of file ResPool.cc.

References _pimpl.

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

Definition at line 62 of file ResPool.cc.

References _pimpl.

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

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

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

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 96 of file ResPool.h.

References find().

Referenced by find().

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

Definition at line 103 of file ResPool.h.

References zypp::make_filter_begin().

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

Definition at line 107 of file ResPool.h.

References zypp::make_filter_end().

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

Definition at line 130 of file ResPool.h.

References zypp::make_filter_begin().

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

Definition at line 133 of file ResPool.h.

References zypp::make_filter_end().

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

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

Definition at line 149 of file ResPool.h.

References byIdentBegin().

Referenced by byIdentBegin().

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

Definition at line 152 of file ResPool.h.

References byIdentBegin().

Referenced by byIdentBegin().

template<class _Res >
byIdent_iterator zypp::ResPool::byIdentBegin ( IdString  name_r  )  const [inline]

Definition at line 156 of file ResPool.h.

References byIdentBegin().

Referenced by byIdentBegin().

template<class _Res >
byIdent_iterator zypp::ResPool::byIdentBegin ( const C_Str name_r  )  const [inline]

Definition at line 160 of file ResPool.h.

References byIdentBegin().

Referenced by byIdentBegin().

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

Derive name and kind from PoolItem.

Definition at line 164 of file ResPool.h.

References byIdentBegin(), and zypp::PoolItem::satSolvable().

Referenced by byIdentBegin().

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

Derive name and kind from sat::Solvable.

Definition at line 167 of file ResPool.h.

References byIdentBegin().

Referenced by byIdentBegin().

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

Takes a sat::Solvable::ident string.

Definition at line 170 of file ResPool.h.

References byIdentBegin().

Referenced by byIdentBegin().

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

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

Definition at line 180 of file ResPool.h.

References byIdentEnd().

Referenced by byIdentEnd().

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

Definition at line 183 of file ResPool.h.

References byIdentEnd().

Referenced by byIdentEnd().

template<class _Res >
byIdent_iterator zypp::ResPool::byIdentEnd ( IdString  name_r  )  const [inline]

Definition at line 187 of file ResPool.h.

References byIdentEnd().

Referenced by byIdentEnd().

template<class _Res >
byIdent_iterator zypp::ResPool::byIdentEnd ( const C_Str name_r  )  const [inline]

Definition at line 191 of file ResPool.h.

References byIdentEnd().

Referenced by byIdentEnd().

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

Derive name and kind from PoolItem.

Definition at line 195 of file ResPool.h.

References byIdentEnd(), and zypp::PoolItem::satSolvable().

Referenced by byIdentEnd().

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

Derive name and kind from sat::Solvable.

Definition at line 198 of file ResPool.h.

References byIdentEnd().

Referenced by byIdentEnd().

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

Takes a sat::Solvable::ident string.

Definition at line 201 of file ResPool.h.

References byIdentEnd().

Referenced by byIdentEnd().

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

template<class _Res >
byKind_iterator zypp::ResPool::byKindBegin (  )  const [inline]

Definition at line 215 of file ResPool.h.

References zypp::make_filter_begin().

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

template<class _Res >
byKind_iterator zypp::ResPool::byKindEnd (  )  const [inline]

Definition at line 222 of file ResPool.h.

References zypp::make_filter_end().

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

Definition at line 232 of file ResPool.h.

References zypp::make_filter_begin().

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

Definition at line 235 of file ResPool.h.

References zypp::make_filter_end().

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

Definition at line 70 of file ResPool.cc.

References _pimpl.

Referenced by zypp::ResPoolProxy::Impl::knownRepositoriesSize().

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

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

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 79 of file ResPool.cc.

References _pimpl.

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 131 of file ResPool.cc.

References instance(), and setRequestedLocales().

Referenced by setRequestedLocales().

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 134 of file ResPool.cc.

References addRequestedLocale(), and instance().

Referenced by addRequestedLocale().

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 137 of file ResPool.cc.

References eraseRequestedLocale(), and instance().

Referenced by eraseRequestedLocale().

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

Return the requested locales.

See also:
setRequestedLocales

Definition at line 140 of file ResPool.cc.

References getRequestedLocales(), and instance().

Referenced by zypp::target::TargetImpl::commit(), zypp::solver::detail::Testcase::createTestcase(), and getRequestedLocales().

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

Wheter this Locale is in the set of requested locales.

Definition at line 143 of file ResPool.cc.

References instance(), and isRequestedLocale().

Referenced by isRequestedLocale().

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 146 of file ResPool.cc.

References getAvailableLocales(), and instance().

Referenced by getAvailableLocales().

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

Wheter this Locale is in the set of available locales.

Definition at line 149 of file ResPool.cc.

References instance(), and isAvailableLocale().

Referenced by isAvailableLocale().

bool zypp::ResPool::autoSoftLocksEmpty (  )  const

Definition at line 82 of file ResPool.cc.

References _pimpl.

ResPool::size_type zypp::ResPool::autoSoftLocksSize (  )  const

Definition at line 85 of file ResPool.cc.

References _pimpl.

ResPool::autoSoftLocks_iterator zypp::ResPool::autoSoftLocksBegin (  )  const

Definition at line 88 of file ResPool.cc.

References _pimpl.

ResPool::autoSoftLocks_iterator zypp::ResPool::autoSoftLocksEnd (  )  const

Definition at line 91 of file ResPool.cc.

References _pimpl.

void zypp::ResPool::setAutoSoftLocks ( const AutoSoftLocks newLocks_r  ) 

Set a new soft-lock list.

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

Definition at line 94 of file ResPool.cc.

References _pimpl.

Referenced by zypp::target::TargetImpl::load().

void zypp::ResPool::getActiveSoftLocks ( AutoSoftLocks activeLocks_r  ) 

Suggest a new soft-lock list based on the current selection.

Based on the the current soft-lock list. Items tagged to be installed are removed, and those tagged to be deleted are added. (usually remembered on commit).

Definition at line 97 of file ResPool.cc.

References _pimpl.

Referenced by zypp::target::TargetImpl::commit().

bool zypp::ResPool::hardLockQueriesEmpty (  )  const

Definition at line 101 of file ResPool.cc.

References _pimpl.

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

Definition at line 104 of file ResPool.cc.

References _pimpl.

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

Definition at line 107 of file ResPool.cc.

References _pimpl.

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

Definition at line 110 of file ResPool.cc.

References _pimpl.

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 113 of file ResPool.cc.

References _pimpl.

Referenced by zypp::target::TargetImpl::load().

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 116 of file ResPool.cc.

References _pimpl.

Referenced by zypp::target::TargetImpl::commit().

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

Definition at line 120 of file ResPool.cc.

References _pimpl.

Referenced by begin(), and end().

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

Definition at line 123 of file ResPool.cc.

References _pimpl.

Referenced by byIdentBegin(), and byIdentEnd().


Friends And Related Function Documentation

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

Stream output

Definition at line 157 of file ResPool.cc.


Member Data Documentation


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

doxygen