summaryrefslogtreecommitdiff
path: root/include/o3tl
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2014-12-28 14:22:51 +0200
committerNoel Grandin <noel@peralex.com>2015-01-06 10:59:42 +0200
commitc29657e0d6bb707345584ac7a7f5ae5016f37297 (patch)
tree89cd11551729836a979570744da3c81090e330dd /include/o3tl
parentec5bf66d366cd42774a87465e1187271f48a4ab1 (diff)
fdo#84938: convert EXPORT_ #defines to 'enum class'
Change-Id: I2ed239fa073b5fa8fb56c1af9d4b0bac89acfacf
Diffstat (limited to 'include/o3tl')
-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);