From ec9e34c97054e2c81857e71fd0ff98ffce92bae7 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Sun, 25 Jul 2021 23:30:37 -0700 Subject: [PATCH] [kutil] Add bitfiled::has() for non-marked enums Added a simple helper function for testing non-marked enum bitfields. --- src/libraries/kutil/include/kutil/enum_bitfields.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/libraries/kutil/include/kutil/enum_bitfields.h b/src/libraries/kutil/include/kutil/enum_bitfields.h index d4ad2b7..6e24c2b 100644 --- a/src/libraries/kutil/include/kutil/enum_bitfields.h +++ b/src/libraries/kutil/include/kutil/enum_bitfields.h @@ -86,6 +86,16 @@ template constexpr typename std::enable_if::type operator && (E rhs, E lhs) { return (rhs & lhs) == lhs; } +/// Generic 'has' for non-marked bitfields +template +constexpr bool has(E set, F flags) +{ + return + (static_cast::type>(set) & + static_cast::type>(flags)) == + static_cast::type>(flags); +} + } // namespace bitfields } // namespace kutil