#define ZYPP_TRIBOOL_H
#include <iosfwd>
+#include <string>
#include <boost/logic/tribool.hpp>
///////////////////////////////////////////////////////////////////
using boost::logic::tribool;
using boost::logic::indeterminate;
+ inline std::string asString( const TriBool & val_r, const std::string & istr_r = std::string(),
+ const std::string & tstr_r = std::string(),
+ const std::string & fstr_r = std::string() )
+ {
+ std::string ret;
+ if (indeterminate(val_r))
+ ret = ( istr_r.empty() ? "indeterminate" : istr_r );
+ else if (val_r)
+ ret = ( tstr_r.empty() ? "true" : tstr_r );
+ else
+ ret = ( fstr_r.empty() ? "false" : fstr_r );
+ return ret;
+ }
+
/////////////////////////////////////////////////////////////////
} // namespace zypp
///////////////////////////////////////////////////////////////////
{
/** \relates TriBool stream output */
inline std::ostream & operator<<(std::ostream & s, const tribool & obj)
- {
- if (indeterminate(obj))
- s << "indeterminate";
- else if (obj)
- s << "true";
- else
- s << "false";
- return s;
- }
+ { return s << zypp::asString( obj ); }
+
+ /** \relates TriBool whether 2 tribool have the same state (this is NOT ==) */
+ inline bool sameTriboolState( tribool lhs, tribool rhs )
+ { return( ( indeterminate(lhs) && indeterminate(rhs) ) || ( bool )( lhs == rhs ) ); }
}
}
#endif // ZYPP_TRIBOOL_H