libzypp  17.35.16
ResFilters.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_RESFILTERS_H
13 #define ZYPP_RESFILTERS_H
14 
15 #include <zypp/base/Functional.h>
16 #include <zypp/Filter.h>
17 #include <zypp/Resolvable.h>
18 
19 #include <zypp/PoolItem.h>
20 #include <zypp/Repository.h>
21 
22 #include <utility>
23 
25 namespace zypp
26 {
27  namespace resfilter
29  {
30 
139  //
141  // Some ResObject attributes
142  //
144 
146  template<class TRes>
149 
151  struct ByName
152  {
154  {}
155 
156  ByName( std::string name_r )
157  : _name(std::move( name_r ))
158  {}
159 
160  bool operator()( const ResObject::constPtr& p ) const
161  {
162  return p->name() == _name;
163  }
164 
165  std::string _name;
166  };
167 
170  {
171  ByRepository( Repository repository_r )
172  : _alias( repository_r.info().alias() )
173  {}
174 
175  ByRepository( std::string alias_r )
176  : _alias(std::move( alias_r ))
177  {}
178 
179  bool operator()( const ResObject::constPtr& p ) const
180  {
181  return p->repoInfo().alias() == _alias;
182  }
183 
184  std::string _alias;
185  };
186 
199  template<class TCompare = CompareByEQ<Edition> >
200  struct ByEdition
201  {
202  ByEdition( Edition edition_r, TCompare cmp_r )
203  : _edition(std::move( edition_r ))
204  , _cmp( cmp_r )
205  {}
206 
207  bool operator()( const ResObject::constPtr& p ) const
208  {
209  return _cmp( p->edition(), _edition );
210  }
211 
213  TCompare _cmp;
214  };
215 
217  template<class TCompare>
218  ByEdition<TCompare> byEdition( const Edition & edition_r, TCompare cmp_r )
219  { return ByEdition<TCompare>( edition_r, cmp_r ); }
220 
222  template<class TCompare>
223  ByEdition<TCompare> byEdition( const Edition & edition_r )
224  { return byEdition( edition_r, TCompare() ); }
225 
226 
239  template<class TCompare = CompareByEQ<Arch> >
240  struct ByArch
241  {
242  ByArch( const Arch & arch_r, TCompare cmp_r )
243  : _arch( arch_r )
244  , _cmp( cmp_r )
245  {}
246 
247  bool operator()( const ResObject::constPtr& p ) const
248  {
249  return _cmp( p->arch(), _arch );
250  }
251 
253  TCompare _cmp;
254  };
255 
257  template<class TCompare>
258  ByArch<TCompare> byArch( const Arch & arch_r, TCompare cmp_r )
259  { return ByArch<TCompare>( arch_r, cmp_r ); }
260 
262  template<class TCompare>
263  ByArch<TCompare> byArch( const Arch & arch_r )
264  { return byArch( arch_r, TCompare() ); }
265 
266 
268 
270  //
271  // Some PoolItem attributes
272  //
274 
276  struct ByInstalled
277  {
278  bool operator()( const PoolItem & p ) const
279  {
280  return p.status().isInstalled();
281  }
282  };
283 
286  {
287  bool operator()( const PoolItem & p ) const
288  {
289  return p.status().isUninstalled();
290  }
291  };
292 
294  struct ByTransact
295  {
296  bool operator()( const PoolItem & p ) const
297  {
298  return p.status().transacts();
299  }
300  };
301 
303  struct ByLock
304  {
305  bool operator()( const PoolItem & p ) const
306  {
307  return p.status().isLocked();
308  }
309  };
310 
312  struct ByKeep
313  {
314  bool operator()( const PoolItem & p ) const
315  {
316  return p.status().isKept();
317  }
318  };
319 
322  {
323  bool operator()( const PoolItem & p ) const
324  {
325  return p.status().isRecommended();
326  }
327  };
328 
330  struct BySuggested
331  {
332  bool operator()( const PoolItem & p ) const
333  {
334  return p.status().isSuggested();
335  }
336  };
337 
339  } // namespace resfilter
343 } // namespace zypp
345 #endif // ZYPP_RESFILTERS_H
Select PoolItem by lock.
Definition: ResFilters.h:303
bool operator()(const PoolItem &p) const
Definition: ResFilters.h:305
bool transacts() const
Definition: ResStatus.h:282
PoolItem which is suggested.
Definition: ResFilters.h:330
bool operator()(const ResObject::constPtr &p) const
Definition: ResFilters.h:247
Architecture.
Definition: Arch.h:36
bool operator()(const PoolItem &p) const
Definition: ResFilters.h:287
Select ResObject by Edition using TCompare functor.
Definition: ResFilters.h:200
bool isInstalled() const
Definition: ResStatus.h:246
ResStatus & status() const
Returns the current status.
Definition: PoolItem.cc:212
bool operator()(const PoolItem &p) const
Definition: ResFilters.h:323
Definition: Arch.h:363
ByArch(const Arch &arch_r, TCompare cmp_r)
Definition: ResFilters.h:242
Edition represents [epoch:]version[-release]
Definition: Edition.h:60
bool isRecommended() const
Definition: ResStatus.h:188
ResTraits.
Definition: ResTraits.h:79
Select ResObject by name.
Definition: ResFilters.h:151
ByRepository(Repository repository_r)
Definition: ResFilters.h:171
filter::ByKind byKind()
Definition: ResFilters.h:147
ByEdition(Edition edition_r, TCompare cmp_r)
Definition: ResFilters.h:202
Select PoolItem by installed.
Definition: ResFilters.h:276
ByEdition< TCompare > byEdition(const Edition &edition_r, TCompare cmp_r)
Definition: ResFilters.h:218
PoolItem which is recommended.
Definition: ResFilters.h:321
Select PoolItem by keep.
Definition: ResFilters.h:312
ByArch< TCompare > byArch(const Arch &arch_r, TCompare cmp_r)
Definition: ResFilters.h:258
Select ResObject by repository or repository alias.
Definition: ResFilters.h:169
TraitsType::constPtrType constPtr
Definition: ResObject.h:43
bool operator()(const PoolItem &p) const
Definition: ResFilters.h:278
bool operator()(const ResObject::constPtr &p) const
Definition: ResFilters.h:207
Select PoolItem by transact.
Definition: ResFilters.h:294
ByName(std::string name_r)
Definition: ResFilters.h:156
bool operator()(const PoolItem &p) const
Definition: ResFilters.h:314
Select PoolItem by uninstalled.
Definition: ResFilters.h:285
bool operator()(const ResObject::constPtr &p) const
Definition: ResFilters.h:160
Select ResObject by Arch using TCompare functor.
Definition: ResFilters.h:240
bool isSuggested() const
Definition: ResStatus.h:191
bool isLocked() const
Definition: ResStatus.h:270
bool isKept() const
Definition: ResStatus.h:279
bool isUninstalled() const
Definition: ResStatus.h:249
Combining sat::Solvable and ResStatus.
Definition: PoolItem.h:50
bool operator()(const PoolItem &p) const
Definition: ResFilters.h:332
bool operator()(const ResObject::constPtr &p) const
Definition: ResFilters.h:179
Easy-to use interface to the ZYPP dependency resolver.
Definition: Application.cc:19
Filter solvables according to their kind.
Definition: Filter.h:106
bool operator()(const PoolItem &p) const
Definition: ResFilters.h:296
ByRepository(std::string alias_r)
Definition: ResFilters.h:175