15#define UE_SLATE_WITH_INVALIDATIONWIDGETLIST_RANGECHECK UE_BUILD_DEBUG
16#define UE_SLATE_WITH_INVALIDATIONWIDGETLIST_CHILDORDERCHECK UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT
25 using IndexType = FSlateInvalidationWidgetIndex::IndexType;
46#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_RANGECHECK
47 check(OrderMin <= OrderMax);
87#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_DEBUGGING
130#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_CHILDORDERCHECK
132 virtual void ProxiesBuilt(
const FIndexRange& Range) {}
151 template<
typename Predicate>
154 int32 ArrayIndex = FirstArrayIndex;
159 for (
int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex <
ElementNum; ++ElementIndex)
167 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
172 template<
typename Predicate>
175 int32 ArrayIndex = FirstArrayIndex;
180 for (
int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex <
ElementNum; ++ElementIndex)
182 if (
const SWidget*
Widget = ElementList[ElementIndex].GetWidget())
188 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
193 template<
typename Predicate>
196 int32 ArrayIndex = FirstArrayIndex;
201 for (
int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex <
ElementNum; ++ElementIndex)
203 Pred(ElementList[ElementIndex]);
206 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
211 template<
typename Predicate>
214 int32 ArrayIndex = FirstArrayIndex;
219 for (
int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex <
ElementNum; ++ElementIndex)
221 Pred(ElementList[ElementIndex]);
224 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
229 template<
typename Predicate>
250 Pred(ElementList[ElementIndex]);
253 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
262 for (
int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex <
ElementNum; ++ElementIndex)
264 Pred(ElementList[ElementIndex]);
267 ArrayIndex = Data[ArrayIndex].NextArrayIndex;
274 for (
int32 ElementIndex = Data[ArrayIndex].StartIndex; ElementIndex <
ElementNum; ++ElementIndex)
276 Pred(ElementList[ElementIndex]);
290 int32 AttributeIndex;
294 bool bNeedsWidgetFixUp;
303 UE_DEPRECATED(5.4,
"PreChildRemove is deprecated. It was unused.")
305 UE_DEPRECATED(5.4, "
ReIndexed is deprecated. It was unused.")
307 UE_DEPRECATED(5.4, "
PostResort is deprecated. It was unused.")
309 UE_DEPRECATED(5.4, "
ProxiesBuilt is deprecated. It was unused.")
334 void AdvanceArrayIndex(
int32 ArrayIndex);
350 int32 AttributeIndex;
366 void Internal_Advance();
367 void SkipToNextExpend();
369 void AdvanceArray(
int32 ArrayIndex);
382#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_RANGECHECK
385 return Data[
Index.ArrayIndex].ElementList[
Index.ElementIndex];
391#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_RANGECHECK
394 return Data[
Index.ArrayIndex].ElementList[
Index.ElementIndex];
402 return Index.ElementIndex >= Data[
Index.ArrayIndex].StartIndex &&
Index.ElementIndex < Data[
Index.ArrayIndex].ElementList.
Num();
410 return FirstArrayIndex ==
INDEX_NONE || Data[FirstArrayIndex].ElementList.
Num() == 0;
443#if UE_SLATE_WITH_INVALIDATIONWIDGETLIST_DEBUGGING
498 return Widget.HasRegisteredSlateAttribute() &&
Widget.IsAttributesUpdatesEnabled();
521 const IndexType ArrayIndex = AddArrayNodeIfNeeded(
true);
522 const IndexType ElementIndex = (IndexType)Data[ArrayIndex].ElementList.Emplace(
Forward<ArgsType>(Args)...);
528 const IndexType ArrayIndex = InsertArrayNodeIfNeeded(
AfterArrayIndex,
true);
529 const IndexType ElementIndex = (IndexType)Data[ArrayIndex].ElementList.Emplace(
Forward<ArgsType>(Args)...);
536 FCutResult() =
default;
545 void RemoveDataNode(IndexType
Index);
546 void RebuildOrderIndex(IndexType StartFrom);
555 void Internal_RemoveRangeFromSameParent(
const FIndexRange Range);
561 FArrayNode() =
default;
565 IndexType StartIndex = 0;
566 ElementListType ElementList;
567 WidgetListType ElementIndexList_WidgetWithRegisteredSlateAttribute;
568 WidgetListType ElementIndexList_VolatileUpdateWidget;
570 void RemoveElementIndexBiggerOrEqualThan(IndexType ElementIndex);
571 void RemoveElementIndexBetweenOrEqualThan(IndexType StartElementIndex, IndexType EndElementIndex);
580 mutable int32 NumberOfLock = 0;
581 IProcessChildOrderInvalidationCallback* CurrentInvalidationCallback =
nullptr;
582 const FArguments WidgetListConfig;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
return Self
Definition CocoaThread.cpp:337
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition SharedPointer.h:153
ObjectType & Get() const
Definition SharedPointer.h:474
int32 Num() const
Definition SparseArray.h:470
bool IsValidIndex(int32 Index) const
Definition SparseArray.h:481
Definition SparseArray.h:524
Definition SharedPointer.h:1295
UpdateFlags
Definition DetourCrowd.h:208
U16 Index
Definition radfft.cpp:71
Definition SlateInvalidationRootHandle.h:10