libzypp  13.10.6
CapMatch.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_CAPMATCH_H
13 #define ZYPP_CAPMATCH_H
14 
15 #include <iosfwd>
16 
18 namespace zypp
19 {
20 
22  //
23  // CLASS NAME : CapMatch
24  //
37  class CapMatch
38  {
40 
41  public:
42 
44  : _result( IRRELEVANT )
45  {}
46 
47  CapMatch( bool val_r )
48  : _result( val_r ? MATCH : NOMATCH )
49  {}
50 
51  static const CapMatch yes;
52  static const CapMatch no;
53  static const CapMatch irrelevant;
54 
55  friend bool operator==( const CapMatch & lhs, const CapMatch & rhs )
56  { return lhs._result == rhs._result; }
57 
58  friend bool operator!=( const CapMatch & lhs, const CapMatch & rhs )
59  { return lhs._result != rhs._result; }
60 
61  friend CapMatch operator!( const CapMatch & lhs )
62  {
63  if ( lhs._result == CapMatch::IRRELEVANT )
64  return lhs;
65  return !(lhs._result == CapMatch::MATCH);
66  }
67 
68  friend CapMatch operator&&( const CapMatch & lhs, const CapMatch & rhs )
69  {
70  if ( lhs._result == CapMatch::IRRELEVANT )
71  return rhs;
72  if ( rhs._result == CapMatch::IRRELEVANT )
73  return lhs;
74  return (lhs._result == CapMatch::MATCH)
75  && (rhs._result == CapMatch::MATCH);
76  }
77 
78  friend CapMatch operator||( const CapMatch & lhs, const CapMatch & rhs )
79  {
80  if ( lhs._result == CapMatch::IRRELEVANT )
81  return rhs;
82  if ( rhs._result == CapMatch::IRRELEVANT )
83  return lhs;
84  return (lhs._result == CapMatch::MATCH)
85  || (rhs._result == CapMatch::MATCH);
86  }
87 
88  friend std::ostream & operator<<( std::ostream & str, const CapMatch & obj );
89 
90  private:
92  };
94 
96  std::ostream & operator<<( std::ostream & str, const CapMatch & obj );
97 
99 } // namespace zypp
101 #endif // ZYPP_CAPMATCH_H
Result _result
Definition: CapMatch.h:91
static const CapMatch no
Definition: CapMatch.h:52
friend CapMatch operator||(const CapMatch &lhs, const CapMatch &rhs)
Definition: CapMatch.h:78
static const CapMatch irrelevant
Definition: CapMatch.h:53
CapMatch(bool val_r)
Definition: CapMatch.h:47
std::ostream & operator<<(std::ostream &str, const Exception &obj)
Definition: Exception.cc:120
friend bool operator==(const CapMatch &lhs, const CapMatch &rhs)
Definition: CapMatch.h:55
Tri state Capability match result.
Definition: CapMatch.h:37
friend CapMatch operator!(const CapMatch &lhs)
Definition: CapMatch.h:61
friend std::ostream & operator<<(std::ostream &str, const CapMatch &obj)
Definition: CapMatch.cc:32
static const CapMatch yes
Definition: CapMatch.h:51
friend bool operator!=(const CapMatch &lhs, const CapMatch &rhs)
Definition: CapMatch.h:58
friend CapMatch operator&&(const CapMatch &lhs, const CapMatch &rhs)
Definition: CapMatch.h:68