UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
EnumUtils.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5// Defines all bitwise operators for enum classes so it can be (mostly) used as a regular flags enum
6#define ULANG_ENUM_BIT_FLAGS(Enum, ...) \
7 __VA_ARGS__ Enum& operator|=(Enum& Lhs, Enum Rhs) { return Lhs = (Enum)((__underlying_type(Enum))Lhs | (__underlying_type(Enum))Rhs); } \
8 __VA_ARGS__ Enum& operator&=(Enum& Lhs, Enum Rhs) { return Lhs = (Enum)((__underlying_type(Enum))Lhs & (__underlying_type(Enum))Rhs); } \
9 __VA_ARGS__ Enum& operator^=(Enum& Lhs, Enum Rhs) { return Lhs = (Enum)((__underlying_type(Enum))Lhs ^ (__underlying_type(Enum))Rhs); } \
10 __VA_ARGS__ Enum operator| (Enum Lhs, Enum Rhs) { return (Enum)((__underlying_type(Enum))Lhs | (__underlying_type(Enum))Rhs); } \
11 __VA_ARGS__ Enum operator& (Enum Lhs, Enum Rhs) { return (Enum)((__underlying_type(Enum))Lhs & (__underlying_type(Enum))Rhs); } \
12 __VA_ARGS__ Enum operator^ (Enum Lhs, Enum Rhs) { return (Enum)((__underlying_type(Enum))Lhs ^ (__underlying_type(Enum))Rhs); } \
13 __VA_ARGS__ bool operator! (Enum E) { return !(__underlying_type(Enum))E; } \
14 __VA_ARGS__ Enum operator~ (Enum E) { return (Enum)~(__underlying_type(Enum))E; }
15
16namespace uLang
17{
18
19template<typename Enum>
21{
22 return (((__underlying_type(Enum))Flags) & (__underlying_type(Enum))Contains) == ((__underlying_type(Enum))Contains);
23}
24
25template<typename Enum>
27{
28 return (((__underlying_type(Enum))Flags) & (__underlying_type(Enum))Contains) != 0;
29}
30
31}
Definition VVMEngineEnvironment.h:23
bool Enum_HasAllFlags(Enum Flags, Enum Contains)
Definition EnumUtils.h:20
bool Contains(TFirst First, TLast Last, T &&Arg)
Definition Contains.h:10
bool Enum_HasAnyFlags(Enum Flags, Enum Contains)
Definition EnumUtils.h:26