5#include "Algo/BinarySearch.h"
57 TInternalQueue* NextFree =
nullptr;
72 Next = Current ? Current->Next :
nullptr;
80 Next = Current ? Current->Next :
nullptr;
88 check(Current->Priority == InternalQueue->Priority);
96 check(Current->Priority == InternalQueue->Priority);
108 check(InternalQueue);
109 check(Current->Priority == InternalQueue->Priority);
110 if (InternalQueue->Remove(Current))
112 Outer.RemoveQueueByPriority(InternalQueue->Priority);
114 Current =
reinterpret_cast<T*
>(-1);
121 InternalQueue = Outer.FindQueueByPriority(
InPriority);
124 Current = InternalQueue->Head;
125 Next = Current->Next;
129 Current = Next =
nullptr;
134 TInternalQueue* InternalQueue;
141 return InternalQueues.
IsEmpty();
150 return InternalQueues.
Last()->Priority;
158 TInternalQueue& Queue = FindOrAddQueueByPriority(
Priority);
162 Queue.Head = Queue.Tail = Item;
166 Item->Prev = Queue.Tail;
167 Queue.Tail->Next = Item;
178 int QueueIndex = InternalQueues.
Num() - 1;
187 T*
Next = Item->Next;
190 Next->Prev =
nullptr;
197 RemoveQueueAtIndex(QueueIndex);
199 Item->Prev = Item->Next =
nullptr;
211 T* Prev = Item->Prev;
212 T*
Next = Item->Next;
215 Item->Prev =
nullptr;
216 Item->Next =
nullptr;
222 TInternalQueue* InternalQueue = FindQueueByPriority(Item->Priority, QueueIndex);
223 check(InternalQueue);
224 if (InternalQueue->Remove(Item))
226 RemoveQueueAtIndex(QueueIndex);
239 TInternalQueue* Queue = FindQueueByPriority(
Priority, QueueIndex);
257 Queue->Head = Queue->Tail =
nullptr;
258 RemoveQueueAtIndex(QueueIndex);
267 return InternalQueues[
Index];
278 return InternalQueues[
Index];
290 return *InternalQueues[
Index];
296 if (TInternalQueue* InternalQueue = FindQueueByPriority(
Priority, QueueIndex))
298 RemoveQueueAtIndex(QueueIndex);
304 FreeInternalQueue(InternalQueues[
Index]);
310 if (TInternalQueue*
FromPool = FirstFreeQueue)
312 FirstFreeQueue =
FromPool->NextFree;
317 return new TInternalQueue(
Priority);
320 void FreeInternalQueue(TInternalQueue* InternalQueue)
322 check(!InternalQueue->Head);
323 check(!InternalQueue->Tail);
324 InternalQueue->NextFree = FirstFreeQueue;
325 FirstFreeQueue = InternalQueue;
329 TInternalQueue* FirstFreeQueue =
nullptr;
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
#define MIN_int32
Definition NumericLimits.h:16
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Last(SizeType IndexFromTheEnd=0) UE_LIFETIMEBOUND
Definition Array.h:1263
void RemoveAt(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2083
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
UE_NODEBUG UE_FORCEINLINE_HINT bool IsValidIndex(SizeType Index) const
Definition Array.h:1122
SizeType Insert(std::initializer_list< ElementType > InitList, const SizeType InIndex)
Definition Array.h:1875
Definition IoPriorityQueue.h:65
TIterator operator++(int)
Definition IoPriorityQueue.h:76
T & operator*() const
Definition IoPriorityQueue.h:84
TIterator & operator++()
Definition IoPriorityQueue.h:69
T * operator->() const
Definition IoPriorityQueue.h:92
friend TIoPriorityQueue
Definition IoPriorityQueue.h:67
void RemoveCurrent()
Definition IoPriorityQueue.h:105
Definition IoPriorityQueue.h:11
int32 GetMaxPriority() const
Definition IoPriorityQueue.h:144
void MergeInto(TIoPriorityQueue< T > &Other, int32 Priority)
Definition IoPriorityQueue.h:236
void Remove(T *Item)
Definition IoPriorityQueue.h:209
T * Pop()
Definition IoPriorityQueue.h:172
void Reprioritize(T *Item, int32 NewPriority)
Definition IoPriorityQueue.h:230
TIterator CreateIterator(int32 Priority)
Definition IoPriorityQueue.h:204
void Push(T *Item, int32 Priority)
Definition IoPriorityQueue.h:153
bool IsEmpty() const
Definition IoPriorityQueue.h:139
UE_REWRITE auto LowerBoundBy(const RangeType &Range, const ValueType &Value, ProjectionType Projection, SortPredicateType SortPredicate) -> decltype(GetNum(Range))
Definition BinarySearch.h:113
U16 Index
Definition radfft.cpp:71