libzypp: zypp-core/TriBool.h Source File

libzypp 17.38.6

TriBool.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
12#ifndef ZYPP_TRIBOOL_H
13#define ZYPP_TRIBOOL_H
14
15#include <iosfwd>
16#include <string>
17#include <boost/logic/tribool.hpp>
18
20namespace zypp
21{
22
40 using TriBool = boost::logic::tribool;
41 using boost::logic::tribool;
42 using boost::logic::indeterminate;
43
44 inline std::string asString( const TriBool & val_r, const std::string & istr_r = std::string(),
45 const std::string & tstr_r = std::string(),
46 const std::string & fstr_r = std::string() )
47 {
48 std::string ret;
49 if (indeterminate(val_r))
50 ret = ( istr_r.empty() ? "indeterminate" : istr_r );
51 else if (val_r)
52 ret = ( tstr_r.empty() ? "true" : tstr_r );
53 else
54 ret = ( fstr_r.empty() ? "false" : fstr_r );
55 return ret;
56 }
57
59 inline bool tri2bool( const TriBool & val_r, bool default_r )
60 { return indeterminate(val_r) ? default_r : bool(val_r); }
61
63} // namespace zypp
65namespace boost
66{
67 namespace logic
68 {
70 inline std::ostream & operator<<(std::ostream & s, const tribool & obj)
71 { return s << zypp::asString( obj ); }
72
74 inline bool sameTriboolState( tribool lhs, tribool rhs )
75 { return( ( indeterminate(lhs) && indeterminate(rhs) ) || ( bool )( lhs == rhs ) ); }
76 }
77}
78#endif // ZYPP_TRIBOOL_H
bool
zypp::TriBool
boost::logic::tribool TriBool
3-state boolean logic (true, false and indeterminate).
Definition String.h:31
boost::logic
Definition String.h:30
boost::logic::operator<<
std::ostream & operator<<(std::ostream &s, const tribool &obj)
relates: TriBool stream output
Definition TriBool.h:70
boost::logic::sameTriboolState
bool sameTriboolState(tribool lhs, tribool rhs)
relates: TriBool whether 2 tribool have the same state (this is NOT ==)
Definition TriBool.h:74
boost
Boost libraries.
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition CodePitfalls.doc:2
zypp::tri2bool
bool tri2bool(const TriBool &val_r, bool default_r)
Convert TriBool to bool returning default_r if indeterminate.
Definition TriBool.h:59
zypp::asString
std::string asString(const Patch::Category &obj)
relates: Patch::Category string representation.
Definition Patch.cc:122