libzypp  17.7.2
PoolItemBest.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_POOLITEMBEST_H
13 #define ZYPP_POOLITEMBEST_H
14 
15 #include <iosfwd>
16 
17 #include "zypp/base/PtrTypes.h"
18 #include "zypp/base/Function.h"
19 #include "zypp/base/Iterator.h"
20 #include "zypp/base/Hash.h"
21 
22 #include "zypp/PoolItem.h"
23 
25 namespace zypp
26 {
27 
29  //
30  // CLASS NAME : PoolItemBest
31  //
61  {
62  typedef std::unordered_map<IdString,PoolItem> Container;
63  public:
65  typedef boost::function<bool ( const PoolItem & lhs, const PoolItem & rhs )> Predicate;
66 
68  typedef Container::value_type value_type;
71 
72  public:
75  { _ctor_init(); }
76 
79  { _ctor_init(); add( slv_r ); }
80 
82  PoolItemBest( const PoolItem & pi_r )
83  { _ctor_init(); add( pi_r ); }
84 
86  template<class TIterator>
87  PoolItemBest( TIterator begin_r, TIterator end_r )
88  { _ctor_init(); add( begin_r, end_r ); }
89 
90  public:
92  void add( sat::Solvable slv_r )
93  { add( PoolItem( slv_r ) ); }
94 
96  void add( const PoolItem & pi_r );
97 
99  template<class TIterator>
100  void add( TIterator begin_r, TIterator end_r )
101  {
102  for_( it, begin_r, end_r )
103  add( *it );
104  }
105 
106  public:
110  bool empty() const { return container().empty(); }
112  size_type size() const { return container().size(); }
114  iterator begin() const { return make_map_value_begin( container() ); }
116  iterator end() const { return make_map_value_end( container() ); }
117 
119  PoolItem find( IdString ident_r ) const;
121  PoolItem find( sat::Solvable slv_r ) const { return find( slv_r.ident() ); }
123  PoolItem find( const PoolItem & pi_r ) const { return find( pi_r.satSolvable().ident() ); }
125 
133 
134  private:
135  void _ctor_init();
136  const Container & container() const;
137  private:
139  class Impl;
141  RWCOW_pointer<Impl> & pimpl() { return *(reinterpret_cast<RWCOW_pointer<Impl>*>( _dont_use_this_use_pimpl.get() )); }
143  const RWCOW_pointer<Impl> & pimpl() const { return *(reinterpret_cast<RWCOW_pointer<Impl>*>( _dont_use_this_use_pimpl.get() )); }
145  shared_ptr<void> _dont_use_this_use_pimpl;
146  };
148 
150  std::ostream & operator<<( std::ostream & str, const PoolItemBest & obj );
151 
153 } // namespace zypp
155 #endif // ZYPP_POOLITEMBEST_H
Container::value_type value_type
Definition: PoolItemBest.h:68
A Solvable object within the sat Pool.
Definition: Solvable.h:53
std::unordered_map< IdString, PoolItem > Container
Definition: PoolItemBest.h:62
shared_ptr< void > _dont_use_this_use_pimpl
Avoid need to include Impl definition when inlined ctors (due to tepmlate) are provided.
Definition: PoolItemBest.h:145
Container::size_type size_type
Definition: PoolItemBest.h:67
Helper filtering the files offered by a RepomdFileReader.
void add(TIterator begin_r, TIterator end_r)
Feed a range of sat::Solvable or PoolItem.
Definition: PoolItemBest.h:100
const Container & container() const
Definition: PoolItemBest.cc:50
boost::function< bool(const PoolItem &lhs, const PoolItem &rhs)> Predicate
Predicate returning True if lhs is a better choice.
Definition: PoolItemBest.h:65
PoolItem find(const PoolItem &pi_r) const
Definition: PoolItemBest.h:123
String related utilities and Regular expression matching.
transform_iterator< GetPairSecond< typename MapType::value_type >, typename MapType::const_iterator > Value_const_iterator
The value iterator type.
Definition: Iterator.h:223
MapKVIteratorTraits< TMap >::Value_const_iterator make_map_value_begin(const TMap &map_r)
Convenience to create the value iterator from container::begin()
Definition: Iterator.h:238
Access to the sat-pools string space.
Definition: IdString.h:41
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
Definition: Easy.h:27
MapKVIteratorTraits< Container >::Value_const_iterator iterator
Definition: PoolItemBest.h:69
MapKVIteratorTraits< TMap >::Key_const_iterator make_map_key_begin(const TMap &map_r)
Convenience to create the key iterator from container::begin()
Definition: Iterator.h:228
PoolItemBest(const PoolItem &pi_r)
Ctor feeding a PoolItem.
Definition: PoolItemBest.h:82
std::ostream & operator<<(std::ostream &str, const Exception &obj)
Definition: Exception.cc:147
MapKVIteratorTraits< Container >::Key_const_iterator ident_iterator
Definition: PoolItemBest.h:70
ident_iterator identBegin() const
Pointer to the first item.
Definition: PoolItemBest.h:129
MapKVIteratorTraits< TMap >::Key_const_iterator make_map_key_end(const TMap &map_r)
Convenience to create the key iterator from container::end()
Definition: Iterator.h:233
const RWCOW_pointer< Impl > & pimpl() const
Pointer to implementation.
Definition: PoolItemBest.h:143
bool empty() const
Whether PoolItems were collected.
Definition: PoolItemBest.h:110
SolvableIdType size_type
Definition: PoolMember.h:126
MapKVIteratorTraits< TMap >::Value_const_iterator make_map_value_end(const TMap &map_r)
Convenience to create the value iterator from container::end()
Definition: Iterator.h:243
iterator begin() const
Pointer to the first PoolItem.
Definition: PoolItemBest.h:114
Find the best candidates e.g.
Definition: PoolItemBest.h:60
transform_iterator< GetPairFirst< typename MapType::value_type >, typename MapType::const_iterator > Key_const_iterator
The key iterator type.
Definition: Iterator.h:218
PoolItemBest()
Default ctor.
Definition: PoolItemBest.h:74
size_type size() const
Number of PoolItems collected.
Definition: PoolItemBest.h:112
ident_iterator identEnd() const
Pointer behind the last item.
Definition: PoolItemBest.h:131
RWCOW_pointer< Impl > & pimpl()
Pointer to implementation.
Definition: PoolItemBest.h:141
Combining sat::Solvable and ResStatus.
Definition: PoolItem.h:50
iterator end() const
Pointer behind the last PoolItem.
Definition: PoolItemBest.h:116
PoolItem find(sat::Solvable slv_r) const
Definition: PoolItemBest.h:121
void add(sat::Solvable slv_r)
Feed one sat::Solvable.
Definition: PoolItemBest.h:92
PoolItemBest(TIterator begin_r, TIterator end_r)
Ctor feeding a range of sat::Solvable or PoolItem.
Definition: PoolItemBest.h:87
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:1
Solvable satSolvable() const
Return the corresponding sat::Solvable.
Definition: SolvableType.h:57
IdString ident() const
The identifier.
Definition: Solvable.cc:265
PoolItemBest(sat::Solvable slv_r)
Ctor feeding a sat::Solvable.
Definition: PoolItemBest.h:78
PoolItem find(IdString ident_r) const
Return the collected PoolItem with sat::Solvable::ident ident_r.
Definition: PoolItemBest.cc:61