11#ifndef UE_SLATE_WITH_INVALIDATIONWIDGETHEAP_DEBUGGING
12 #define UE_SLATE_WITH_INVALIDATIONWIDGETHEAP_DEBUGGING DO_CHECK
17#if UE_SLATE_WITH_INVALIDATIONWIDGETHEAP_DEBUGGING
33 return A.GetWidgetSortOrder() <
B.GetWidgetSortOrder();
50 VerifyContainsFlag(InvalidationWidget);
65 OwnerList[Result].bContainedByWidgetPreHeap =
false;
75 OwnerList[Result].bContainedByWidgetPreHeap =
false;
82 return Heap.
HeapTop().GetWidgetIndex();
95 int32 RemoveCount = 0;
98 if (Range.Include(Heap[
Index].GetWidgetSortOrder()))
101 OwnerList[WidgetIndex].bContainedByWidgetPreHeap =
false;
114 for (
const FElement& Element : Heap)
116 OwnerList[Element.GetWidgetIndex()].bContainedByWidgetPreHeap =
false;
135 return Element.GetWidgetIndex() == WidgetIndex;
152 template<
typename Predicate>
164#if UE_SLATE_WITH_INVALIDATIONWIDGETHEAP_DEBUGGING
165 if (UE::Slate::Private::GSlateInvalidationWidgetHeapVerifyWidgetContains)
186 return B.GetWidgetSortOrder() <
A.GetWidgetSortOrder();
206 VerifyContainsFlag(InvalidationWidget);
218 check(bIsHeap ==
false);
220 VerifyContainsFlag(InvalidationWidget);
245 check(bIsHeap ==
true);
248 OwnerList[Result.GetWidgetIndex()].bContainedByWidgetPostHeap =
false;
255 check(bIsHeap ==
false);
256 int32 RemoveCount = 0;
259 if (Range.Include(Heap[
Index].GetWidgetSortOrder()))
262 OwnerList[WidgetIndex].bContainedByWidgetPostHeap =
false;
276 for (
const FElement& Element : Heap)
278 OwnerList[Element.GetWidgetIndex()].bContainedByWidgetPostHeap =
false;
311 return Element.GetWidgetIndex() == WidgetIndex;
327 template<
typename Predicate>
364#if UE_SLATE_WITH_INVALIDATIONWIDGETHEAP_DEBUGGING
365 if (UE::Slate::Private::GSlateInvalidationWidgetHeapVerifyWidgetContains)
368 || WidgetCannotBeAdded == InvalidationWidget.
Index);
391 return A.GetWidgetSortOrder() <
B.GetWidgetSortOrder();
410 VerifyContainsFlag(InvalidationWidget);
422 check(bIsHeap ==
false);
424 VerifyContainsFlag(InvalidationWidget);
436 check(bIsHeap ==
true);
439 OwnerList[Result.GetWidgetIndex()].bContainedByWidgetPrepassList =
false;
446 check(bIsHeap ==
false);
447 int32 RemoveCount = 0;
450 if (Range.Include(Heap[
Index].GetWidgetSortOrder()))
453 OwnerList[WidgetIndex].bContainedByWidgetPrepassList =
false;
467 for (
const FElement& Element : Heap)
469 OwnerList[Element.GetWidgetIndex()].bContainedByWidgetPrepassList =
false;
502 return Element.GetWidgetIndex() == WidgetIndex;
518 template<
typename Predicate>
530#if UE_SLATE_WITH_INVALIDATIONWIDGETHEAP_DEBUGGING
531 if (UE::Slate::Private::GSlateInvalidationWidgetHeapVerifyWidgetContains)
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition SlateInvalidationWidgetHeap.h:179
FElement HeapPop()
Definition SlateInvalidationWidgetHeap.h:243
void HeapPushUnique(FSlateInvalidationWidgetList::InvalidationWidgetType &InvalidationWidget)
Definition SlateInvalidationWidgetHeap.h:202
bool IsValidHeap_Debug()
Definition SlateInvalidationWidgetHeap.h:316
void Heapify()
Definition SlateInvalidationWidgetHeap.h:287
void PushBackUnique(FSlateInvalidationWidgetList::InvalidationWidgetType &InvalidationWidget)
Definition SlateInvalidationWidgetHeap.h:216
void PushBackOrHeapUnique(FSlateInvalidationWidgetList::InvalidationWidgetType &InvalidationWidget)
Definition SlateInvalidationWidgetHeap.h:230
TArray< FElement, TInlineAllocator< NumberOfPreAllocatedElement > > FElementContainer
Definition SlateInvalidationWidgetHeap.h:192
FSlateInvalidationWidgetPostHeap(FSlateInvalidationWidgetList &InOwnerList)
Definition SlateInvalidationWidgetHeap.h:194
void Reset(bool bResetContained)
Definition SlateInvalidationWidgetHeap.h:272
FWidgetOrderGreater SortPredicate
Definition SlateInvalidationWidgetHeap.h:189
void ForEachIndexes(Predicate Pred)
Definition SlateInvalidationWidgetHeap.h:328
int32 RemoveRange(const FSlateInvalidationWidgetList::FIndexRange &Range)
Definition SlateInvalidationWidgetHeap.h:253
const FElementContainer & GetRaw() const
Definition SlateInvalidationWidgetHeap.h:322
static constexpr int32 NumberOfPreAllocatedElement
Definition SlateInvalidationWidgetHeap.h:191
bool Contains_Debug(const FSlateInvalidationWidgetIndex WidgetIndex) const
Definition SlateInvalidationWidgetHeap.h:307
bool IsHeap() const
Definition SlateInvalidationWidgetHeap.h:301
int32 Num() const
Definition SlateInvalidationWidgetHeap.h:295
void HeapRemoveAt(SizeType Index, const PREDICATE_CLASS &Predicate, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3876
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void HeapPopDiscard(const PREDICATE_CLASS &Predicate, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3808
UE_FORCEINLINE_HINT void RemoveAtSwap(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2185
SizeType HeapPush(ElementType &&InItem, const PREDICATE_CLASS &Predicate)
Definition Array.h:3671
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
UE_NODEBUG UE_FORCEINLINE_HINT void Heapify(const PREDICATE_CLASS &Predicate)
Definition Array.h:3640
UE_NODEBUG const ElementType & HeapTop() const UE_LIFETIMEBOUND
Definition Array.h:3848
void Empty(SizeType Slack=0)
Definition Array.h:2273
UE_NODEBUG UE_FORCEINLINE_HINT bool ContainsByPredicate(Predicate Pred) const
Definition Array.h:1538
UE_REWRITE bool IsHeap(const RangeType &Range)
Definition IsHeap.h:50
Definition DockingUtilsPrivate.h:8
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition SlateInvalidationWidgetHeap.h:338
FScopeWidgetCannotBeAdded(FSlateInvalidationWidgetPostHeap &InHeap, FSlateInvalidationWidgetList::InvalidationWidgetType &InInvalidationWidget)
Definition SlateInvalidationWidgetHeap.h:339
FSlateInvalidationWidgetIndex WidgetIndex
Definition SlateInvalidationWidgetHeap.h:358
FSlateInvalidationWidgetList::InvalidationWidgetType & InvalidationWidget
Definition SlateInvalidationWidgetHeap.h:357
FSlateInvalidationWidgetPostHeap & Heap
Definition SlateInvalidationWidgetHeap.h:356
~FScopeWidgetCannotBeAdded()
Definition SlateInvalidationWidgetHeap.h:349
Definition SlateInvalidationWidgetHeap.h:183
FORCEINLINE bool operator()(const FElement &A, const FElement &B) const
Definition SlateInvalidationWidgetHeap.h:184