12 #ifndef ZYPP_BASE_FLAGS_H
13 #define ZYPP_BASE_FLAGS_H
57 template<
typename _Enum>
62 typedef typename std::underlying_type<Enum>::type
Integral;
110 template<
typename Enum>
111 inline std::ostream & operator<<( std::ostream & str, const Flags<Enum> & obj )
115 #define ZYPP_DECLARE_FLAGS(Name,Enum) typedef zypp::base::Flags<Enum> Name
118 #define ZYPP_DECLARE_OPERATORS_FOR_FLAGS(Name) \
119 inline constexpr Name operator&( Name::Enum lhs, Name::Enum rhs ) { return Name( lhs ) & rhs; } \
120 inline constexpr Name operator&( Name::Enum lhs, Name rhs ) { return rhs & lhs; } \
121 inline constexpr Name operator|( Name::Enum lhs, Name::Enum rhs ) { return Name( lhs ) | rhs; } \
122 inline constexpr Name operator|( Name::Enum lhs, Name rhs ) { return rhs | lhs; } \
123 inline constexpr Name operator^( Name::Enum lhs, Name::Enum rhs ) { return Name( lhs ) ^ rhs; } \
124 inline constexpr Name operator^( Name::Enum lhs, Name rhs ) { return rhs ^ lhs; } \
125 inline constexpr Name operator~( Name::Enum lhs ) { return ~Name( lhs ); }
128 #define ZYPP_DECLARE_FLAGS_AND_OPERATORS(Name,Enum) \
129 ZYPP_DECLARE_FLAGS(Name,Enum); \
130 ZYPP_DECLARE_OPERATORS_FOR_FLAGS(Name)
138 #endif // ZYPP_BASE_FLAGS_H
Flags & operator^=(Enum rhs)
constexpr Flags operator&(Enum rhs) const
constexpr Flags operator&(Flags rhs) const
constexpr Flags(Enum flag_r)
Flags & operator|=(Flags rhs)
bool testFlag(Flags flag_r) const
constexpr Flags(Integral flag_r)
constexpr Flags operator^(Enum rhs) const
Flags & operator&=(Flags rhs)
A type-safe way of storing OR-combinations of enum values (like QTs QFlags).
Flags & operator|=(Enum rhs)
constexpr Flags operator^(Flags rhs) const
constexpr Flags operator~() const
bool testFlag(Enum flag_r) const
_Enum Enum
The underlying enum type.
constexpr Flags operator|(Enum rhs) const
Flags & operator^=(Flags rhs)
constexpr Flags operator|(Flags rhs) const
Flags & setFlag(Flags flag_r, bool newval_r)
std::underlying_type< Enum >::type Integral
The underlying integral type.
Flags & setFlag(Enum flag_r, bool newval_r)
Flags & setFlag(Enum flag_r)
Flags & setFlag(Flags flag_r)
std::string hexstring(char n, int w=4)
Flags & unsetFlag(Flags flag_r)
Flags & operator&=(Enum rhs)
Flags & unsetFlag(Enum flag_r)