libzypp 17.37.17
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 using Container = std::unordered_map<IdString, PoolItem>;
66 public:
68 using Predicate = boost::function<bool (const PoolItem &, const PoolItem &)>;
69
70 using size_type = Container::size_type;
71 using value_type = Container::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:
116
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
135
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() )); }
154 };
155
156
158 std::ostream & operator<<( std::ostream & str, const PoolItemBest & obj );
159
161} // namespace zypp
163#endif // ZYPP_POOLITEMBEST_H
Access to the sat-pools string space.
Definition IdString.h:44
Find the best candidates e.g.
RWCOW_pointer< Impl > & pimpl()
Pointer to implementation.
size_type size() const
Number of PoolItems collected.
Container::size_type size_type
ident_iterator identEnd() const
Pointer behind the last item.
const RWCOW_pointer< Impl > & pimpl() const
Pointer to implementation.
PoolItemBest(const PoolItem &pi_r, bool preferNotLocked_r=false)
Ctor feeding a PoolItem.
void _ctor_init(bool preferNotLocked_r)
shared_ptr< void > _dont_use_this_use_pimpl
Avoid need to include Impl definition when inlined ctors (due to tepmlate) are provided.
PoolItem find(const PoolItem &pi_r) const
boost::function< bool(const PoolItem &, const PoolItem &)> Predicate
Predicate returning True if lhs is a better choice.
PoolItemBest(TIterator begin_r, TIterator end_r, bool preferNotLocked_r=false)
Ctor feeding a range of sat::Solvable or PoolItem.
const Container & container() const
iterator begin() const
Pointer to the first PoolItem.
bool empty() const
Whether PoolItems were collected.
iterator end() const
Pointer behind the last PoolItem.
void add(TIterator begin_r, TIterator end_r)
Feed a range of sat::Solvable or PoolItem.
MapKVIteratorTraits< Container >::Key_const_iterator ident_iterator
static constexpr bool preferNotLocked
Indicator argument for ctor: consider locked packages less than not locked packages.
PoolItemBest(bool preferNotLocked_r=false)
Default ctor.
void add(sat::Solvable slv_r)
Feed one sat::Solvable.
PoolItemBest(sat::Solvable slv_r, bool preferNotLocked_r=false)
Ctor feeding a sat::Solvable.
PoolItem find(sat::Solvable slv_r) const
Container::value_type value_type
ident_iterator identBegin() const
Pointer to the first item.
MapKVIteratorTraits< Container >::Value_const_iterator iterator
std::unordered_map< IdString, PoolItem > Container
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:270
String related utilities and Regular expression matching.
Easy-to use interface to the ZYPP dependency resolver.
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:226
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:236
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:231
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:241
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
const Arch Arch_armv7hnl Arch_armv7nhl ZYPP_API
Definition Arch.h:247
transform_iterator< GetPairFirst< typename MapType::value_type >, typename MapType::const_iterator > Key_const_iterator
The key iterator type.
Definition Iterator.h:217
transform_iterator< GetPairSecond< typename MapType::value_type >, typename MapType::const_iterator > Value_const_iterator
The value iterator type.
Definition Iterator.h:221
RW_pointer supporting 'copy on write' functionality.
Definition PtrTypes.h:469
Solvable satSolvable() const
Return the corresponding sat::Solvable.
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
Definition Easy.h:27