summaryrefslogtreecommitdiff
path: root/include/o3tl/typed_flags_set.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'include/o3tl/typed_flags_set.hxx')
-rw-r--r--include/o3tl/typed_flags_set.hxx39
1 files changed, 39 insertions, 0 deletions
diff --git a/include/o3tl/typed_flags_set.hxx b/include/o3tl/typed_flags_set.hxx
index 4622d41e19f8..501a09a0cc68 100644
--- a/include/o3tl/typed_flags_set.hxx
+++ b/include/o3tl/typed_flags_set.hxx
@@ -101,6 +101,45 @@ inline typename o3tl::typed_flags<E>::Wrap operator ~(
}
template<typename E>
+inline typename o3tl::typed_flags<E>::Wrap operator ^(E lhs, E rhs) {
+ assert(static_cast<O3TL_STD_UNDERLYING_TYPE_E>(lhs) >= 0);
+ assert(static_cast<O3TL_STD_UNDERLYING_TYPE_E>(rhs) >= 0);
+ return static_cast<typename o3tl::typed_flags<E>::Wrap>(
+ static_cast<O3TL_STD_UNDERLYING_TYPE_E>(lhs)
+ ^ static_cast<O3TL_STD_UNDERLYING_TYPE_E>(rhs));
+}
+
+template<typename E>
+inline typename o3tl::typed_flags<E>::Wrap operator ^(
+ E lhs, typename o3tl::typed_flags<E>::Wrap rhs)
+{
+ assert(static_cast<O3TL_STD_UNDERLYING_TYPE_E>(lhs) >= 0);
+ return static_cast<typename o3tl::typed_flags<E>::Wrap>(
+ static_cast<O3TL_STD_UNDERLYING_TYPE_E>(lhs)
+ ^ static_cast<O3TL_STD_UNDERLYING_TYPE_E>(rhs));
+}
+
+template<typename E>
+inline typename o3tl::typed_flags<E>::Wrap operator ^(
+ typename o3tl::typed_flags<E>::Wrap lhs, E rhs)
+{
+ assert(static_cast<O3TL_STD_UNDERLYING_TYPE_E>(rhs) >= 0);
+ return static_cast<typename o3tl::typed_flags<E>::Wrap>(
+ static_cast<O3TL_STD_UNDERLYING_TYPE_E>(lhs)
+ ^ static_cast<O3TL_STD_UNDERLYING_TYPE_E>(rhs));
+}
+
+template<typename E>
+inline typename o3tl::typed_flags<E>::Wrap operator ^(
+ typename o3tl::typed_flags<E>::Wrap lhs,
+ typename o3tl::typed_flags<E>::Wrap rhs)
+{
+ return static_cast<typename o3tl::typed_flags<E>::Wrap>(
+ static_cast<O3TL_STD_UNDERLYING_TYPE_E>(lhs)
+ ^ static_cast<O3TL_STD_UNDERLYING_TYPE_E>(rhs));
+}
+
+template<typename E>
inline typename o3tl::typed_flags<E>::Wrap operator &(E lhs, E rhs) {
assert(static_cast<O3TL_STD_UNDERLYING_TYPE_E>(lhs) >= 0);
assert(static_cast<O3TL_STD_UNDERLYING_TYPE_E>(rhs) >= 0);