From 8cfc14f4b17b1339008ec9a8f8b0d9a5897b656b Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Thu, 20 Apr 2023 15:21:47 +0200 Subject: [PATCH] Add `EnumAddFlags` for easy flags appending --- Source/Engine/Audio/OpenAL/AudioBackendOAL.cpp | 2 +- Source/Engine/Core/Types/BaseTypes.h | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/Engine/Audio/OpenAL/AudioBackendOAL.cpp b/Source/Engine/Audio/OpenAL/AudioBackendOAL.cpp index 68c3a8c60..592c58cf3 100644 --- a/Source/Engine/Audio/OpenAL/AudioBackendOAL.cpp +++ b/Source/Engine/Audio/OpenAL/AudioBackendOAL.cpp @@ -831,7 +831,7 @@ bool AudioBackendOAL::Base_Init() Audio::SetActiveDeviceIndex(activeDeviceIndex); #ifdef AL_SOFT_source_spatialize if (ALC::IsExtensionSupported("AL_SOFT_source_spatialize")) - ALC::Features = (FeatureFlags)((uint32)ALC::Features | (uint32)FeatureFlags::SpatialMultiChannel); + ALC::Features = EnumAddFlags(ALC::Features, FeatureFlags::SpatialMultiChannel); #endif // Log service info diff --git a/Source/Engine/Core/Types/BaseTypes.h b/Source/Engine/Core/Types/BaseTypes.h index b766d42ec..d4d7c212c 100644 --- a/Source/Engine/Core/Types/BaseTypes.h +++ b/Source/Engine/Core/Types/BaseTypes.h @@ -171,5 +171,12 @@ constexpr bool EnumHasNoneFlags(T value, T flags) return ((__underlying_type(T))value & (__underlying_type(T))flags) == 0; } +// Returns enum value with additional enum flags set +template +constexpr T EnumAddFlags(T value, T flags) +{ + return (T)((__underlying_type(T))value | (__underlying_type(T))flags); +} + // Returns byte offset from the object pointer in vtable to the begin of the given inherited type implementation #define VTABLE_OFFSET(type, baseType) (((intptr)static_cast((type*)1))-1)