libzypp 17.31.23
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
19namespace 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
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
String related utilities and Regular expression matching.
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2
Relational operators.
Definition: Rel.h:44
for_use_in_switch inSwitch() const
Enumarator provided for use in switch statement.
Definition: Rel.h:141
static const Rel LT
Definition: Rel.h:52
bool parseFrom(const std::string &strval_r)
Assign from string IFF it contains a legal value.
Definition: Rel.cc:89
const char * c_str() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: Rel.h:119
static const Rel GT
Definition: Rel.h:54
Rel()
DefaultCtor ANY.
Definition: Rel.h:77
Rel(for_use_in_switch op_r)
Ctor to initialize the relational operator contants.
Definition: Rel.h:150
static const Rel LE
Definition: Rel.h:53
Rel(unsigned bits_r)
Ctor from bits.
Definition: Rel.h:106
static const Rel GE
Definition: Rel.h:55
static const Rel NONE
Definition: Rel.h:57
std::ostream & operator<<(std::ostream &str, const Rel &obj)
Stream output.
Definition: Rel.h:159
bool operator!=(const Rel &lhs, const Rel &rhs)
Definition: Rel.h:169
static const Rel NE
Definition: Rel.h:51
static const Rel ANY
Definition: Rel.h:56
bool operator==(const Rel &lhs, const Rel &rhs)
Definition: Rel.h:165
static const Rel EQ
Definition: Rel.h:50
for_use_in_switch
Enumarators provided only for use inSwitch statement.
Definition: Rel.h:65
@ ANY_e
Definition: Rel.h:73
@ LT_e
Definition: Rel.h:69
@ GT_e
Definition: Rel.h:67
@ NE_e
Definition: Rel.h:72
@ LE_e
Definition: Rel.h:71
@ NONE_e
Definition: Rel.h:66
@ EQ_e
Definition: Rel.h:68
@ GE_e
Definition: Rel.h:70
unsigned bits() const
Enumarator values suitable for libsolv.
Definition: Rel.h:145
for_use_in_switch _op
The operator.
Definition: Rel.h:154
static bool isRel(unsigned bits_r)
Test whether bits_r is a valid Rel (no extra bits set).
Definition: Rel.h:111
const std::string & asString() const
String representation of relational operator.
Definition: Rel.cc:105