Add util::flag_set bitwise operators
This commit is contained in:
parent
ddd67b79f3
commit
8414af776a
1 changed files with 42 additions and 0 deletions
|
|
@ -52,6 +52,48 @@ namespace psemek::util
|
|||
{
|
||||
value = {};
|
||||
}
|
||||
|
||||
flag_set & operator &= (flag_set const & other)
|
||||
{
|
||||
value &= other.value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
flag_set & operator |= (flag_set const & other)
|
||||
{
|
||||
value |= other.value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
flag_set & operator ^= (flag_set const & other)
|
||||
{
|
||||
value ^= other.value;
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Flag, typename Repr>
|
||||
flag_set<Flag, Repr> operator ~ (flag_set<Flag, Repr> const & set)
|
||||
{
|
||||
return {~set.value};
|
||||
}
|
||||
|
||||
template <typename Flag, typename Repr>
|
||||
flag_set<Flag, Repr> operator | (flag_set<Flag, Repr> const & set1, flag_set<Flag, Repr> const & set2)
|
||||
{
|
||||
return {set1.value | set2.value};
|
||||
}
|
||||
|
||||
template <typename Flag, typename Repr>
|
||||
flag_set<Flag, Repr> operator & (flag_set<Flag, Repr> const & set1, flag_set<Flag, Repr> const & set2)
|
||||
{
|
||||
return {set1.value & set2.value};
|
||||
}
|
||||
|
||||
template <typename Flag, typename Repr>
|
||||
flag_set<Flag, Repr> operator ^ (flag_set<Flag, Repr> const & set1, flag_set<Flag, Repr> const & set2)
|
||||
{
|
||||
return {set1.value ^ set2.value};
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue