#include <Rel.h>
Public Types | |
enum | for_use_in_switch { NONE_e = 0U, GT_e = 1U, EQ_e = 2U, LT_e = 4U, GE_e = GT_e|EQ_e, LE_e = LT_e|EQ_e, NE_e = GT_e|LT_e, ANY_e = GT_e|EQ_e|LT_e } |
Enumarators provided only for use inSwitch statement. More... | |
Public Member Functions | |
Rel () | |
DefaultCtor ANY. | |
Rel (const std::string &strval_r) | |
Ctor from string. | |
Rel (const std::string &strval_r, const Rel &default_r) | |
Ctor from string (non-throwing). | |
bool | parseFrom (const std::string &strval_r) |
Assign from string IFF it contains a legal value. | |
Rel (unsigned bits_r) | |
Ctor from bits. | |
const std::string & | asString () const |
String representation of relational operator. | |
const char * | c_str () const |
for_use_in_switch | inSwitch () const |
Enumarator provided for use in switch statement. | |
unsigned | bits () const |
Enumarator values suitable for libsatsolver. | |
Static Public Member Functions | |
static bool | isRel (unsigned bits_r) |
Test whether bits_r is a valid Rel (no extra bits set). | |
Static Public Attributes | |
Relational operators | |
These are the real relational operator contants to use.
Don't mind that it's not an enum. See also: zypp::Rel::inSwitch | |
static const Rel | EQ |
static const Rel | NE |
static const Rel | LT |
static const Rel | LE |
static const Rel | GT |
static const Rel | GE |
static const Rel | ANY |
static const Rel | NONE |
Private Member Functions | |
Rel (for_use_in_switch op_r) | |
Ctor to initialize the relational operator contants. | |
Private Attributes | |
for_use_in_switch | _op |
The operator. | |
Related Functions | |
(Note that these are not member functions.) | |
std::ostream & | operator<< (std::ostream &str, const Rel &obj) |
bool | operator== (const Rel &lhs, const Rel &rhs) |
bool | operator!= (const Rel &lhs, const Rel &rhs) |
Yes, it could as well be simply an enum
.
Yes, you can use the relational operators as if it was an enum
.
Except for use in a switch
statement; see inSwitch for this.
But we want to construct them from a string representation, as well as providing one. And this way they are wrapped into a namespace, which is a good idea anyway.
ANY and NONE are somewhat special. ANY is the operator created by the default ctor, and it should always resolve to true
. This may be handy in queries when you're looking for a Resolvable in ANY
Edition if no operator was specified. While NONE should always resolve to false
.
Definition at line 43 of file Rel.h.
zypp::Rel::Rel | ( | const std::string & | strval_r | ) | [explicit] |
Ctor from string.
Legal values for strval_r are: "==", "!=", "<", "<=", ">", ">=",
as well as "EQ", "NE", "LT", "LE", "GT", "GE", "ANY", "NONE"
and "" (empty string resolves to ANY).
Lower case names are accepted as well.
PARSE | if strval_r is not legal. |
zypp::Rel::Rel | ( | const std::string & | strval_r, | |
const Rel & | default_r | |||
) |
zypp::Rel::Rel | ( | unsigned | bits_r | ) | [inline, explicit] |
zypp::Rel::Rel | ( | for_use_in_switch | op_r | ) | [inline, private] |
bool zypp::Rel::parseFrom | ( | const std::string & | strval_r | ) |
static bool zypp::Rel::isRel | ( | unsigned | bits_r | ) | [inline, static] |
Test whether bits_r is a valid Rel (no extra bits set).
Definition at line 111 of file Rel.h.
References ANY_e.
Referenced by zypp::CapDetail::_init().
const std::string & zypp::Rel::asString | ( | ) | const |
const char* zypp::Rel::c_str | ( | ) | const [inline] |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 119 of file Rel.h.
References asString().
for_use_in_switch zypp::Rel::inSwitch | ( | ) | const [inline] |
Enumarator provided for use in switch
statement.
The sole reason for providing enum for_use_in_switch is, that we may want to use the relational operators in a switch
statement. Tht's the only case where you should have to use the enumarator.
Rel op; switch ( op.inSwitch() ) { case Rel::EQ_e: ... break; case Rel::NE_e: ... // No default! Let compiler warn if case is missing }
Definition at line 141 of file Rel.h.
References _op.
Referenced by zypp::PoolQuery::addDependency(), zypp::compareByRel(), and operator==().
unsigned zypp::Rel::bits | ( | ) | const [inline] |
std::ostream & operator<< | ( | std::ostream & | str, | |
const Rel & | obj | |||
) | [related] |
const Rel zypp::Rel::EQ [static] |
Definition at line 50 of file Rel.h.
Referenced by zypp::PoolQuery::addDependency(), zypp::Patch::contents(), zypp::CompareByEQ< _Tp, _Compare >::operator()(), zypp::operator==(), zypp::range_detail::overlaps(), and zypp::target::rpm::RpmHeader::PkgRelList_val().
const Rel zypp::Rel::NE [static] |
Definition at line 51 of file Rel.h.
Referenced by zypp::CompareByNE< _Tp, _Compare >::operator()(), and zypp::range_detail::overlaps().
const Rel zypp::Rel::LT [static] |
Definition at line 52 of file Rel.h.
Referenced by zypp::CompareByLT< _Tp, _Compare >::operator()(), zypp::range_detail::overlaps(), and zypp::target::rpm::RpmHeader::PkgRelList_val().
const Rel zypp::Rel::LE [static] |
Definition at line 53 of file Rel.h.
Referenced by zypp::CompareByLE< _Tp, _Compare >::operator()(), zypp::range_detail::overlaps(), and zypp::target::rpm::RpmHeader::PkgRelList_val().
const Rel zypp::Rel::GT [static] |
Definition at line 54 of file Rel.h.
Referenced by zypp::Patch::contents(), zypp::CompareByGT< _Tp, _Compare >::operator()(), zypp::range_detail::overlaps(), and zypp::target::rpm::RpmHeader::PkgRelList_val().
const Rel zypp::Rel::GE [static] |
Definition at line 55 of file Rel.h.
Referenced by zypp::CompareByGE< _Tp, _Compare >::operator()(), zypp::range_detail::overlaps(), and zypp::target::rpm::RpmHeader::PkgRelList_val().
const Rel zypp::Rel::ANY [static] |
Definition at line 56 of file Rel.h.
Referenced by zypp::PoolQuery::addDependency(), zypp::detail::PoolQueryMatcher::isAMatch(), zypp::CapDetail::op(), zypp::CompareByANY< _Tp, _Compare >::operator()(), zypp::operator==(), zypp::range_detail::overlaps(), and zypp::target::rpm::RpmHeader::PkgRelList_val().
const Rel zypp::Rel::NONE [static] |
Definition at line 57 of file Rel.h.
Referenced by zypp::CompareByNONE< _Tp, _Compare >::operator()(), zypp::operator==(), and zypp::range_detail::overlaps().
for_use_in_switch zypp::Rel::_op [private] |
The operator.
Definition at line 154 of file Rel.h.
Referenced by asString(), bits(), inSwitch(), parseFrom(), and zypp::detail::PoolQueryMatcher::PoolQueryMatcher().