Elin Decompiled Documentation EA 23.357 Nightly
Loading...
Searching...
No Matches
Algorithms.PriorityQueueB< T > Class Template Reference
Inheritance diagram for Algorithms.PriorityQueueB< T >:
Algorithms.IPriorityQueue< T >

Public Member Functions

 PriorityQueueB ()
 
 PriorityQueueB (IComparer< T > comparer)
 
 PriorityQueueB (IComparer< T > comparer, int capacity)
 
int Push (T item)
 
T Pop ()
 
void Update (int i)
 
T Peek ()
 
void Clear ()
 
void RemoveLocation (T item)
 
int Push (T item)
 
T Pop ()
 
T Peek ()
 
void Update (int i)
 

Protected Member Functions

void SwitchElements (int i, int j)
 
virtual int OnCompare (int i, int j)
 

Protected Attributes

List< T > InnerList = new List<T>()
 
IComparer< T > mComparer
 

Properties

int Count [get]
 
T this[int index] [get, set]
 

Detailed Description

Definition at line 6 of file PriorityQueueB.cs.

Constructor & Destructor Documentation

◆ PriorityQueueB() [1/3]

Definition at line 27 of file PriorityQueueB.cs.

28 {
29 mComparer = Comparer<T>.Default;
30 }

References Algorithms.PriorityQueueB< T >.mComparer.

◆ PriorityQueueB() [2/3]

Algorithms.PriorityQueueB< T >.PriorityQueueB ( IComparer< T >  comparer)
inline

Definition at line 32 of file PriorityQueueB.cs.

33 {
34 mComparer = comparer;
35 }

References Algorithms.PriorityQueueB< T >.mComparer.

◆ PriorityQueueB() [3/3]

Algorithms.PriorityQueueB< T >.PriorityQueueB ( IComparer< T >  comparer,
int  capacity 
)
inline

Definition at line 37 of file PriorityQueueB.cs.

38 {
39 mComparer = comparer;
40 InnerList.Capacity = capacity;
41 }

References Algorithms.PriorityQueueB< T >.mComparer.

Member Function Documentation

◆ Clear()

void Algorithms.PriorityQueueB< T >.Clear ( )
inline

Definition at line 148 of file PriorityQueueB.cs.

149 {
150 InnerList.Clear();
151 }

References Algorithms.PriorityQueueB< T >.InnerList.

Referenced by Algorithms.PathFinder._FindPath().

◆ OnCompare()

virtual int Algorithms.PriorityQueueB< T >.OnCompare ( int  i,
int  j 
)
inlineprotectedvirtual

◆ Peek()

T Algorithms.PriorityQueueB< T >.Peek ( )
inline

Implements Algorithms.IPriorityQueue< T >.

Definition at line 139 of file PriorityQueueB.cs.

140 {
141 if (InnerList.Count > 0)
142 {
143 return InnerList[0];
144 }
145 return default(T);
146 }

References Algorithms.PriorityQueueB< T >.InnerList.

◆ Pop()

T Algorithms.PriorityQueueB< T >.Pop ( )
inline

Implements Algorithms.IPriorityQueue< T >.

Definition at line 72 of file PriorityQueueB.cs.

73 {
74 T result = InnerList[0];
75 int num = 0;
76 InnerList[0] = InnerList[InnerList.Count - 1];
77 InnerList.RemoveAt(InnerList.Count - 1);
78 while (true)
79 {
80 int num2 = num;
81 int num3 = 2 * num + 1;
82 int num4 = 2 * num + 2;
83 if (InnerList.Count > num3 && OnCompare(num, num3) > 0)
84 {
85 num = num3;
86 }
87 if (InnerList.Count > num4 && OnCompare(num, num4) > 0)
88 {
89 num = num4;
90 }
91 if (num == num2)
92 {
93 break;
94 }
95 SwitchElements(num, num2);
96 }
97 return result;
98 }
void SwitchElements(int i, int j)
virtual int OnCompare(int i, int j)

References Algorithms.PriorityQueueB< T >.InnerList, Algorithms.PriorityQueueB< T >.OnCompare(), and Algorithms.PriorityQueueB< T >.SwitchElements().

Referenced by Algorithms.PathFinder._FindPath().

◆ Push()

int Algorithms.PriorityQueueB< T >.Push ( T  item)
inline

Implements Algorithms.IPriorityQueue< T >.

Definition at line 55 of file PriorityQueueB.cs.

56 {
57 int num = InnerList.Count;
58 InnerList.Add(item);
59 while (num != 0)
60 {
61 int num2 = (num - 1) / 2;
62 if (OnCompare(num, num2) >= 0)
63 {
64 break;
65 }
66 SwitchElements(num, num2);
67 num = num2;
68 }
69 return num;
70 }

References Algorithms.PriorityQueueB< T >.InnerList, item, Algorithms.PriorityQueueB< T >.OnCompare(), and Algorithms.PriorityQueueB< T >.SwitchElements().

Referenced by Algorithms.PathFinder._FindPath().

◆ RemoveLocation()

void Algorithms.PriorityQueueB< T >.RemoveLocation ( T  item)
inline

Definition at line 153 of file PriorityQueueB.cs.

154 {
155 int num = -1;
156 for (int i = 0; i < InnerList.Count; i++)
157 {
158 if (mComparer.Compare(InnerList[i], item) == 0)
159 {
160 num = i;
161 }
162 }
163 if (num != -1)
164 {
165 InnerList.RemoveAt(num);
166 }
167 }

References Algorithms.PriorityQueueB< T >.InnerList, item, and Algorithms.PriorityQueueB< T >.mComparer.

◆ SwitchElements()

void Algorithms.PriorityQueueB< T >.SwitchElements ( int  i,
int  j 
)
inlineprotected

◆ Update()

void Algorithms.PriorityQueueB< T >.Update ( int  i)
inline

Implements Algorithms.IPriorityQueue< T >.

Definition at line 100 of file PriorityQueueB.cs.

101 {
102 int num = i;
103 while (num != 0)
104 {
105 int num2 = (num - 1) / 2;
106 if (OnCompare(num, num2) >= 0)
107 {
108 break;
109 }
110 SwitchElements(num, num2);
111 num = num2;
112 }
113 if (num < i)
114 {
115 return;
116 }
117 while (true)
118 {
119 int num3 = num;
120 int num4 = 2 * num + 1;
121 int num2 = 2 * num + 2;
122 if (InnerList.Count > num4 && OnCompare(num, num4) > 0)
123 {
124 num = num4;
125 }
126 if (InnerList.Count > num2 && OnCompare(num, num2) > 0)
127 {
128 num = num2;
129 }
130 if (num != num3)
131 {
132 SwitchElements(num, num3);
133 continue;
134 }
135 break;
136 }
137 }

References Algorithms.PriorityQueueB< T >.InnerList, Algorithms.PriorityQueueB< T >.OnCompare(), and Algorithms.PriorityQueueB< T >.SwitchElements().

Member Data Documentation

◆ InnerList

◆ mComparer

Property Documentation

◆ Count

int Algorithms.PriorityQueueB< T >.Count
get

Definition at line 12 of file PriorityQueueB.cs.

Referenced by Algorithms.PathFinder._FindPath().

◆ this[int index]

T Algorithms.PriorityQueueB< T >.this[int index]
getset

Definition at line 14 of file PriorityQueueB.cs.

15 {
16 get
17 {
18 return InnerList[index];
19 }
20 set
21 {
22 InnerList[index] = value;
23 Update(index);
24 }
25 }
mods...$ $ Update
Definition: ModManager.cs:988

The documentation for this class was generated from the following file: