From 8414af776a221764aeff65c2d9876dcaabdf80e8 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sat, 21 May 2022 19:51:56 +0300 Subject: [PATCH] Add util::flag_set bitwise operators --- libs/util/include/psemek/util/flag_set.hpp | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/libs/util/include/psemek/util/flag_set.hpp b/libs/util/include/psemek/util/flag_set.hpp index 36b45e78..2f93bfeb 100644 --- a/libs/util/include/psemek/util/flag_set.hpp +++ b/libs/util/include/psemek/util/flag_set.hpp @@ -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 + flag_set operator ~ (flag_set const & set) + { + return {~set.value}; + } + + template + flag_set operator | (flag_set const & set1, flag_set const & set2) + { + return {set1.value | set2.value}; + } + + template + flag_set operator & (flag_set const & set1, flag_set const & set2) + { + return {set1.value & set2.value}; + } + + template + flag_set operator ^ (flag_set const & set1, flag_set const & set2) + { + return {set1.value ^ set2.value}; + } + }