~thopiekar/zypper/libzypp-manual-import

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