libzypp  15.28.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 
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 } // namespace zypp
61 namespace boost
62 {
63  namespace logic
64  {
66  inline std::ostream & operator<<(std::ostream & s, const tribool & obj)
67  { return s << zypp::asString( obj ); }
68 
70  inline bool sameTriboolState( tribool lhs, tribool rhs )
71  { return( ( indeterminate(lhs) && indeterminate(rhs) ) || ( lhs == rhs ) ); }
72  }
73 }
74 #endif // ZYPP_TRIBOOL_H
std::string asString(const Patch::Category &obj)
Definition: Patch.cc:117
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