libzypp 17.31.23
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
25namespace zypp
26{
27
29 //
30 // CLASS NAME : PoolItemBest
31 //
64 {
65 typedef std::unordered_map<IdString,PoolItem> Container;
66 public:
68 typedef boost::function<bool ( const PoolItem & lhs, const PoolItem & rhs )> Predicate;
69
70 typedef Container::size_type size_type;
71 typedef Container::value_type value_type;
74
75 public:
77 static constexpr bool preferNotLocked = true;
78
79 public:
81 PoolItemBest( bool preferNotLocked_r = false )
82 { _ctor_init( preferNotLocked_r ); }
83
85 PoolItemBest( sat::Solvable slv_r, bool preferNotLocked_r = false )
86 { _ctor_init( preferNotLocked_r ); add( slv_r ); }
87
89 PoolItemBest( const PoolItem & pi_r, bool preferNotLocked_r = false )
90 { _ctor_init( preferNotLocked_r ); add( pi_r ); }
91
93 template<class TIterator>
94 PoolItemBest( TIterator begin_r, TIterator end_r, bool preferNotLocked_r = false )
95 { _ctor_init( preferNotLocked_r ); add( begin_r, end_r ); }
96
97 public:
99 void add( sat::Solvable slv_r )
100 { add( PoolItem( slv_r ) ); }
101
103 void add( const PoolItem & pi_r );
104
106 template<class TIterator>
107 void add( TIterator begin_r, TIterator end_r )
108 {
109 for_( it, begin_r, end_r )
110 add( *it );
111 }
112
113 public:
117 bool empty() const { return container().empty(); }
119 size_type size() const { return container().size(); }
123 iterator end() const { return make_map_value_end( container() ); }
124
126 PoolItem find( IdString ident_r ) const;
128 PoolItem find( sat::Solvable slv_r ) const { return find( slv_r.ident() ); }
130 PoolItem find( const PoolItem & pi_r ) const { return find( pi_r.satSolvable().ident() ); }
132
140
141 private:
142 void _ctor_init( bool preferNotLocked_r );
143 void _ctor_init(/*preferNotLocked = false*/);
144 const Container & container() const;
145 private:
147 struct Impl;
149 RWCOW_pointer<Impl> & pimpl() { return *(reinterpret_cast<RWCOW_pointer<Impl>*>( _dont_use_this_use_pimpl.get() )); }
151 const RWCOW_pointer<Impl> & pimpl() const { return *(reinterpret_cast<RWCOW_pointer<Impl>*>( _dont_use_this_use_pimpl.get() )); }
153 shared_ptr<void> _dont_use_this_use_pimpl;
154 };
156
158 std::ostream & operator<<( std::ostream & str, const PoolItemBest & obj );
159
161} // namespace zypp
163#endif // ZYPP_POOLITEMBEST_H
RepoManager implementation.
Access to the sat-pools string space.
Definition: IdString.h:43
Find the best candidates e.g.
Definition: PoolItemBest.h:64
Container::size_type size_type
Definition: PoolItemBest.h:70
RWCOW_pointer< Impl > & pimpl()
Pointer to implementation.
Definition: PoolItemBest.h:149
size_type size() const
Number of PoolItems collected.
Definition: PoolItemBest.h:119
ident_iterator identEnd() const
Pointer behind the last item.
Definition: PoolItemBest.h:138
const RWCOW_pointer< Impl > & pimpl() const
Pointer to implementation.
Definition: PoolItemBest.h:151
std::unordered_map< IdString, PoolItem > Container
Definition: PoolItemBest.h:65
PoolItemBest(const PoolItem &pi_r, bool preferNotLocked_r=false)
Ctor feeding a PoolItem.
Definition: PoolItemBest.h:89
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:153
PoolItem find(const PoolItem &pi_r) const
Definition: PoolItemBest.h:130
Container::value_type value_type
Definition: PoolItemBest.h:71
PoolItemBest(TIterator begin_r, TIterator end_r, bool preferNotLocked_r=false)
Ctor feeding a range of sat::Solvable or PoolItem.
Definition: PoolItemBest.h:94
const Container & container() const
Definition: PoolItemBest.cc:58
PoolItem find(IdString ident_r) const
Return the collected PoolItem with sat::Solvable::ident ident_r.
Definition: PoolItemBest.cc:85
void _ctor_init()
bin.compat legacy
Definition: PoolItemBest.cc:55
iterator begin() const
Pointer to the first PoolItem.
Definition: PoolItemBest.h:121
bool empty() const
Whether PoolItems were collected.
Definition: PoolItemBest.h:117
MapKVIteratorTraits< Container >::Key_const_iterator ident_iterator
Definition: PoolItemBest.h:73
iterator end() const
Pointer behind the last PoolItem.
Definition: PoolItemBest.h:123
void add(TIterator begin_r, TIterator end_r)
Feed a range of sat::Solvable or PoolItem.
Definition: PoolItemBest.h:107
MapKVIteratorTraits< Container >::Value_const_iterator iterator
Definition: PoolItemBest.h:72
static constexpr bool preferNotLocked
Indicator argument for ctor: consider locked packages less than not locked packages.
Definition: PoolItemBest.h:77
PoolItemBest(bool preferNotLocked_r=false)
Default ctor.
Definition: PoolItemBest.h:81
void add(sat::Solvable slv_r)
Feed one sat::Solvable.
Definition: PoolItemBest.h:99
PoolItemBest(sat::Solvable slv_r, bool preferNotLocked_r=false)
Ctor feeding a sat::Solvable.
Definition: PoolItemBest.h:85
PoolItem find(sat::Solvable slv_r) const
Definition: PoolItemBest.h:128
boost::function< bool(const PoolItem &lhs, const PoolItem &rhs)> Predicate
Predicate returning True if lhs is a better choice.
Definition: PoolItemBest.h:68
ident_iterator identBegin() const
Pointer to the first item.
Definition: PoolItemBest.h:136
Combining sat::Solvable and ResStatus.
Definition: PoolItem.h:51
A Solvable object within the sat Pool.
Definition: Solvable.h:54
IdString ident() const
The identifier.
Definition: Solvable.cc:269
String related utilities and Regular expression matching.
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2
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
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
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
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
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
Definition: SerialNumber.cc:52
transform_iterator< GetPairFirst< typename MapType::value_type >, typename MapType::const_iterator > Key_const_iterator
The key iterator type.
Definition: Iterator.h:218
transform_iterator< GetPairSecond< typename MapType::value_type >, typename MapType::const_iterator > Value_const_iterator
The value iterator type.
Definition: Iterator.h:223
RW_pointer supporting 'copy on write' functionality.
Definition: PtrTypes.h:459
Solvable satSolvable() const
Return the corresponding sat::Solvable.
Definition: SolvableType.h:57
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
Definition: Easy.h:28