13#define VERSE_ENUM_EFFECTS(v) \
25#define VISIT_EFFECT(Name) Name,
30#define VISIT(Name) 1 +
63#define VISIT_EFFECT(Name) Result._##Name = !Operand._##Name;
71#define VISIT_EFFECT(Name) _##Name = _##Name || Rhs._##Name;
79#define VISIT_EFFECT(Name) Result._##Name = Lhs._##Name || Rhs._##Name;
87#define VISIT_EFFECT(Name) _##Name = _##Name && Rhs._##Name;
95#define VISIT_EFFECT(Name) Result._##Name = Lhs._##Name && Rhs._##Name;
103#define VISIT_EFFECT(Name) _##Name = (!_##Name && Rhs._##Name) || (_##Name && !Rhs._##Name);
111#define VISIT_EFFECT(Name) Result._##Name = (!Lhs._##Name && Rhs._##Name) || (Lhs._##Name && !Rhs._##Name);
125#define VISIT_EFFECT(Name) Result = Result || (_##Name && Rhs._##Name);
134#define VISIT_EFFECT(Name) Result = Result && (!Rhs._##Name || _##Name);
143#define VISIT_EFFECT(Name) Result = Result && (Lhs._##Name == Rhs._##Name);
152#define VISIT_EFFECT(Name) Result = Result || (Lhs._##Name != Rhs._##Name);
169#define VISIT_EFFECT(Name) + (_##Name ? 1 : 0)
176#define VISIT_EFFECT(Name) bool _##Name : 1;
184#define VISIT_EFFECT(Name) case EEffect::Name: return _##Name;
195#define VISIT_EFFECT(Name) case EEffect::Name: _##Name = Enable; break;
214#define VISIT(Name) if (Effects[EEffect::Name]) { Hash |= (1 << I); } ++I;
224 constexpr SEffectSet Suspends = EEffect::suspends;
225 constexpr SEffectSet Computes = EEffect::diverges;
226 constexpr SEffectSet NoRollback = EEffect::no_rollback;
227 constexpr SEffectSet Decides = EEffect::decides;
228 constexpr SEffectSet Dictates = EEffect::dictates;
231 constexpr SEffectSet Reads = EEffect::reads | EEffect::dictates;
232 constexpr SEffectSet Writes = EEffect::writes | EEffect::dictates;
233 constexpr SEffectSet Allocates = EEffect::allocates | EEffect::dictates;
234 constexpr SEffectSet Transacts = EEffect::diverges | EEffect::reads | EEffect::writes | EEffect::allocates | EEffect::dictates;
235 constexpr SEffectSet VariesDeprecated = Transacts;
238 constexpr SEffectSet ClassAndInterfaceDefault = Transacts;
239 constexpr SEffectSet FunctionDefault = Transacts | EEffect::no_rollback;
240 constexpr SEffectSet ModuleDefault = EEffect::diverges;
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define VERSE_ENUM_EFFECTS(v)
Definition Effects.h:13
#define VISIT(Name)
Definition Effects.h:30
#define ULANG_FORCEINLINE
Definition Common.h:188
#define ULANG_UNREACHABLE()
Definition Common.h:243
Definition VVMEngineEnvironment.h:23
constexpr int32_t EEffectNum
Definition Effects.h:31
SEffectInfo GetEffectInfo(EEffect Effect)
Definition Effects.cpp:23
constexpr SEffectSet operator|(const EEffect Lhs, const EEffect Rhs)
Definition Effects.h:203
EEffect
Definition Effects.h:24
ULANG_FORCEINLINE uint32_t GetTypeHash(const TArray< T > Array)
Definition Array.h:2132
TRangeView< SEffectInfo *, SEffectInfo * > AllEffectInfos()
Definition Effects.cpp:18
@ false
Definition radaudio_common.h:23
EEffect _Effect
Definition Effects.h:37
const char * _AttributeName
Definition Effects.h:36
constexpr SEffectSet(EEffect SingleEffect)
Definition Effects.h:53
SEffectSet & operator&=(SEffectSet Rhs)
Definition Effects.h:85
constexpr SEffectSet()
Definition Effects.h:47
bool operator[](EEffect Effect) const
Definition Effects.h:117
friend constexpr bool operator==(const SEffectSet Lhs, const SEffectSet Rhs)
Definition Effects.h:140
friend constexpr SEffectSet operator^(const SEffectSet Lhs, const SEffectSet Rhs)
Definition Effects.h:108
SEffectSet With(EEffect SingleEffect, bool bEnable=true) const
Definition Effects.h:158
int32_t Num() const
Definition Effects.h:166
friend constexpr SEffectSet operator|(const SEffectSet Lhs, const SEffectSet Rhs)
Definition Effects.h:76
friend constexpr SEffectSet operator~(const SEffectSet Operand)
Definition Effects.h:60
constexpr bool HasAll(SEffectSet Rhs) const
Definition Effects.h:131
SEffectSet & operator^=(SEffectSet Rhs)
Definition Effects.h:101
friend constexpr SEffectSet operator&(const SEffectSet Lhs, const SEffectSet Rhs)
Definition Effects.h:92
constexpr bool HasAny(SEffectSet Rhs) const
Definition Effects.h:122
friend constexpr bool operator!=(const SEffectSet Lhs, const SEffectSet Rhs)
Definition Effects.h:149
SEffectSet & operator|=(SEffectSet Rhs)
Definition Effects.h:69