libzypp  10.5.0
PoolTraits.h
Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00012 #ifndef ZYPP_POOL_POOLTRAITS_H
00013 #define ZYPP_POOL_POOLTRAITS_H
00014 
00015 #include <set>
00016 #include <map>
00017 #include <list>
00018 #include <vector>
00019 
00020 #include "zypp/base/Iterator.h"
00021 #include "zypp/base/Tr1hash.h"
00022 
00023 #include "zypp/PoolItem.h"
00024 #include "zypp/pool/ByIdent.h"
00025 #include "zypp/sat/Pool.h"
00026 
00028 namespace zypp
00029 { 
00030 
00031   class PoolQuery;
00032 
00034   namespace pool
00035   { 
00036 
00037     class PoolImpl;
00038 
00040     struct ByPoolItem
00041     {
00042       bool operator()( const PoolItem & pi ) const
00043       { return pi; }
00044     };
00045 
00047     //
00048     //  CLASS NAME : PoolTraits
00049     //
00051     struct PoolTraits
00052     {
00053     public:
00054       typedef sat::detail::SolvableIdType               SolvableIdType;
00055 
00057       typedef std::vector<PoolItem>                     ItemContainerT;
00058       typedef ItemContainerT::const_iterator            item_iterator;
00059       typedef filter_iterator<ByPoolItem,ItemContainerT::const_iterator>
00060                                                         const_iterator;
00061       typedef ItemContainerT::size_type                 size_type;
00062 
00064       typedef std::tr1::unordered_multimap<sat::detail::IdType, PoolItem>
00065                                                         Id2ItemT;
00066       typedef std::_Select2nd<Id2ItemT::value_type>     Id2ItemValueSelector;
00067       typedef transform_iterator<Id2ItemValueSelector, Id2ItemT::const_iterator>
00068                                                         byIdent_iterator;
00069 
00071       typedef sat::Pool::RepositoryIterator             repository_iterator;
00072 
00074       typedef std::tr1::unordered_set<IdString>         AutoSoftLocks;
00075       typedef AutoSoftLocks::const_iterator             autoSoftLocks_iterator;
00076 
00078       typedef std::list<PoolQuery>                      HardLockQueries;
00079       typedef HardLockQueries::const_iterator           hardLockQueries_iterator;
00080 
00081       typedef PoolImpl                   Impl;
00082       typedef shared_ptr<PoolImpl>       Impl_Ptr;
00083       typedef shared_ptr<const PoolImpl> Impl_constPtr;
00084     };
00086 
00088   } // namespace pool
00091 } // namespace zypp
00093 #endif // ZYPP_POOL_POOLTRAITS_H