diff options
author | Noel Grandin <noel@peralex.com> | 2014-12-28 14:22:51 +0200 |
---|---|---|
committer | Noel Grandin <noel@peralex.com> | 2015-01-06 10:59:42 +0200 |
commit | c29657e0d6bb707345584ac7a7f5ae5016f37297 (patch) | |
tree | 89cd11551729836a979570744da3c81090e330dd /include/o3tl | |
parent | ec5bf66d366cd42774a87465e1187271f48a4ab1 (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.hxx | 39 |
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); |