6#include "Misc/AssertionMacros.h"
8template <
class ContainerType>
17
18
51template <
class ContainerType,
class ElementType>
76template <
class ContainerType,
class ElementType>
103
104
105template <
class ContainerType,
class ElementType,
template<
class,
class>
class IteratorType>
110
111
112 typedef IteratorType<ContainerType, ElementType>
TIterator;
117
118
126
127
128
129
147
148
149
150
167
168
169
170
186
187
188
189
190
217
218
219
220
221
222
223
238
239
240
241
277
278
279
280
281template <
class ElementType>
294
295
296
297
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345template <
class ElementType>
359template <
class NodeType,
class ElementType>
430
431
432
433
434template <
class ElementType>
485
486
506
507
508
509
510
511
541
542
543
544
545
546
575
576
577
578
579
580
581
582
611
612
613
614
615
623
624
625
626
627
696
697
698
699
700
707
708
709
710
711
718
719
720
721
722
726 while (
Node !=
nullptr )
745
746
747
748
749
756
757
758
759
768
769
770
771
772
794
795
800template <
class ElementType>
class TList
809 TList(
const ElementType &InElement,
TList<ElementType>* InNext =
nullptr)
TDoubleLinkedListNode * GetPrevNode()
TDoubleLinkedListNode * PrevNode
TDoubleLinkedListNode * GetNextNode()
TDoubleLinkedListNode(const ElementType &InValue)
const TDoubleLinkedListNode * GetPrevNode() const
TDoubleLinkedListNode * NextNode
const ElementType & GetValue() const
const TDoubleLinkedListNode * GetNextNode() const
friend TConstIterator begin(const TDoubleLinkedList &List)
void RemoveNode(const ElementType &InElement)
bool Contains(const ElementType &InElement)
friend TConstIterator end(const TDoubleLinkedList &List)
TDoubleLinkedListNode * GetHead() const
TDoubleLinkedListNode * HeadNode
TDoubleLinkedListNode * GetTail() const
bool AddTail(TDoubleLinkedListNode *NewNode)
TDoubleLinkedListNode * TailNode
TDoubleLinkedListIterator< TDoubleLinkedListNode, ElementType > TIterator
bool AddTail(const ElementType &InElement)
friend TIterator begin(TDoubleLinkedList &List)
bool InsertNode(const ElementType &InElement, TDoubleLinkedListNode *NodeToInsertBefore=nullptr)
void RemoveNode(TDoubleLinkedListNode *NodeToRemove, bool bDeleteNode=true)
virtual ~TDoubleLinkedList()
bool InsertNode(TDoubleLinkedListNode *NewNode, TDoubleLinkedListNode *NodeToInsertBefore=nullptr)
friend TIterator end(TDoubleLinkedList &List)
bool AddHead(TDoubleLinkedListNode *NewNode)
bool AddHead(const ElementType &InElement)
virtual void SetListSize(int32 NewListSize)
TDoubleLinkedListIterator< TDoubleLinkedListNode, const ElementType > TConstIterator
TDoubleLinkedList & operator=(const TDoubleLinkedList &)
TDoubleLinkedListNode * FindNode(const ElementType &InElement)
TDoubleLinkedList(const TDoubleLinkedList &)
TDoubleLinkedListIterator(NodeType *StartingNode)
TDoubleLinkedListIterator & operator++()
FORCEINLINE operator bool() const
ElementType & operator*() const
TDoubleLinkedListIterator operator--(int)
NodeType * GetNode() const
TDoubleLinkedListIterator & operator--()
TDoubleLinkedListIterator operator++(int)
bool operator==(const TDoubleLinkedListIterator &Rhs) const
bool operator!=(const TDoubleLinkedListIterator &Rhs) const
ElementType & operator->() const
TLinkedListBase< ElementType, ElementType, TIntrusiveLinkedListIterator > Super
TIntrusiveLinkedListIterator(ElementType *FirstLink)
TLinkedListIteratorBase< ElementType > Super
FORCEINLINE ElementType & operator->() const
FORCEINLINE ElementType & operator*() const
FORCEINLINE ContainerType * GetNextLink() const
FORCEINLINE friend TConstIterator end(const ContainerType &List)
FORCEINLINE void LinkBefore(ContainerType *Before)
IteratorType< ContainerType, const ElementType > TConstIterator
FORCEINLINE void LinkAfter(ContainerType *After)
FORCEINLINE ContainerType * Next()
FORCEINLINE ContainerType ** GetPrevLink() const
FORCEINLINE friend TIterator end(ContainerType &List)
FORCEINLINE void LinkHead(ContainerType *&Head)
FORCEINLINE friend TIterator begin(ContainerType &List)
ContainerType ** PrevLink
FORCEINLINE void LinkReplace(ContainerType *Replace)
FORCEINLINE friend TConstIterator begin(const ContainerType &List)
FORCEINLINE void Unlink()
IteratorType< ContainerType, ElementType > TIterator
FORCEINLINE bool IsLinked()
TLinkedListBase< TLinkedList< ElementType >, ElementType, TLinkedListIterator > Super
FORCEINLINE ElementType & operator*()
TLinkedList(const ElementType &InElement)
FORCEINLINE const ElementType * operator->() const
FORCEINLINE const ElementType & operator*() const
FORCEINLINE ElementType * operator->()
FORCEINLINE TLinkedListIteratorBase operator++(int)
FORCEINLINE operator bool() const
ContainerType * CurrentLink
FORCEINLINE bool operator==(const TLinkedListIteratorBase &Rhs) const
FORCEINLINE TLinkedListIteratorBase & operator++()
FORCEINLINE bool operator!=(const TLinkedListIteratorBase &Rhs) const
TLinkedListIteratorBase(ContainerType *FirstLink)
TLinkedListIteratorBase< ContainerType > Super
TLinkedListIterator(ContainerType *FirstLink)
FORCEINLINE ElementType & operator*() const
FORCEINLINE ElementType & operator->() const
TList(const ElementType &InElement, TList< ElementType > *InNext=nullptr)
TList< ElementType > * Next