1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
/*---------------------------------------------------------------------\
| ____ _ __ __ ___ |
| |__ / \ / / . \ . \ |
| / / \ V /| _/ _/ |
| / /__ | | | | | | |
| /_____||_| |_| |_| |
| |
\---------------------------------------------------------------------*/
/** \file zypp/pool/PoolTraits.h
*
*/
#ifndef ZYPP_POOL_POOLTRAITS_H
#define ZYPP_POOL_POOLTRAITS_H
#include <set>
#include <map>
#include <list>
#include <vector>
#include "zypp/base/Iterator.h"
#include "zypp/base/Hash.h"
#include "zypp/PoolItem.h"
#include "zypp/pool/ByIdent.h"
#include "zypp/sat/Pool.h"
///////////////////////////////////////////////////////////////////
namespace zypp
{ /////////////////////////////////////////////////////////////////
class PoolQuery;
///////////////////////////////////////////////////////////////////
namespace pool
{ /////////////////////////////////////////////////////////////////
class PoolImpl;
/** Pool internal filter skiping invalid/unwanted PoolItems. */
struct ByPoolItem
{
bool operator()( const PoolItem & pi ) const
{ return bool(pi); }
};
/** In CXX0X std::_Select2nd does no longer derive from std::unary_function
*/
template<typename _Pair>
struct P_Select2nd : public std::unary_function<_Pair, typename _Pair::second_type>
{
typename _Pair::second_type&
operator()(_Pair& __x) const
{ return __x.second; }
const typename _Pair::second_type&
operator()(const _Pair& __x) const
{ return __x.second; }
};
///////////////////////////////////////////////////////////////////
//
// CLASS NAME : PoolTraits
//
/** */
struct PoolTraits
{
public:
typedef sat::detail::SolvableIdType SolvableIdType;
/** pure items */
typedef std::vector<PoolItem> ItemContainerT;
typedef ItemContainerT::const_iterator item_iterator;
typedef filter_iterator<ByPoolItem,ItemContainerT::const_iterator>
const_iterator;
typedef ItemContainerT::size_type size_type;
/** ident index */
typedef std::unordered_multimap<sat::detail::IdType, PoolItem>
Id2ItemT;
typedef P_Select2nd<Id2ItemT::value_type> Id2ItemValueSelector;
typedef transform_iterator<Id2ItemValueSelector, Id2ItemT::const_iterator>
byIdent_iterator;
/** list of known Repositories */
typedef sat::Pool::RepositoryIterator repository_iterator;
/** hard locks from etc/zypp/locks */
typedef std::list<PoolQuery> HardLockQueries;
typedef HardLockQueries::const_iterator hardLockQueries_iterator;
typedef PoolImpl Impl;
typedef shared_ptr<PoolImpl> Impl_Ptr;
typedef shared_ptr<const PoolImpl> Impl_constPtr;
};
///////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
} // namespace pool
///////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
} // namespace zypp
///////////////////////////////////////////////////////////////////
#endif // ZYPP_POOL_POOLTRAITS_H
|