From a87508008dfa1604baf2d4e39bf44704c00f261c Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Sun, 3 Apr 2022 16:34:10 -0700 Subject: skia WIP --- src/deps/skia/include/private/SkBitmaskEnum.h | 59 +++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/deps/skia/include/private/SkBitmaskEnum.h (limited to 'src/deps/skia/include/private/SkBitmaskEnum.h') diff --git a/src/deps/skia/include/private/SkBitmaskEnum.h b/src/deps/skia/include/private/SkBitmaskEnum.h new file mode 100644 index 000000000..b25045359 --- /dev/null +++ b/src/deps/skia/include/private/SkBitmaskEnum.h @@ -0,0 +1,59 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkEnumOperators_DEFINED +#define SkEnumOperators_DEFINED + +#include + +namespace sknonstd { +template struct is_bitmask_enum : std::false_type {}; + +template +std::enable_if_t::value, bool> constexpr Any(E e) { + return static_cast>(e) != 0; +} +} // namespace sknonstd + +template +std::enable_if_t::value, E> constexpr operator|(E l, E r) { + using U = std::underlying_type_t; + return static_cast(static_cast(l) | static_cast(r)); +} + +template +std::enable_if_t::value, E&> constexpr operator|=(E& l, E r) { + return l = l | r; +} + +template +std::enable_if_t::value, E> constexpr operator&(E l, E r) { + using U = std::underlying_type_t; + return static_cast(static_cast(l) & static_cast(r)); +} + +template +std::enable_if_t::value, E&> constexpr operator&=(E& l, E r) { + return l = l & r; +} + +template +std::enable_if_t::value, E> constexpr operator^(E l, E r) { + using U = std::underlying_type_t; + return static_cast(static_cast(l) ^ static_cast(r)); +} + +template +std::enable_if_t::value, E&> constexpr operator^=(E& l, E r) { + return l = l ^ r; +} + +template +std::enable_if_t::value, E> constexpr operator~(E e) { + return static_cast(~static_cast>(e)); +} + +#endif // SkEnumOperators_DEFINED -- cgit v1.2.3