libzypp: zypp/PoolItemBest.h Source File

libzypp 17.38.11

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-core/base/PtrTypes.h>
18#include <zypp-core/base/Function.h>
19#include <zypp-core/base/Iterator.h>
20#include <zypp-core/base/Hash.h>
21
22#include <zypp/PoolItem.h>
23
25namespace zypp
26{
27
29 //
30 // CLASS NAME : PoolItemBest
31 //
63 class ZYPP_API PoolItemBest
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;
72 using iterator = MapKVIteratorTraits<Container>::Value_const_iterator;
73 using ident_iterator = MapKVIteratorTraits<Container>::Key_const_iterator;
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(); }
121 iterator begin() const { return make_map_value_begin( container() ); }
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
136 ident_iterator identBegin() const { return make_map_key_begin( container() ); }
138 ident_iterator identEnd() const { return make_map_key_end( container() ); }
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 };
155
156
158 std::ostream & operator<<( std::ostream & str, const PoolItemBest & obj );
159
161} // namespace zypp
163#endif // ZYPP_POOLITEMBEST_H
for_
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
Definition Easy.h:27
Function.h
Hash.h
Iterator.h
PoolItem.h
PtrTypes.h
Impl
bool
shared_ptr
zypp::IdString
Access to the sat-pools string space.
Definition IdString.h:55
zypp::PoolItemBest
Find the best candidates e.g.
Definition PoolItemBest.h:64
zypp::PoolItemBest::pimpl
RWCOW_pointer< Impl > & pimpl()
Pointer to implementation.
Definition PoolItemBest.h:149
zypp::PoolItemBest::size
size_type size() const
Number of PoolItems collected.
Definition PoolItemBest.h:119
zypp::PoolItemBest::size_type
Container::size_type size_type
Definition PoolItemBest.h:70
zypp::PoolItemBest::identEnd
ident_iterator identEnd() const
Pointer behind the last item.
Definition PoolItemBest.h:138
zypp::PoolItemBest::pimpl
const RWCOW_pointer< Impl > & pimpl() const
Pointer to implementation.
Definition PoolItemBest.h:151
zypp::PoolItemBest::PoolItemBest
PoolItemBest(const PoolItem &pi_r, bool preferNotLocked_r=false)
Ctor feeding a PoolItem.
Definition PoolItemBest.h:89
zypp::PoolItemBest::_ctor_init
void _ctor_init(bool preferNotLocked_r)
Definition PoolItemBest.cc:52
zypp::PoolItemBest::_dont_use_this_use_pimpl
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
zypp::PoolItemBest::find
PoolItem find(const PoolItem &pi_r) const
Definition PoolItemBest.h:130
zypp::PoolItemBest::Predicate
boost::function< bool(const PoolItem &, const PoolItem &)> Predicate
Predicate returning True if lhs is a better choice.
Definition PoolItemBest.h:68
zypp::PoolItemBest::PoolItemBest
PoolItemBest(TIterator begin_r, TIterator end_r, bool preferNotLocked_r=false)
Ctor feeding a range of sat::Solvable or PoolItem.
Definition PoolItemBest.h:94
zypp::PoolItemBest::container
const Container & container() const
Definition PoolItemBest.cc:58
zypp::PoolItemBest::begin
iterator begin() const
Pointer to the first PoolItem.
Definition PoolItemBest.h:121
zypp::PoolItemBest::empty
bool empty() const
Whether PoolItems were collected.
Definition PoolItemBest.h:117
zypp::PoolItemBest::end
iterator end() const
Pointer behind the last PoolItem.
Definition PoolItemBest.h:123
zypp::PoolItemBest::add
void add(TIterator begin_r, TIterator end_r)
Feed a range of sat::Solvable or PoolItem.
Definition PoolItemBest.h:107
zypp::PoolItemBest::ident_iterator
MapKVIteratorTraits< Container >::Key_const_iterator ident_iterator
Definition PoolItemBest.h:73
zypp::PoolItemBest::preferNotLocked
static constexpr bool preferNotLocked
Indicator argument for ctor: consider locked packages less than not locked packages.
Definition PoolItemBest.h:77
zypp::PoolItemBest::PoolItemBest
PoolItemBest(bool preferNotLocked_r=false)
Default ctor.
Definition PoolItemBest.h:81
zypp::PoolItemBest::add
void add(sat::Solvable slv_r)
Feed one sat::Solvable.
Definition PoolItemBest.h:99
zypp::PoolItemBest::PoolItemBest
PoolItemBest(sat::Solvable slv_r, bool preferNotLocked_r=false)
Ctor feeding a sat::Solvable.
Definition PoolItemBest.h:85
zypp::PoolItemBest::find
PoolItem find(sat::Solvable slv_r) const
Definition PoolItemBest.h:128
zypp::PoolItemBest::value_type
Container::value_type value_type
Definition PoolItemBest.h:71
zypp::PoolItemBest::identBegin
ident_iterator identBegin() const
Pointer to the first item.
Definition PoolItemBest.h:136
zypp::PoolItemBest::iterator
MapKVIteratorTraits< Container >::Value_const_iterator iterator
Definition PoolItemBest.h:72
zypp::PoolItemBest::Container
std::unordered_map< IdString, PoolItem > Container
Definition PoolItemBest.h:65
zypp::PoolItem
Combining sat::Solvable and ResStatus.
Definition PoolItem.h:51
zypp::sat::Solvable
A Solvable object within the sat Pool.
Definition Solvable.h:54
zypp::sat::Solvable::ident
IdString ident() const
The identifier.
Definition Solvable.cc:273
str
String related utilities and Regular expression matching.
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition CodePitfalls.doc:2
zypp::make_map_key_begin
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
zypp::make_map_value_begin
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
zypp::make_map_key_end
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
zypp::make_map_value_end
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
zypp::ZYPP_API
const Arch Arch_empty ZYPP_API
relates: Arch This is an empty Arch represented by an empty string.
Definition Arch.h:173
zypp::operator<<
std::ostream & operator<<(std::ostream &str, const Capabilities &obj)
relates: Capabilities Stream output
Definition Capabilities.cc:65
zypp::MapKVIteratorTraits::Key_const_iterator
transform_iterator< GetPairFirst< typename MapType::value_type >, typename MapType::const_iterator > Key_const_iterator
The key iterator type.
Definition Iterator.h:217
zypp::MapKVIteratorTraits::Value_const_iterator
transform_iterator< GetPairSecond< typename MapType::value_type >, typename MapType::const_iterator > Value_const_iterator
The value iterator type.
Definition Iterator.h:221
zypp::RWCOW_pointer
RW_pointer supporting 'copy on write' functionality.
Definition PtrTypes.h:469
zypp::sat::SolvableType::satSolvable
Solvable satSolvable() const
Return the corresponding sat::Solvable.
Definition SolvableType.h:57