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 = {};
|
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