From 1dd4adc50c6aaaef8ff07481b1daa9b06c729c6c Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 30 Jan 2025 19:32:41 +0000 Subject: [PATCH] Add: EnumBitSet function to test if All or Any enum values are set. This allows multiple values to be tested in one operation. --- src/core/enum_type.hpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/core/enum_type.hpp b/src/core/enum_type.hpp index 9a3c8ae93c..d43498f2d6 100644 --- a/src/core/enum_type.hpp +++ b/src/core/enum_type.hpp @@ -183,6 +183,26 @@ public: return (this->data & (1U << to_underlying(value))) != 0; } + /** + * Test if all of the enum values are set. + * @param other BitSet of enum values to test. + * @returns true iff all of the enum values are set. + */ + inline constexpr bool All(const EnumBitSet &other) const + { + return (this->data & other.data) == other.data; + } + + /** + * Test if any of the enum values are set. + * @param other BitSet of enum values to test. + * @returns true iff any of the enum values are set. + */ + inline constexpr bool Any(const EnumBitSet &other) const + { + return (this->data & other.data) != 0; + } + inline constexpr EnumBitSet operator |(const EnumBitSet &other) const { return EnumBitSet{static_cast(this->data | other.data)};