libzypp
11.13.5
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
ByIdent.h
Go to the documentation of this file.
1
/*---------------------------------------------------------------------\
2
| ____ _ __ __ ___ |
3
| |__ / \ / / . \ . \ |
4
| / / \ V /| _/ _/ |
5
| / /__ | | | | | | |
6
| /_____||_| |_| |_| |
7
| |
8
\---------------------------------------------------------------------*/
12
#ifndef ZYPP_POOL_BYIDENT_H
13
#define ZYPP_POOL_BYIDENT_H
14
15
#include "
zypp/PoolItem.h
"
16
18
namespace
zypp
19
{
20
21
namespace
pool
22
{
23
26
class
ByIdent
27
{
28
public
:
29
ByIdent
()
30
:
_id
( 0 )
31
{}
32
33
explicit
ByIdent
(
sat::Solvable
slv_r )
34
:
_id
(
makeIdent
( slv_r ) )
35
{}
36
37
explicit
ByIdent
(
IdString
ident_r )
38
:
_id
( ident_r.id() )
39
{}
40
41
ByIdent
(
ResKind
kind_r,
IdString
name_r )
42
:
_id
(
makeIdent
( kind_r, name_r ) )
43
{}
44
45
ByIdent
(
ResKind
kind_r,
const
C_Str
& name_r )
46
:
_id
(
makeIdent
( kind_r, name_r ) )
47
{}
48
49
public
:
50
bool
operator()
(
sat::Solvable
slv_r )
const
51
{
52
return
_id
>= 0 ? ( slv_r.
ident
().
id
() ==
_id
&& ! slv_r.
isKind
(
ResKind::srcpackage
) )
53
: ( slv_r.
ident
().
id
() == -
_id
&& slv_r.
isKind
(
ResKind::srcpackage
) );
54
}
55
56
bool
operator()
(
const
PoolItem
& pi_r )
const
57
{
return
operator()
( pi_r.
satSolvable
() ); }
58
59
bool
operator()
(
ResObject::constPtr
p_r )
const
60
{
return
p_r ?
operator()
( p_r->satSolvable() ) : !
_id
; }
61
62
private
:
63
sat::detail::IdType
makeIdent
(
sat::Solvable
slv_r )
64
{
65
return
slv_r.
isKind
(
ResKind::srcpackage
) ? -slv_r.
ident
().
id
()
66
: slv_r.
ident
().
id
();
67
}
68
69
sat::detail::IdType
makeIdent
(
ResKind
kind_r,
IdString
name_r )
70
{
71
if
( kind_r ==
ResKind::package
)
72
return
name_r.
id
();
73
else
if
( kind_r ==
ResKind::srcpackage
)
74
return
-name_r.
id
();
75
return
IdString
(
str::form
(
"%s:%s"
, kind_r.
c_str
(), name_r.
c_str
() ) ).
id
();
76
}
77
78
sat::detail::IdType
makeIdent
(
ResKind
kind_r,
const
C_Str
& name_r )
79
{
80
if
( kind_r ==
ResKind::package
)
81
return
IdString
( name_r ).
id
();
82
else
if
( kind_r ==
ResKind::srcpackage
)
83
return
-(
IdString
( name_r ).
id
());
84
return
IdString
(
str::form
(
"%s:%s"
, kind_r.
c_str
(), name_r.
c_str
() ) ).
id
();
85
}
86
87
public
:
88
sat::detail::IdType
get
()
const
{
return
_id
; }
89
90
private
:
94
sat::detail::IdType
_id
;
95
};
96
98
}
// namespace pool
101
}
// namespace zypp
103
#endif // ZYPP_POOL_BYIDENT_H
zypp
pool
ByIdent.h
Generated by
1.8.1