10#ifndef UE_WITH_SLATE_CHILDREN_DEBUGGING
11#define UE_WITH_SLATE_CHILDREN_DEBUGGING !(UE_BUILD_SHIPPING)
46 void*
operator new (
size_t) =
delete;
47 void*
operator new[](
size_t) =
delete;
64 template<
typename Predicate>
67#if UE_WITH_SLATE_CHILDREN_DEBUGGING
81 template<
typename Predicate>
84#if UE_WITH_SLATE_CHILDREN_DEBUGGING
136 , WidgetReference(WidgetCopy.GetValue().Get())
143 : WidgetCopy(
Other.WidgetCopy)
144 , WidgetReference(WidgetCopy.IsSet() ? WidgetCopy.GetValue().Get() :
Other.WidgetReference)
148 , WidgetReference(WidgetCopy.IsSet() ? WidgetCopy.GetValue().Get() :
Other.WidgetReference)
154 return WidgetReference;
162 const SWidget& WidgetReference;
167 , WidgetReference(WidgetCopy.GetValue().Get())
174 : WidgetCopy(
Other.WidgetCopy)
175 , WidgetReference(WidgetCopy.IsSet() ? WidgetCopy.GetValue().Get() :
Other.WidgetReference)
179 , WidgetReference(WidgetCopy.IsSet() ? WidgetCopy.GetValue().Get() :
Other.WidgetReference)
185 return WidgetReference;
195#if UE_WITH_SLATE_CHILDREN_DEBUGGING
199 Debug_DestroyedTag = 0xA3;
201 TEXT(
"Destroying widget while iterating children! Owner: %s [%s]"),
209 UE_CLOG(Debug_DestroyedTag != 0xDC,
LogSlate,
Fatal,
TEXT(
"The FChildren is destroyed. You probably have 1 widget owned by 2 different FChildren."));
226#if UE_WITH_SLATE_CHILDREN_DEBUGGING
227 mutable bool Debug_bIsIteratingChildren =
false;
228 mutable uint8 Debug_DestroyedTag = 0xDC;
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_CLOG(Condition, CategoryName, Verbosity, Format,...)
Definition LogMacros.h:298
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition ChildrenBase.h:27
virtual TSharedRef< const SWidget > GetChildAt(int32 Index) const =0
FChildren(SWidget *InOwner)
Definition ChildrenBase.h:29
FChildren(SWidget *InOwner, FName InName)
Definition ChildrenBase.h:35
FName GetName() const
Definition ChildrenBase.h:113
ECopyConstruct
Definition ChildrenBase.h:124
@ CopyConstruct
Definition ChildrenBase.h:124
void ForEachWidget(Predicate &&Pred)
Definition ChildrenBase.h:65
virtual const FSlotBase & GetSlotAt(int32 ChildIndex) const =0
SWidget & GetOwner() const
Definition ChildrenBase.h:57
virtual FConstWidgetRef GetChildRefAt(int32 Index) const =0
virtual bool SupportSlotWithSlateAttribute() const
Definition ChildrenBase.h:107
virtual TSharedRef< SWidget > GetChildAt(int32 Index)=0
void ForEachWidget(Predicate &&Pred) const
Definition ChildrenBase.h:82
ERefConstruct
Definition ChildrenBase.h:125
@ ReferenceConstruct
Definition ChildrenBase.h:125
void Debug_TestDestroyTag() const
Definition ChildrenBase.h:206
FChildren(std::nullptr_t)=delete
virtual ~FChildren()
Definition ChildrenBase.h:196
virtual int32 NumSlot() const
Definition ChildrenBase.h:98
virtual FWidgetRef GetChildRefAt(int32 Index)=0
virtual int32 Num() const =0
Definition NameTypes.h:617
CORE_API FString ToString() const
Definition UnrealNames.cpp:3537
FORCEINLINE bool IsNone() const
Definition NameTypes.h:827
Definition Children.h:1028
Definition SharedPointer.h:153
U16 Index
Definition radfft.cpp:71
Definition UnrealTemplate.h:341
Definition Optional.h:131