10template <
class NodeType>
13template <
class ElementType,
class ContainerType>
23template <
class InElementType,
class ContainerType = InElementType>
102template <
class NodeType>
116 CurrentNode = CurrentNode->NodeType::Next;
130 CurrentNode = CurrentNode->NodeType::Prev;
173template <
class InElementType,
class ContainerType = InElementType>
202 return Sentinel.
Next == GetSentinel();
206 return Sentinel.
Next != GetSentinel();
218 if (
Other.IsFilled())
221 static_cast<NodeType*
>(
Other.Sentinel.Next)->Prev = GetSentinel();
235 if (
Other.IsFilled())
#define checkSlow(expr)
Definition AssertionMacros.h:332
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition IntrusiveDoubleLinkedList.h:104
typename NodeType::ElementType ElementType
Definition IntrusiveDoubleLinkedList.h:106
TIntrusiveDoubleLinkedListIterator & operator--()
Definition IntrusiveDoubleLinkedList.h:127
UE_FORCEINLINE_HINT bool operator==(const TIntrusiveDoubleLinkedListIterator &Other) const
Definition IntrusiveDoubleLinkedList.h:160
UE_FORCEINLINE_HINT TIntrusiveDoubleLinkedListIterator(ElementType *Node)
Definition IntrusiveDoubleLinkedList.h:108
ElementType * GetNode() const
Definition IntrusiveDoubleLinkedList.h:154
ElementType & operator->() const
Definition IntrusiveDoubleLinkedList.h:142
UE_FORCEINLINE_HINT bool operator!=(const TIntrusiveDoubleLinkedListIterator &Other) const
Definition IntrusiveDoubleLinkedList.h:161
TIntrusiveDoubleLinkedListIterator & operator++()
Definition IntrusiveDoubleLinkedList.h:113
TIntrusiveDoubleLinkedListIterator operator--(int)
Definition IntrusiveDoubleLinkedList.h:134
ElementType & operator*() const
Definition IntrusiveDoubleLinkedList.h:148
TIntrusiveDoubleLinkedListIterator operator++(int)
Definition IntrusiveDoubleLinkedList.h:120
Definition IntrusiveDoubleLinkedList.h:25
UE_FORCEINLINE_HINT bool IsInList() const
Definition IntrusiveDoubleLinkedList.h:40
InElementType ElementType
Definition IntrusiveDoubleLinkedList.h:28
UE_FORCEINLINE_HINT ElementType * GetNext() const
Definition IntrusiveDoubleLinkedList.h:44
void Remove()
Definition IntrusiveDoubleLinkedList.h:56
ElementType * Prev
Definition IntrusiveDoubleLinkedList.h:95
UE_FORCEINLINE_HINT ElementType * GetPrev() const
Definition IntrusiveDoubleLinkedList.h:48
void InsertAfter(ElementType *NewPrev)
Definition IntrusiveDoubleLinkedList.h:66
UE_FORCEINLINE_HINT void Reset()
Definition IntrusiveDoubleLinkedList.h:35
ElementType * Next
Definition IntrusiveDoubleLinkedList.h:94
TIntrusiveDoubleLinkedListNode()
Definition IntrusiveDoubleLinkedList.h:30
UE_FORCEINLINE_HINT ElementType * GetThisElement()
Definition IntrusiveDoubleLinkedList.h:91
UE_FORCEINLINE_HINT const ElementType * GetThisElement() const
Definition IntrusiveDoubleLinkedList.h:92
void InsertBefore(ElementType *NewNext)
Definition IntrusiveDoubleLinkedList.h:78
Definition IntrusiveDoubleLinkedList.h:175
UE_FORCEINLINE_HINT TIterator begin()
Definition IntrusiveDoubleLinkedList.h:297
UE_FORCEINLINE_HINT TIntrusiveDoubleLinkedList()
Definition IntrusiveDoubleLinkedList.h:181
TIntrusiveDoubleLinkedListNode< ElementType, ContainerType > NodeType
Definition IntrusiveDoubleLinkedList.h:179
InElementType ElementType
Definition IntrusiveDoubleLinkedList.h:178
UE_FORCEINLINE_HINT ElementType * GetHead()
Definition IntrusiveDoubleLinkedList.h:245
TIntrusiveDoubleLinkedListIterator< const NodeType > TConstIterator
Definition IntrusiveDoubleLinkedList.h:295
TIntrusiveDoubleLinkedListIterator< NodeType > TIterator
Definition IntrusiveDoubleLinkedList.h:294
UE_FORCEINLINE_HINT bool IsEmpty() const
Definition IntrusiveDoubleLinkedList.h:200
UE_FORCEINLINE_HINT TIntrusiveDoubleLinkedList & operator=(const TIntrusiveDoubleLinkedList &)=delete
static UE_FORCEINLINE_HINT void Remove(ElementType *Element)
Definition IntrusiveDoubleLinkedList.h:279
static UE_FORCEINLINE_HINT void InsertAfter(ElementType *InsertThis, ElementType *AfterThis)
Definition IntrusiveDoubleLinkedList.h:284
UE_FORCEINLINE_HINT void AddHead(ElementType *Element)
Definition IntrusiveDoubleLinkedList.h:211
ElementType * PopHead()
Definition IntrusiveDoubleLinkedList.h:255
void AddTail(TIntrusiveDoubleLinkedList &&Other)
Definition IntrusiveDoubleLinkedList.h:233
UE_FORCEINLINE_HINT TConstIterator begin() const
Definition IntrusiveDoubleLinkedList.h:298
UE_FORCEINLINE_HINT TConstIterator end() const
Definition IntrusiveDoubleLinkedList.h:300
UE_FORCEINLINE_HINT TIntrusiveDoubleLinkedList(const TIntrusiveDoubleLinkedList &)=delete
void AddHead(TIntrusiveDoubleLinkedList &&Other)
Definition IntrusiveDoubleLinkedList.h:216
UE_FORCEINLINE_HINT ElementType * GetTail()
Definition IntrusiveDoubleLinkedList.h:250
static UE_FORCEINLINE_HINT void InsertBefore(ElementType *InsertThis, ElementType *BeforeThis)
Definition IntrusiveDoubleLinkedList.h:289
UE_FORCEINLINE_HINT void Reset()
Definition IntrusiveDoubleLinkedList.h:193
ElementType * PopTail()
Definition IntrusiveDoubleLinkedList.h:267
UE_FORCEINLINE_HINT TIterator end()
Definition IntrusiveDoubleLinkedList.h:299
UE_FORCEINLINE_HINT bool IsFilled() const
Definition IntrusiveDoubleLinkedList.h:204
UE_FORCEINLINE_HINT void AddTail(ElementType *Element)
Definition IntrusiveDoubleLinkedList.h:228