libzypp
17.14.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
Resolvable.h
Go to the documentation of this file.
1
/*---------------------------------------------------------------------\
2
| ____ _ __ __ ___ |
3
| |__ / \ / / . \ . \ |
4
| / / \ V /| _/ _/ |
5
| / /__ | | | | | | |
6
| /_____||_| |_| |_| |
7
| |
8
\---------------------------------------------------------------------*/
12
#ifndef ZYPP_RESOLVABLE_H
13
#define ZYPP_RESOLVABLE_H
14
15
#include <iosfwd>
16
#include <string>
17
18
#include "
zypp/APIConfig.h
"
19
20
#include "
zypp/base/ReferenceCounted.h
"
21
#include "
zypp/base/NonCopyable.h
"
22
#include "
zypp/base/PtrTypes.h
"
23
24
#include "
zypp/sat/SolvableType.h
"
25
27
namespace
zypp
28
{
29
class
PoolItem;
49
class
Resolvable
:
public
sat::SolvableType
<Resolvable>,
50
public
base::ReferenceCounted
,
private
base::NonCopyable
51
{
52
friend
std::ostream &
operator<<
( std::ostream & str,
const
Resolvable
& obj );
53
54
public
:
55
typedef
Resolvable
Self
;
56
typedef
ResTraits<Self>
TraitsType
;
57
typedef
TraitsType::KindType
Kind
;
58
typedef
TraitsType::PtrType
Ptr
;
59
typedef
TraitsType::constPtrType
constPtr
;
60
61
public
:
63
explicit
operator
sat::Solvable
()
const
64
{
return
_solvable
; }
65
67
PoolItem
poolItem
()
const
;
68
69
protected
:
71
Resolvable
(
const
sat::Solvable
& solvable_r );
73
virtual
~Resolvable
();
75
virtual
std::ostream &
dumpOn
( std::ostream & str )
const
;
76
77
private
:
78
sat::Solvable
_solvable
;
79
};
81
83
inline
std::ostream &
operator<<
( std::ostream & str,
const
Resolvable
& obj )
84
{
return
obj.
dumpOn
( str ); }
85
87
inline
std::ostream &
dumpOn
( std::ostream & str,
const
Resolvable
& obj )
88
{
return
dumpOn
( str, obj.
satSolvable
() ); }
89
98
template
<
class
TRes>
99
inline
bool
isKind
(
const
Resolvable::constPtr
& p )
100
{
return
p && p->isKind<TRes>(); }
101
102
// Specialization for Resolvable: Always true.
103
template
<>
104
inline
bool
isKind<Resolvable>
(
const
Resolvable::constPtr
& p )
105
{
return
!!p; }
106
107
// Specialization for ResObject: Always true.
108
template
<>
109
inline
bool
isKind<ResObject>
(
const
Resolvable::constPtr
& p )
110
{
return
!!p; }
111
112
121
template
<
class
TRes>
122
inline
typename
ResTraits<TRes>::PtrType
asKind
(
const
Resolvable::Ptr
& p )
123
{
return
dynamic_pointer_cast<TRes>(p); }
124
125
template
<
class
TRes>
126
inline
typename
ResTraits<TRes>::constPtrType
asKind
(
const
Resolvable::constPtr
& p )
127
{
return
dynamic_pointer_cast<
const
TRes>(p); }
128
130
134
inline
int
compareByN
(
const
Resolvable::constPtr
& lhs,
const
Resolvable::constPtr
& rhs )
135
{
136
int
ret = 0;
137
if
( lhs != rhs )
138
{
139
if
( lhs && rhs )
140
ret =
compareByN
( *lhs, *rhs );
141
else
142
ret = lhs ? 1 : -1;
143
}
144
return
ret;
145
}
146
148
inline
int
compareByNVR
(
const
Resolvable::constPtr
& lhs,
const
Resolvable::constPtr
& rhs )
149
{
150
int
ret = 0;
151
if
( lhs != rhs )
152
{
153
if
( lhs && rhs )
154
ret =
compareByNVR
( *lhs, *rhs );
155
else
156
ret = lhs ? 1 : -1;
157
}
158
return
ret;
159
}
160
162
inline
int
compareByNVRA
(
const
Resolvable::constPtr
& lhs,
const
Resolvable::constPtr
& rhs )
163
{
164
int
ret = 0;
165
if
( lhs != rhs )
166
{
167
if
( lhs && rhs )
168
ret =
compareByNVRA
( *lhs, *rhs );
169
else
170
ret = lhs ? 1 : -1;
171
}
172
return
ret;
173
}
174
}
// namespace zypp
176
#endif // ZYPP_RESOLVABLE_H
zypp
Resolvable.h
Generated by
1.8.2