libzypp  17.31.31
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 
20 namespace zypp
21 {
22 
40  typedef boost::logic::tribool 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
65 namespace 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
std::string asString(const Patch::Category &obj)
Definition: Patch.cc:122
Boost libraries.
bool tri2bool(const TriBool &val_r, bool default_r)
Convert TriBool to bool returning default_r if indeterminate.
Definition: TriBool.h:59
boost::logic::tribool TriBool
3-state boolean logic (true, false and indeterminate).
Definition: String.h:30
std::ostream & operator<<(std::ostream &str, const zypp::sat::detail::CDataiterator *obj)
Definition: LookupAttr.cc:807
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:1