Add util::flag_set bitwise operators

This commit is contained in:
Nikita Lisitsa 2022-05-21 19:51:56 +03:00
parent ddd67b79f3
commit 8414af776a

View file

@ -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};
}
}