libzypp  13.10.6
Rel.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_REL_H
13 #define ZYPP_REL_H
14 
15 #include <iosfwd>
16 #include <string>
17 
19 namespace zypp
20 {
21 
23  //
24  // CLASS NAME : Rel
25  //
43  struct Rel
44  {
50  static const Rel EQ;
51  static const Rel NE;
52  static const Rel LT;
53  static const Rel LE;
54  static const Rel GT;
55  static const Rel GE;
56  static const Rel ANY;
57  static const Rel NONE;
59 
66  NONE_e = 0U,
67  GT_e = 1U,
68  EQ_e = 2U,
69  LT_e = 4U,
74  };
75 
77  Rel()
78  : _op( ANY_e )
79  {}
80 
91  explicit
92  Rel( const std::string & strval_r );
93 
97  Rel( const std::string & strval_r, const Rel & default_r );
98 
102  bool parseFrom( const std::string & strval_r );
103 
105  explicit
106  Rel( unsigned bits_r )
107  : _op( for_use_in_switch(bits_r & ANY_e) )
108  {}
109 
111  static bool isRel( unsigned bits_r )
112  { return (bits_r & ANY_e) == bits_r; }
113 
117  const std::string & asString() const;
119  const char * c_str() const
120  { return asString().c_str(); }
121 
142  { return _op; }
143 
145  unsigned bits() const
146  { return _op; }
147 
148  private:
151  : _op( op_r )
152  {}
155  };
157 
159  inline std::ostream & operator<<( std::ostream & str, const Rel & obj )
160  { return str << obj.asString(); }
161 
163 
165  inline bool operator==( const Rel & lhs, const Rel & rhs )
166  { return lhs.inSwitch() == rhs.inSwitch(); }
167 
169  inline bool operator!=( const Rel & lhs, const Rel & rhs )
170  { return ! ( lhs == rhs ); }
171 
173 } // namespace zypp
175 #endif // ZYPP_REL_H
static const Rel NE
Definition: Rel.h:51
static const Rel LT
Definition: Rel.h:52
static const Rel GT
Definition: Rel.h:54
Rel(for_use_in_switch op_r)
Ctor to initialize the relational operator contants.
Definition: Rel.h:150
Relational operators.
Definition: Rel.h:43
unsigned bits() const
Enumarator values suitable for libsolv.
Definition: Rel.h:145
static const Rel EQ
Definition: Rel.h:50
const char * c_str() const
Definition: Rel.h:119
static const Rel LE
Definition: Rel.h:53
static const Rel ANY
Definition: Rel.h:56
bool operator==(const Rel &lhs, const Rel &rhs)
Definition: Rel.h:165
static bool isRel(unsigned bits_r)
Test whether bits_r is a valid Rel (no extra bits set).
Definition: Rel.h:111
static const Rel GE
Definition: Rel.h:55
const std::string & asString() const
String representation of relational operator.
Definition: Rel.cc:105
for_use_in_switch _op
The operator.
Definition: Rel.h:154
Rel()
DefaultCtor ANY.
Definition: Rel.h:77
for_use_in_switch
Enumarators provided only for use inSwitch statement.
Definition: Rel.h:65
std::ostream & operator<<(std::ostream &str, const Rel &obj)
Definition: Rel.h:159
for_use_in_switch inSwitch() const
Enumarator provided for use in switch statement.
Definition: Rel.h:141
Rel(unsigned bits_r)
Ctor from bits.
Definition: Rel.h:106
bool operator!=(const Rel &lhs, const Rel &rhs)
Definition: Rel.h:169
bool parseFrom(const std::string &strval_r)
Assign from string IFF it contains a legal value.
Definition: Rel.cc:89
static const Rel NONE
Definition: Rel.h:57