libzypp
17.14.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
PoolItemBest.cc
Go to the documentation of this file.
1
/*---------------------------------------------------------------------\
2
| ____ _ __ __ ___ |
3
| |__ / \ / / . \ . \ |
4
| / / \ V /| _/ _/ |
5
| / /__ | | | | | | |
6
| /_____||_| |_| |_| |
7
| |
8
\---------------------------------------------------------------------*/
12
#include <iostream>
13
#include "
zypp/base/LogTools.h
"
14
15
#include "
zypp/PoolItemBest.h
"
16
#include "
zypp/ui/SelectableTraits.h
"
17
18
using
std::endl;
19
21
namespace
zypp
22
{
23
25
//
26
// CLASS NAME : PoolItemBest::Impl
27
//
29
struct
PoolItemBest::Impl
30
{
31
Impl
(
bool
preferNotLocked_r )
32
:
_preferNotLocked
{ preferNotLocked_r }
33
{}
34
35
Container
_container
;
36
bool
_preferNotLocked
;
37
38
private
:
39
friend
Impl
* rwcowClone<Impl>(
const
Impl
* rhs );
41
Impl
*
clone
()
const
42
{
return
new
Impl
( *
this
); }
43
};
45
47
//
48
// CLASS NAME : PoolItemBest
49
//
51
52
void
PoolItemBest::_ctor_init
(
bool
preferNotLocked_r )
53
{
_dont_use_this_use_pimpl
.reset(
new
RWCOW_pointer<Impl>
(
new
Impl
( preferNotLocked_r )) ); }
54
55
void
PoolItemBest::_ctor_init
()
56
{
_ctor_init
(
/*preferNotLocked*/
false
); }
57
58
const
PoolItemBest::Container
&
PoolItemBest::container
()
const
59
{
return
pimpl
()->
_container
; }
60
61
void
PoolItemBest::add
(
const
PoolItem
& pi_r )
62
{
63
Container
&
container
(
pimpl
()->_container );
64
65
PoolItem
& ccand( container[pi_r.
satSolvable
().
ident
()] );
66
if
( ! ccand )
67
ccand = pi_r;
68
else
if
(
pimpl
()->
_preferNotLocked
)
69
{
70
if
( ! pi_r.
status
().
isLocked
() )
71
{
72
if
( ccand.status().isLocked() ||
ui::SelectableTraits::AVOrder
()( pi_r, ccand ) )
73
ccand = pi_r;
74
}
75
else
if
( ccand.status().isLocked() )
76
{
77
if
(
ui::SelectableTraits::AVOrder
()( pi_r, ccand ) )
78
ccand = pi_r;
79
}
80
}
81
else
if
(
ui::SelectableTraits::AVOrder
()( pi_r, ccand ) )
82
ccand = pi_r;
83
}
84
85
PoolItem
PoolItemBest::find
(
IdString
ident_r )
const
86
{
87
const
Container
&
container
(
pimpl
()->_container );
88
Container::const_iterator it( container.find( ident_r ) );
89
return
it != container.end() ? it->second :
PoolItem
();
90
}
91
92
/******************************************************************
93
**
94
** FUNCTION NAME : operator<<
95
** FUNCTION TYPE : std::ostream &
96
*/
97
std::ostream &
operator<<
( std::ostream & str,
const
PoolItemBest
& obj )
98
{
99
return
dumpRange
( str <<
"("
<< obj.
size
() <<
") "
, obj.
begin
(), obj.
end
() );
100
}
101
103
}
// namespace zypp
zypp
PoolItemBest.cc
Generated by
1.8.2