Imported Upstream version 16.3.2
[platform/upstream/libzypp.git] / zypp / ui / SelFilters.h
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/ui/SelFilters.h
10  *
11 */
12 #ifndef ZYPP_UI_SELFILTERS_H
13 #define ZYPP_UI_SELFILTERS_H
14
15 #include <string>
16
17 #include "zypp/base/Functional.h"
18 #include "zypp/ui/Selectable.h"
19
20 ///////////////////////////////////////////////////////////////////
21 namespace zypp
22 { /////////////////////////////////////////////////////////////////
23   ///////////////////////////////////////////////////////////////////
24   namespace ui
25   { /////////////////////////////////////////////////////////////////
26     ///////////////////////////////////////////////////////////////////
27     namespace selfilter
28     { /////////////////////////////////////////////////////////////////
29
30       typedef std::unary_function<Selectable::constPtr,bool> SelectableFilterFunctor;
31
32       /** */
33       struct ByKind : public SelectableFilterFunctor
34       {
35         ByKind( const ResKind & kind_r )
36         : _kind( kind_r )
37         {}
38
39         bool operator()( const Selectable::constPtr & obj ) const
40         {
41           return obj && obj->kind() == _kind;
42         }
43
44         ResKind _kind;
45       };
46
47       /** */
48       struct ByName : public SelectableFilterFunctor
49       {
50         ByName( const std::string & name_r )
51         : _name( name_r )
52         {}
53
54         bool operator()( const ui::Selectable::constPtr & obj ) const
55         { return obj && obj->name() == _name; }
56
57         std::string _name;
58       };
59
60       /** */
61       struct ByHasInstalledObj : public SelectableFilterFunctor
62       {
63         bool operator()( const ui::Selectable::constPtr & obj ) const
64         { return obj && !obj->installedEmpty(); }
65       };
66
67       /** */
68       struct ByHasCandidateObj : public SelectableFilterFunctor
69       {
70         bool operator()( const ui::Selectable::constPtr & obj ) const
71         { return obj && obj->hasCandidateObj(); }
72       };
73
74       struct ByStatus : public SelectableFilterFunctor
75       /** */
76       {
77         ByStatus( Status status_r )
78         : _status( status_r )
79         {}
80
81         bool operator()( const ui::Selectable::constPtr & obj ) const
82         { return obj && obj->status() == _status; }
83
84         Status _status;
85       };
86
87       /////////////////////////////////////////////////////////////////
88     } // namespace selfilter
89     ///////////////////////////////////////////////////////////////////
90     /////////////////////////////////////////////////////////////////
91   } // namespace ui
92   ///////////////////////////////////////////////////////////////////
93   /////////////////////////////////////////////////////////////////
94 } // namespace zypp
95 ///////////////////////////////////////////////////////////////////
96 #endif // ZYPP_UI_SELFILTERS_H